--- 25.6-Makefile 2025-11-05 15:05:30.203827000 +0000 +++ 25.9-Makefile 2025-11-05 15:05:42.078025000 +0000 @@ -1,10 +1,10 @@ -# 23dec24 Software Lab. Alexander Burger +# 13sep25 Software Lab. Alexander Burger .SILENT: CC = clang -PIL = ../pil # pil -ASM = opt -O2 # llvm-as +PIL = ../pil +ASM = opt -O2 LLC = llc LINK = llvm-link SHARED = -shared @@ -25,6 +25,7 @@ SRC = main.l gc.l big.l sym.l io.l db.l apply.l flow.l subr.l all: $(LIB)/sysdefs $(BIN)/picolisp $(LIB)/ext.so $(LIB)/ht.so $(BIN)/balance $(BIN)/ssl $(BIN)/httpGate +so: $(LIB)/picolisp.so # System definitions $(LIB)/sysdefs: sysdefs.c @@ -32,7 +33,7 @@ # Base system $(BIN)/picolisp: picolisp.bc - mkdir -p $(BIN) $(LIB) + mkdir -p $(BIN) $(LLC) picolisp.bc -relocation-model=pic -o picolisp.s $(CC) picolisp.s -o $(BIN)/picolisp -rdynamic -lc -lutil -lm -ldl `pkg-config --libs readline libffi` $(STRIP) $(BIN)/picolisp @@ -43,12 +44,31 @@ base.bc: base.ll $(ASM) -o base.bc base.ll -base.ll: $(INC) $(SRC) - $(PIL) lib/llvm.l main.l -bye > base.ll +base.ll: $(INC) $(SRC) lib/ex.l + $(PIL) lib/llvm.l lib/ex.l main.l -bye > base.ll mv base.map $(LIB)/map lib.bc: pico.h lib.c - $(CC) -O3 -w -c -o lib.bc -D_OS='"$(OS)"' -D_CPU='"$(CPU)"' `pkg-config --cflags libffi` -emit-llvm lib.c + $(CC) -O3 -w -c -o lib.bc -D_OS='"$(OS)"' -D_CPU='"$(CPU)"' -emit-llvm lib.c + +# Base system as shared library +$(LIB)/picolisp.so: picolisp.so.bc + $(LLC) picolisp.so.bc -relocation-model=pic -o picolisp.so.s + $(CC) picolisp.so.s -o $(LIB)/picolisp.so $(SHARED) + $(STRIP) $(LIB)/picolisp.so + +picolisp.so.bc: base.so.bc lib.so.bc + $(LINK) -o picolisp.so.bc base.so.bc lib.so.bc + +base.so.bc: base.so.ll + $(ASM) -o base.so.bc base.so.ll + +base.so.ll: $(INC) $(SRC) lib/so.l + $(PIL) lib/llvm.l -quiche lib/so.l main.l -bye > base.so.ll + rm base.map + +lib.so.bc: pico.h lib.so.c + $(CC) -O3 -w -c -fPIC -o lib.so.bc -D_OS='"$(OS)"' -D_CPU='"$(CPU)"' -emit-llvm lib.so.c # Extension libraries $(LIB)/ext.so: ext.bc