aboutsummaryrefslogtreecommitdiffstats
path: root/sub/musl
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2017-05-22 21:56:04 +0000
committerLaurent Bercot <ska-skaware@skarnet.org>2017-05-22 21:56:04 +0000
commit82d0f92ab8b84466ae20ab919c1f9c3577b5cecb (patch)
tree776015ae6c6a386125b2d39e13b62f91b99548f8 /sub/musl
downloadlh-bootstrap-82d0f92ab8b84466ae20ab919c1f9c3577b5cecb.tar.gz
Initial commit
Diffstat (limited to 'sub/musl')
-rw-r--r--sub/musl/Makefile49
-rw-r--r--sub/musl/libssp_nonshared.c6
-rwxr-xr-xsub/musl/muslgccmake18
-rwxr-xr-xsub/musl/muslgccmake-buildhost10
4 files changed, 83 insertions, 0 deletions
diff --git a/sub/musl/Makefile b/sub/musl/Makefile
new file mode 100644
index 0000000..013c9f6
--- /dev/null
+++ b/sub/musl/Makefile
@@ -0,0 +1,49 @@
+MUSL_BASE ?= /opt/musl-git
+
+# Version from 2017-05-22
+MUSL_VERSION := f9f686b7721e2cc35e20fa5c6df6da2dc4ac3f50
+
+# Build-build
+
+$(OUTPUT)/sources/.lh_musl_cloned: | $(OUTPUT)/tmp/.lh_prepared
+ if ! test -d $(OUTPUT)/sources/musl ; then cd $(OUTPUT)/sources && git clone git://git.musl-libc.org/musl musl && cd musl && git checkout $(MUSL_VERSION) ; fi
+ exec setuidgid $(NORMALUSER) touch $@
+
+$(OUTPUT)/build-build$(MUSL_BASE)/.lh_copied: $(OUTPUT)/sources/.lh_musl_cloned
+ exec setuidgid $(NORMALUSER) rm -rf $(OUTPUT)/build-build$(MUSL_BASE)/src
+ exec setuidgid $(NORMALUSER) mkdir -p $(OUTPUT)/build-build$(MUSL_BASE)
+ exec setuidgid $(NORMALUSER) cp -a $(OUTPUT)/sources/musl $(OUTPUT)/build-build$(MUSL_BASE)/src
+ exec setuidgid $(NORMALUSER) touch $@
+
+$(OUTPUT)/build-build$(MUSL_BASE)/.lh_configured: $(OUTPUT)/build-build$(MUSL_BASE)/.lh_copied
+ cd $(OUTPUT)/build-build$(MUSL_BASE)/src && setuidgid $(NORMALUSER) ./configure --prefix=$(OUTPUT)/build-build$(MUSL_BASE) --enable-warnings --enable-gcc-wrapper CC=$(BUILD_BUILD_CC)
+ exec setuidgid $(NORMALUSER) touch $@
+
+$(OUTPUT)/build-build$(MUSL_BASE)/.lh_built: $(OUTPUT)/build-build$(MUSL_BASE)/.lh_configured
+ cd $(OUTPUT)/build-build$(MUSL_BASE)/src && setuidgid $(NORMALUSER) $(MAKE)
+ exec setuidgid $(NORMALUSER) touch $@
+
+$(OUTPUT)/build-build$(MUSL_BASE)/.lh_installed: $(OUTPUT)/build-build$(MUSL_BASE)/.lh_built $(OUTPUT)/build-build/.lh_kernel_headers_installed
+ cd $(OUTPUT)/build-build$(MUSL_BASE)/src && setuidgid $(NORMALUSER) $(MAKE) install syslibdir=$(OUTPUT)/build-build$(MUSL_BASE)
+ exec setuidgid $(NORMALUSER) makenamelink $(OUTPUT)/build-build$(dir $(MUSL_BASE)) musl $(notdir $(MUSL_BASE)) $(OUTPUT)/tmp
+ exec setuidgid $(NORMALUSER) makelinks $(OUTPUT)/build-build $(MUSL_BASE)/include /opt/linux/include
+ exec setuidgid $(NORMALUSER) sub/musl/muslgccmake $(OUTPUT)/build-build$(MUSL_BASE)/bin/musl-gcc $(OUTPUT)/build-build$(MUSL_BASE)/lib/musl-gcc.specs $(BUILD_BUILD_CC) true
+ exec setuidgid $(NORMALUSER) touch $@
+
+$(OUTPUT)/build-build/tmp/libssp_nonshared.o: sub/musl/libssp_nonshared.c | $(OUTPUT)/tmp/.lh_prepared
+ exec setuidgid $(NORMALUSER) $(BUILD_BUILD_CC) -O2 -o $@ -c $^
+
+$(OUTPUT)/build-build$(MUSL_BASE)/lib/libssp_nonshared.a: $(OUTPUT)/build-build$(MUSL_BASE)/.lh_installed $(OUTPUT)/build-build/tmp/libssp_nonshared.o
+ exec setuidgid $(NORMALUSER) ar cr $@ $(OUTPUT)/build-build/tmp/libssp_nonshared.o
+
+$(OUTPUT)/build-build/.lh_gcc: $(OUTPUT)/build-build$(MUSL_BASE)/.lh_installed $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build$(MUSL_BASE)/lib/libssp_nonshared.a
+ exec setuidgid $(NORMALUSER) makelinks $(OUTPUT)/build-build /bin $(dir $(MUSL_BASE))musl/bin
+ exec setuidgid $(NORMALUSER) ln -sf musl-gcc $(OUTPUT)/build-build/bin/gcc
+ exec setuidgid $(NORMALUSER) touch $@
+
+
+# Build-host
+
+$(OUTPUT)/build-host/bin/muslgcc: $(OUTPUT)/build-host/kernel/.lh_headers_installed | $(OUTPUT)/tmp/.lh_layout_installed $(OUTPUT)/build-build/.lh_skarnet_installed
+ exec setuidgid $(NORMALUSER) sub/musl/muslgccmake-buildhost $(OUTPUT) $(TRIPLE) $(BUILD_HOST_CC)
+ exec setuidgid $(NORMALUSER) s6-ln -sf $(TRIPLE)-muslgcc $@
diff --git a/sub/musl/libssp_nonshared.c b/sub/musl/libssp_nonshared.c
new file mode 100644
index 0000000..3ad0599
--- /dev/null
+++ b/sub/musl/libssp_nonshared.c
@@ -0,0 +1,6 @@
+extern void __stack_chk_fail (void) ;
+
+void __attribute__((visibility ("hidden"))) __stack_chk_fail_local (void)
+{
+ __stack_chk_fail() ;
+}
diff --git a/sub/musl/muslgccmake b/sub/musl/muslgccmake
new file mode 100755
index 0000000..6618bb9
--- /dev/null
+++ b/sub/musl/muslgccmake
@@ -0,0 +1,18 @@
+#!/bin/sh -e
+
+file="$1"
+muslspecs="$2"
+realgcc="$3"
+allstatic="$4"
+
+if $allstatic ; then
+ dostatic=-static
+else
+ dostatic=
+fi
+
+cat > "$file" <<EOF
+#!/bin/sh
+exec "\${REALGCC:-$realgcc}" $dostatic -specs "$muslspecs" "\$@"
+EOF
+exec chmod 0755 "$file"
diff --git a/sub/musl/muslgccmake-buildhost b/sub/musl/muslgccmake-buildhost
new file mode 100755
index 0000000..703efbd
--- /dev/null
+++ b/sub/musl/muslgccmake-buildhost
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+output="$1"
+triple="$2"
+xgcc="$3"
+
+file=$output/build-host/bin/${triple}-muslgcc
+echo '#!/bin/sh' > $file
+echo "exec $xgcc -isystem $output/rootfs/opt/linux-kernel-headers/include -s \"\$@\"" >> $file
+s6-chmod 0755 $file