From 9f1fe737979625c4c76aa7d5f55bbc777032e314 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 21 Jun 2019 15:50:44 -0600 Subject: [PATCH] change build to use archives instead of merging objects Merging ".o" files to one "kernel.o" can be convenient for further linking, but it requires running `ld` directly. Running `ld` directly sometimes runs into a mismatch between the C compiler and the default `ld`. It's better to use the more typical approach of collecting objects into an archive. original commit: 7d5b60c7566570655e567495d86d546101cf8fb4 --- c/Mf-a6fb | 9 ++++++--- c/Mf-a6le | 9 ++++++--- c/Mf-a6nb | 9 ++++++--- c/Mf-a6ob | 9 ++++++--- c/Mf-a6osx | 9 ++++++--- c/Mf-a6s2 | 9 ++++++--- c/Mf-arm32le | 9 ++++++--- c/Mf-base | 1 + c/Mf-i3fb | 9 ++++++--- c/Mf-i3le | 9 ++++++--- c/Mf-i3nb | 9 ++++++--- c/Mf-i3ob | 9 ++++++--- c/Mf-i3osx | 9 ++++++--- c/Mf-i3qnx | 9 ++++++--- c/Mf-i3s2 | 9 ++++++--- c/Mf-ppc32le | 9 ++++++--- c/Mf-ta6fb | 9 ++++++--- c/Mf-ta6le | 9 ++++++--- c/Mf-ta6nb | 9 ++++++--- c/Mf-ta6nt | 9 ++++++--- c/Mf-ta6ob | 9 ++++++--- c/Mf-ta6osx | 9 ++++++--- c/Mf-ta6s2 | 9 ++++++--- c/Mf-ti3fb | 9 ++++++--- c/Mf-ti3le | 9 ++++++--- c/Mf-ti3nb | 9 ++++++--- c/Mf-ti3nt | 9 ++++++--- c/Mf-ti3ob | 9 ++++++--- c/Mf-ti3osx | 9 ++++++--- c/Mf-ti3s2 | 9 ++++++--- c/Mf-tppc32le | 9 ++++++--- c/externs.h | 3 +++ c/globals.h | 2 +- c/scheme.c | 5 +++++ c/statics.c | 5 +++++ configure | 2 +- 36 files changed, 196 insertions(+), 92 deletions(-) diff --git a/c/Mf-a6fb b/c/Mf-a6fb index 0b6378ab04..9285819c52 100644 --- a/c/Mf-a6fb +++ b/c/Mf-a6fb @@ -32,10 +32,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m64" ./configure --64) diff --git a/c/Mf-a6le b/c/Mf-a6le index 89a8afe5ff..c42ed5f9b2 100644 --- a/c/Mf-a6le +++ b/c/Mf-a6le @@ -31,10 +31,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -melf_x86_64 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -melf_x86_64 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m64" ./configure --64) diff --git a/c/Mf-a6nb b/c/Mf-a6nb index 5cf2ec043f..dce0e58c48 100644 --- a/c/Mf-a6nb +++ b/c/Mf-a6nb @@ -32,10 +32,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m64" ./configure --64) diff --git a/c/Mf-a6ob b/c/Mf-a6ob index 521a5aac8d..bc1990f2ac 100644 --- a/c/Mf-a6ob +++ b/c/Mf-a6ob @@ -32,10 +32,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -Wl,--export-dynamic -Wl,-zwxneeded -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -Wl,--export-dynamic -Wl,-zwxneeded -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m64" ./configure --64) diff --git a/c/Mf-a6osx b/c/Mf-a6osx index 2121be2769..439d817d89 100644 --- a/c/Mf-a6osx +++ b/c/Mf-a6osx @@ -31,10 +31,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m64" ./configure --64) diff --git a/c/Mf-a6s2 b/c/Mf-a6s2 index 4f4aa88a88..5df9a7b7ac 100644 --- a/c/Mf-a6s2 +++ b/c/Mf-a6s2 @@ -31,10 +31,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -melf_x86_64 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -melf_x86_64 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m64" ./configure --64) diff --git a/c/Mf-arm32le b/c/Mf-arm32le index 6edd46cfda..17ab2ad77e 100644 --- a/c/Mf-arm32le +++ b/c/Mf-arm32le @@ -31,10 +31,13 @@ mdobj = arm32le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; ./configure) diff --git a/c/Mf-base b/c/Mf-base index b4eb27e42a..ef21fc17e0 100644 --- a/c/Mf-base +++ b/c/Mf-base @@ -19,6 +19,7 @@ Include=../boot/$m PetiteBoot=../boot/$m/petite.boot SchemeBoot=../boot/$m/scheme.boot Kernel=../boot/$m/kernel.$o +KernelLib=../boot/$m/libkernel.a Main=../boot/$m/main.$o Scheme=../bin/$m/scheme diff --git a/c/Mf-i3fb b/c/Mf-i3fb index c578d8d1ee..01552735ce 100644 --- a/c/Mf-i3fb +++ b/c/Mf-i3fb @@ -32,10 +32,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m32" ./configure) diff --git a/c/Mf-i3le b/c/Mf-i3le index 36bd5eaed1..ce7d6338e8 100644 --- a/c/Mf-i3le +++ b/c/Mf-i3le @@ -31,10 +31,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -melf_i386 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -melf_i386 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m32" ./configure) diff --git a/c/Mf-i3nb b/c/Mf-i3nb index f0cfca976d..814da91bd7 100644 --- a/c/Mf-i3nb +++ b/c/Mf-i3nb @@ -32,10 +32,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m32" ./configure) diff --git a/c/Mf-i3ob b/c/Mf-i3ob index 4bd211f9f4..0b7ae410fa 100644 --- a/c/Mf-i3ob +++ b/c/Mf-i3ob @@ -32,10 +32,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -Wl,--export-dynamic -Wl,-zwxneeded -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -Wl,--export-dynamic -Wl,-zwxneeded -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m32" ./configure) diff --git a/c/Mf-i3osx b/c/Mf-i3osx index 5124d0f50b..df0cab0074 100644 --- a/c/Mf-i3osx +++ b/c/Mf-i3osx @@ -31,10 +31,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m32" ./configure) diff --git a/c/Mf-i3qnx b/c/Mf-i3qnx index 5e4776dfa4..c70d947b6e 100644 --- a/c/Mf-i3qnx +++ b/c/Mf-i3qnx @@ -32,10 +32,13 @@ LocalInclude = /usr/local/include include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -mi386nto -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -mi386nto -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -Wl,--export-dynamic -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -Wl,--export-dynamic -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m32" ./configure) diff --git a/c/Mf-i3s2 b/c/Mf-i3s2 index 1327d43be9..dce449fa4f 100644 --- a/c/Mf-i3s2 +++ b/c/Mf-i3s2 @@ -31,10 +31,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -melf_i386 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -melf_i386 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m32" ./configure) diff --git a/c/Mf-ppc32le b/c/Mf-ppc32le index 19757b3134..5d5225bcc7 100644 --- a/c/Mf-ppc32le +++ b/c/Mf-ppc32le @@ -31,10 +31,13 @@ mdobj = ppc32.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m32" ./configure) diff --git a/c/Mf-ta6fb b/c/Mf-ta6fb index 899bc59d8e..45d3d7325d 100644 --- a/c/Mf-ta6fb +++ b/c/Mf-ta6fb @@ -32,10 +32,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m64" ./configure --64) diff --git a/c/Mf-ta6le b/c/Mf-ta6le index c24cdde1cf..d03159263b 100644 --- a/c/Mf-ta6le +++ b/c/Mf-ta6le @@ -31,10 +31,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -melf_x86_64 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -melf_x86_64 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m64" ./configure --64) diff --git a/c/Mf-ta6nb b/c/Mf-ta6nb index 98a1f7a196..a35431a2a5 100644 --- a/c/Mf-ta6nb +++ b/c/Mf-ta6nb @@ -32,10 +32,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} paxctl +m ${Scheme} ../zlib/configure.log: diff --git a/c/Mf-ta6nt b/c/Mf-ta6nt index 5a615d70d0..5214bb778c 100644 --- a/c/Mf-ta6nt +++ b/c/Mf-ta6nt @@ -41,14 +41,17 @@ make.bat: vs.bat C = ${CC} ${CPPFLAGS} -O2 ${CFLAGS} -${Scheme}${cross:t=}: ${Kernel} ${Main} - $C -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} -lshell32 -luser32 -lole32 -lrpcrt4 -luuid +${Scheme}${cross:t=}: ${Main} ${KernelLib} ${zlibDep} ${LZ4Dep} + $C -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} -lshell32 -luser32 -lole32 -lrpcrt4 -luuid .c.$o: $C -c -D${Cpu} -I${Include} ${zlibInc} ${LZ4Inc} $*.c +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - $(LD) -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} ../zlib/configure.log: echo "all:" >> ../zlib/Makefile diff --git a/c/Mf-ta6ob b/c/Mf-ta6ob index c435ffec1d..6e68be7a16 100644 --- a/c/Mf-ta6ob +++ b/c/Mf-ta6ob @@ -32,10 +32,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -Wl,--export-dynamic -Wl,-zwxneeded -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -Wl,--export-dynamic -Wl,-zwxneeded -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m64" ./configure --64) diff --git a/c/Mf-ta6osx b/c/Mf-ta6osx index 4358a07307..ecdf2d3b46 100644 --- a/c/Mf-ta6osx +++ b/c/Mf-ta6osx @@ -31,10 +31,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m64" ./configure --64) diff --git a/c/Mf-ta6s2 b/c/Mf-ta6s2 index a95c5c9b48..b51cfb5cb9 100644 --- a/c/Mf-ta6s2 +++ b/c/Mf-ta6s2 @@ -31,10 +31,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -melf_x86_64 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -melf_x86_64 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m64" ./configure --64) diff --git a/c/Mf-ti3fb b/c/Mf-ti3fb index fc58a55d96..0afefd6c1f 100644 --- a/c/Mf-ti3fb +++ b/c/Mf-ti3fb @@ -32,10 +32,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m32" ./configure) diff --git a/c/Mf-ti3le b/c/Mf-ti3le index bda63fd535..92bda36a01 100644 --- a/c/Mf-ti3le +++ b/c/Mf-ti3le @@ -31,10 +31,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -melf_i386 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -melf_i386 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m32" ./configure) diff --git a/c/Mf-ti3nb b/c/Mf-ti3nb index 3bbb9d2961..ee6202ef93 100644 --- a/c/Mf-ti3nb +++ b/c/Mf-ti3nb @@ -32,10 +32,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -m elf_i386 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -m elf_i386 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m32" ./configure) diff --git a/c/Mf-ti3nt b/c/Mf-ti3nt index 6827a08f7d..96bea72efd 100644 --- a/c/Mf-ti3nt +++ b/c/Mf-ti3nt @@ -41,14 +41,17 @@ make.bat: vs.bat C = ${CC} ${CPPFLAGS} -O2 ${CFLAGS} -${Scheme}${cross:t=}: ${Kernel} ${Main} - $C -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} -lshell32 -luser32 -lole32 -lrpcrt4 -luuid +${Scheme}${cross:t=}: ${Main} ${KernelLib} ${zlibDep} ${LZ4Dep} + $C -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} -lshell32 -luser32 -lole32 -lrpcrt4 -luuid .c.$o: $C -c -D${Cpu} -I${Include} ${zlibInc} ${LZ4Inc} $*.c +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - $(LD) -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} ../zlib/configure.log: echo "all:" >> ../zlib/Makefile diff --git a/c/Mf-ti3ob b/c/Mf-ti3ob index 560959164a..3c7a7e6829 100644 --- a/c/Mf-ti3ob +++ b/c/Mf-ti3ob @@ -32,10 +32,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -Wl,--export-dynamic -Wl,-zwxneeded -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -Wl,--export-dynamic -Wl,-zwxneeded -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m32" ./configure) diff --git a/c/Mf-ti3osx b/c/Mf-ti3osx index 877ed3d095..90d41973b3 100644 --- a/c/Mf-ti3osx +++ b/c/Mf-ti3osx @@ -31,10 +31,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m32" ./configure) diff --git a/c/Mf-ti3s2 b/c/Mf-ti3s2 index 841fecbc31..d4fc1e1660 100644 --- a/c/Mf-ti3s2 +++ b/c/Mf-ti3s2 @@ -31,10 +31,13 @@ mdobj = i3le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -melf_i386 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -melf_i386 -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m32" ./configure) diff --git a/c/Mf-tppc32le b/c/Mf-tppc32le index 4e5d9b63a7..5526a27073 100644 --- a/c/Mf-tppc32le +++ b/c/Mf-tppc32le @@ -31,10 +31,13 @@ mdobj = ppc32le.o include Mf-base ${Kernel}: ${kernelobj} ${zlibDep} ${LZ4Dep} - ld -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} + ${LD} -r -X -o ${Kernel} ${kernelobj} ${zlibLib} ${LZ4Lib} -${Scheme}: ${Kernel} ${Main} - $C -rdynamic -o ${Scheme} ${Kernel} ${Main} ${mdclib} ${LDFLAGS} +${KernelLib}: ${kernelobj} + ${AR} ${ARFLAGS} ${KernelLib} ${kernelobj} + +${Scheme}: ${KernelLib} ${zlibDep} ${LZ4Dep} ${Main} + $C -rdynamic -o ${Scheme} ${Main} ${KernelLib} ${mdclib} ${zlibLib} ${LZ4Lib} ${LDFLAGS} ../zlib/configure.log: (cd ../zlib; CFLAGS="${CFLAGS} -m32" ./configure) diff --git a/c/externs.h b/c/externs.h index deb7d83804..68f9579834 100644 --- a/c/externs.h +++ b/c/externs.h @@ -418,3 +418,6 @@ extern char *S_windows_getcwd(char *buffer, int maxlen); /* expeditor.c */ extern void S_expeditor_init PROTO((void)); #endif /* FEATURE_EXPEDITOR */ + +/* statics.c */ +extern void scheme_statics(); diff --git a/c/globals.h b/c/globals.h index a71a33b770..be1fb45e31 100644 --- a/c/globals.h +++ b/c/globals.h @@ -64,7 +64,7 @@ EXTERN ptr S_foreign_dynamic; #endif /* globals that do need to be preserved in a saved heap */ -EXTERN struct { +EXTERN struct S_G_struct { /* scheme.c */ double thread_context[size_tc / sizeof(double)]; ptr active_threads_id; diff --git a/c/scheme.c b/c/scheme.c index 2e0fa4007f..91eefaeeee 100644 --- a/c/scheme.c +++ b/c/scheme.c @@ -43,11 +43,16 @@ static void main_init PROTO((void)); static void idiot_checks PROTO((void)); static INT run_script PROTO((const char *who, const char *scriptfile, INT argc, const char *argv[], IBOOL programp)); +extern void scheme_include(void); + static void main_init() { ptr tc = get_thread_context(); ptr p; INT i; + /* create dependency for linker */ + scheme_statics(); + /* force thread inline allocation to go through find_room until ready */ AP(tc) = (ptr)0; EAP(tc) = (ptr)0; diff --git a/c/statics.c b/c/statics.c index 542f64ebc3..d13f1697f5 100644 --- a/c/statics.c +++ b/c/statics.c @@ -16,3 +16,8 @@ #define EXTERN #include "system.h" + +/* The C linker may require a reference to a function to pull in all + the common declarations. */ +#include "externs.h" +void scheme_statics() { } diff --git a/configure b/configure index debcd179c7..ed577e7d9a 100755 --- a/configure +++ b/configure @@ -45,7 +45,7 @@ disablecurses=no : ${LD:="ld"} : ${LDFLAGS:=""} : ${AR:="ar"} -: ${ARFLAGS:="ruv"} +: ${ARFLAGS:="rc"} : ${RANLIB:="ranlib"} : ${WINDRES:="windres"} zlibInc=-I../zlib