diff options
-rw-r--r-- | 386/bin/.keep | 0 | ||||
-rw-r--r-- | 386/include/.keep | 0 | ||||
-rw-r--r-- | 386/lib/.keep | 0 | ||||
-rw-r--r-- | amd64/bin/.keep | 0 | ||||
-rw-r--r-- | amd64/include/.keep | 0 | ||||
-rw-r--r-- | amd64/lib/.keep | 0 | ||||
-rw-r--r-- | arm/bin/.keep | 0 | ||||
-rw-r--r-- | arm/include/.keep | 0 | ||||
-rw-r--r-- | arm/lib/.keep | 0 | ||||
-rw-r--r-- | arm64/bin/.keep | 0 | ||||
-rw-r--r-- | arm64/include/.keep | 0 | ||||
-rw-r--r-- | arm64/lib/.keep | 0 | ||||
-rw-r--r-- | bin/build-libc.sh | 111 | ||||
-rw-r--r-- | bin/p9c.sh | 1 | ||||
-rw-r--r-- | mips/bin/.keep | 0 | ||||
-rw-r--r-- | mips/include/.keep | 0 | ||||
-rw-r--r-- | mips/lib/.keep | 0 | ||||
-rw-r--r-- | mkfile | 6 | ||||
-rw-r--r-- | mkfile.proto | 2 | ||||
-rw-r--r-- | mklib | 11 | ||||
-rw-r--r-- | mkmany | 16 | ||||
-rw-r--r-- | mkone | 14 | ||||
-rw-r--r-- | mksyslib | 38 | ||||
-rw-r--r-- | power/bin/.keep | 0 | ||||
-rw-r--r-- | power/include/.keep | 0 | ||||
-rw-r--r-- | power/lib/.keep | 0 | ||||
-rw-r--r-- | power64/bin/.keep | 0 | ||||
-rw-r--r-- | power64/include/.keep | 0 | ||||
-rw-r--r-- | power64/lib/.keep | 0 | ||||
-rw-r--r-- | sparc/bin/.keep | 0 | ||||
-rw-r--r-- | sparc/include/.keep | 0 | ||||
-rw-r--r-- | sparc/lib/.keep | 0 | ||||
-rw-r--r-- | spim/bin/.keep | 0 | ||||
-rw-r--r-- | spim/include/.keep | 0 | ||||
-rw-r--r-- | spim/lib/.keep | 0 |
35 files changed, 120 insertions, 79 deletions
diff --git a/386/bin/.keep b/386/bin/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/386/bin/.keep diff --git a/386/include/.keep b/386/include/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/386/include/.keep diff --git a/386/lib/.keep b/386/lib/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/386/lib/.keep diff --git a/amd64/bin/.keep b/amd64/bin/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/amd64/bin/.keep diff --git a/amd64/include/.keep b/amd64/include/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/amd64/include/.keep diff --git a/amd64/lib/.keep b/amd64/lib/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/amd64/lib/.keep diff --git a/arm/bin/.keep b/arm/bin/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/arm/bin/.keep diff --git a/arm/include/.keep b/arm/include/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/arm/include/.keep diff --git a/arm/lib/.keep b/arm/lib/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/arm/lib/.keep diff --git a/arm64/bin/.keep b/arm64/bin/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/arm64/bin/.keep diff --git a/arm64/include/.keep b/arm64/include/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/arm64/include/.keep diff --git a/arm64/lib/.keep b/arm64/lib/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/arm64/lib/.keep diff --git a/bin/build-libc.sh b/bin/build-libc.sh index dd4cedf..9c9ae36 100644 --- a/bin/build-libc.sh +++ b/bin/build-libc.sh @@ -1,62 +1,55 @@ #!/bin/bash -case "$(uname -s)" in -Linux) - DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) - SRCDIR="$DIR/../src" - OBJDIR="$DIR/../$objtype" - - COMPILERRTREV=$(cd "$SRCDIR/compiler-rt" && git rev-parse --verify HEAD) - MUSLREV=$(cd "$SRCDIR/musl" && git rev-parse --verify HEAD) - if [[ -f "$OBJDIR/compiler-rt-revision" && - -f "$OBJDIR/musl-revision" && - "$(cat "$OBJDIR/compiler-rt-revision")" == "$COMPILERRTREV" && - "$(cat "$OBJDIR/musl-revision")" == "$MUSLREV" ]]; then - exit 0 - fi +DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +SRCDIR="$DIR/../src" +OBJDIR="$DIR/../$objtype" +MUSLREV=$(cd "$SRCDIR/musl" && git rev-parse --verify HEAD) +if [[ ! -f "$OBJDIR/musl-revision" || + "$(cat "$OBJDIR/musl-revision")" != "$MUSLREV" ]]; then ( - flock -x 200 - - NCPU=$(($(grep -c '^processor' /proc/cpuinfo) * 2)) - - if [[ ! -e "$OBJDIR/musl-revision" || - "$(cat "$OBJDIR/musl-revision")" != "$MUSLREV" ]]; then - . "$DIR/arch.sh" - export CC="clang --target=$CLANGARCH -integrated-as" - export CFLAGS="-ggdb3 -O2 -pipe -fPIE -ftls-model=local-exec -fomit-frame-pointer -fstack-protector-strong" - cd "$SRCDIR/musl" && \ - make distclean && \ - ./configure \ - --prefix="$OBJDIR" \ - --disable-shared \ - --disable-gcc-wrapper \ - --enable-warnings \ - --enable-visibility && \ - echo 'obj/src/stdio/vfprintf.lo: CFLAGS += -fno-inline' >> config.mak && \ - echo 'obj/src/env/__libc_start_main.lo: CFLAGS += -include locale.h -D"main(...)=(setlocale(LC_CTYPE, \"C.UTF-8\"), main(__VA_ARGS__))"' >> config.mak && \ - make -j$NJOBS && \ - make install && \ - echo "$MUSLREV" > "$OBJDIR/musl-revision" || exit 2 - - make distclean - fi - - if [[ ! -e "$OBJDIR/compiler-rt-revision" || - "$(cat "$OBJDIR/compiler-rt-revision")" != "$COMPILERRTREV" ]]; then - cd "$SRCDIR" && - make -f compiler-rt.mk clean && - make -f compiler-rt.mk -j$NJOBS && - make -f compiler-rt.mk install && - echo "$COMPILERRTREV" > "$OBJDIR/compiler-rt-revision" || exit 2 - - make -f compiler-rt.mk clean - fi - - exit 0 - ) 200>"$SRCDIR/build-lock" - exit $? - ;; -*) - exit 0 - ;; -esac + set -e + exec 3>"$SRCDIR/build-lock" + flock 3 + + . "$DIR/arch.sh" + export CC="clang --target=$CLANGARCH -integrated-as" + export CFLAGS="-ggdb3 -O2 -pipe -fPIE -ftls-model=local-exec -fomit-frame-pointer -fstack-protector-strong" + cd "$SRCDIR/musl" + make distclean + ./configure \ + --prefix="$OBJDIR" \ + --disable-shared \ + --disable-gcc-wrapper \ + --enable-warnings \ + --enable-visibility + echo 'obj/src/stdio/vfprintf.lo: CFLAGS += -fno-inline' >> config.mak + echo 'obj/src/env/__libc_start_main.lo: CFLAGS += -include locale.h -D"main(...)=(setlocale(LC_CTYPE, \"C.UTF-8\"), main(__VA_ARGS__))"' >> config.mak + make -j"$NPROC" install + mkdir -p "$OBJDIR/bin" + echo "$MUSLREV" > "$OBJDIR/musl-revision" + ) + x="$?" + make -C "$SRCDIR/musl" distclean + if [[ "$x" -ne 0 ]]; then exit 1; fi +fi + +COMPILERRTREV=$(cd "$SRCDIR/compiler-rt" && git rev-parse --verify HEAD) +if [[ ! -f "$OBJDIR/compiler-rt-revision" || + "$(cat "$OBJDIR/compiler-rt-revision")" != "$COMPILERRTREV" ]]; then + ( + set -e + exec 3>"$SRCDIR/build-lock" + flock 3 + + . "$DIR/arch.sh" + cd "$SRCDIR" + make -f compiler-rt.mk clean + make -f compiler-rt.mk -j"$NPROC" install + echo "$COMPILERRTREV" > "$OBJDIR/compiler-rt-revision" + ) + x="$?" + make -C "$SRCDIR" -f compiler-rt.mk clean + if [[ "$x" -ne 0 ]]; then exit 1; fi +fi + +exit 0 @@ -148,7 +148,6 @@ for f in "$@"; do -isystem "$DIR/../$objtype/include" \ "${OPTS[@]}" \ -I "$DIR/../include" \ - -idirafter "/usr/include" \ -include "$DIR/../src/visibility.h" \ "${RNOPTS[@]}" -c "$f" || exit 1 done diff --git a/mips/bin/.keep b/mips/bin/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/mips/bin/.keep diff --git a/mips/include/.keep b/mips/include/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/mips/include/.keep diff --git a/mips/lib/.keep b/mips/lib/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/mips/lib/.keep @@ -1,11 +1,13 @@ +ARCH=386 amd64 arm arm64 mips power power64 sparc spim + all:V: libc libc:V: bash bin/build-libc.sh clean:V: - for a in 386 amd64 arm arm64 mips power power64 sparc spim; do - (cd $a && rm -rf bin include lib musl-revision compiler-rt-revision) + for a in $ARCH; do + (cd $a && rm -rf bin/* include/* lib/* musl-revision compiler-rt-revision) done for f in include/*; do if [ "$f" != "include/u.h" ]; then rm -rf "$f"; fi diff --git a/mkfile.proto b/mkfile.proto index 1983719..1f25183 100644 --- a/mkfile.proto +++ b/mkfile.proto @@ -1,6 +1,6 @@ PATH=$PATH:$p9/bin -OS=05689kqv +OS=056789kqv CFLAGS=-FVw LDFLAGS= AFLAGS= @@ -1,6 +1,6 @@ -all:V: $O.$LIB tests +all:V: $O.$LIB -$O.$LIB(%):N: $OFILES +$O.$LIB(%):N: % $O.$LIB: ${OFILES:%=$O.$LIB(%)} ar rUusc $O.$LIB $newmember @@ -23,8 +23,9 @@ tests.clean:V: if [ -e test/mkfile ]; then cd test && mk $MKFLAGS clean; fi install:V: $O.$LIB $HFILES - mkdir -p "$p9"/$objtype/lib && cp $O.$LIB "$p9"/$objtype/lib/$LIB - cp -f $HFILES "$p9"/include clean:V: tests.clean - rm -f *.[$OS] [$OS].$LIB + rm -f *.[$OS] + +nuke:V: clean + rm -f [$OS].$LIB @@ -1,5 +1,6 @@ PROGS=${TARG:%=$O.%} ALLPROGS=${TARG:%=[$OS].%} +ALLINSTALL=${TARG:%=%.install} all:V: $PROGS @@ -14,12 +15,15 @@ all:V: $PROGS $O.%: %.$O $OFILES $LIB $LD $LDFLAGS -o $target $prereq +$BIN/%: $O.% + cp $O.$stem $BIN/$stem + +%.install:V: $BIN/% + +install:V: $ALLINSTALL + clean:V: rm -f *.[$OS] $ALLPROGS -%.install:V: $O.% - mkdir -p "$BIN" && cp $O.$stem "$BIN"/$stem - -install:V: $PROGS - mkdir -p "$BIN" - for i in $TARG; do cp $O.$i "$BIN"/$i; done +nuke:V: clean + rm -f [$OS].??* @@ -1,4 +1,4 @@ -all:V: $O.$TARG +all:V: $O.out %.$O: $HFILES @@ -8,11 +8,15 @@ all:V: $O.$TARG %.$O: %.s $AS $AFLAGS $stem.s -$O.$TARG: $OFILES $LIB +$O.out: $OFILES $LIB $LD $LDFLAGS -o $target $prereq +$BIN/$TARG: $O.out + cp $prereq $BIN/$TARG + +install:V: $BIN/$TARG + clean:V: - rm -f *.[$OS] [$OS].$TARG + rm -f *.[$OS] [$OS].out -install:V: $O.$TARG - mkdir -p "$BIN" && cp $O.$TARG "$BIN"/$TARG +nuke:V: clean diff --git a/mksyslib b/mksyslib new file mode 100644 index 0000000..19ad87f --- /dev/null +++ b/mksyslib @@ -0,0 +1,38 @@ +HFILESI=${HFILES:%=$p9/include/%} + +all:V: install + +$LIB(%):N: % + +$LIB: ${OFILES:%=$LIB(%)} + ar rUusc $LIB $newmember + +%.$O: $HFILES + +%.$O: %.c + $CC $CFLAGS $stem.c + +%.$O: %.s + $AS $AFLAGS $stem.s + +tests:VQ: $LIB + if [ -e test/mkfile ]; then cd test && mk $MKFLAGS; fi + +tests.run:V: $LIB + if [ -e test/mkfile ]; then cd test && mk -a $MKFLAGS run; fi + +tests.clean:V: + if [ -e test/mkfile ]; then cd test && mk $MKFLAGS clean; fi + +$p9/include/%: % + cp $stem $p9/include/$stem + +installh:V: $HFILESI + +install:V: $LIB installh + +clean:V: tests.clean + rm -f *.[$OS] + +nuke:V: clean + rm -f $LIB $HFILESI diff --git a/power/bin/.keep b/power/bin/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/power/bin/.keep diff --git a/power/include/.keep b/power/include/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/power/include/.keep diff --git a/power/lib/.keep b/power/lib/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/power/lib/.keep diff --git a/power64/bin/.keep b/power64/bin/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/power64/bin/.keep diff --git a/power64/include/.keep b/power64/include/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/power64/include/.keep diff --git a/power64/lib/.keep b/power64/lib/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/power64/lib/.keep diff --git a/sparc/bin/.keep b/sparc/bin/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/sparc/bin/.keep diff --git a/sparc/include/.keep b/sparc/include/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/sparc/include/.keep diff --git a/sparc/lib/.keep b/sparc/lib/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/sparc/lib/.keep diff --git a/spim/bin/.keep b/spim/bin/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/spim/bin/.keep diff --git a/spim/include/.keep b/spim/include/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/spim/include/.keep diff --git a/spim/lib/.keep b/spim/lib/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/spim/lib/.keep |