summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--386/bin/.keep0
-rw-r--r--386/include/.keep0
-rw-r--r--386/lib/.keep0
-rw-r--r--amd64/bin/.keep0
-rw-r--r--amd64/include/.keep0
-rw-r--r--amd64/lib/.keep0
-rw-r--r--arm/bin/.keep0
-rw-r--r--arm/include/.keep0
-rw-r--r--arm/lib/.keep0
-rw-r--r--arm64/bin/.keep0
-rw-r--r--arm64/include/.keep0
-rw-r--r--arm64/lib/.keep0
-rw-r--r--bin/build-libc.sh111
-rw-r--r--bin/p9c.sh1
-rw-r--r--mips/bin/.keep0
-rw-r--r--mips/include/.keep0
-rw-r--r--mips/lib/.keep0
-rw-r--r--mkfile6
-rw-r--r--mkfile.proto2
-rw-r--r--mklib11
-rw-r--r--mkmany16
-rw-r--r--mkone14
-rw-r--r--mksyslib38
-rw-r--r--power/bin/.keep0
-rw-r--r--power/include/.keep0
-rw-r--r--power/lib/.keep0
-rw-r--r--power64/bin/.keep0
-rw-r--r--power64/include/.keep0
-rw-r--r--power64/lib/.keep0
-rw-r--r--sparc/bin/.keep0
-rw-r--r--sparc/include/.keep0
-rw-r--r--sparc/lib/.keep0
-rw-r--r--spim/bin/.keep0
-rw-r--r--spim/include/.keep0
-rw-r--r--spim/lib/.keep0
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
diff --git a/bin/p9c.sh b/bin/p9c.sh
index e561acd..51150f4 100644
--- a/bin/p9c.sh
+++ b/bin/p9c.sh
@@ -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
diff --git a/mkfile b/mkfile
index bb5a5bc..999e098 100644
--- a/mkfile
+++ b/mkfile
@@ -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=
diff --git a/mklib b/mklib
index f0ff2fc..e7c8cd9 100644
--- a/mklib
+++ b/mklib
@@ -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
diff --git a/mkmany b/mkmany
index 6943149..6511e47 100644
--- a/mkmany
+++ b/mkmany
@@ -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].??*
diff --git a/mkone b/mkone
index 09a8531..b947b46 100644
--- a/mkone
+++ b/mkone
@@ -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