56 lines
2.8 KiB
Makefile
56 lines
2.8 KiB
Makefile
MAKE:=$(MAKE) MAKEFLAGS=-j8
|
|
M=mkdir -p $(@D)
|
|
0:;$(MAKE) k && $(MAKE) t #default target
|
|
k:;$(MAKE) a N=$@ R=k O='-O3 -march=native' L='-lm -ldl' #for calling k from dynamic libs, add: O='... -Wl,-E'
|
|
libk.so:;$(MAKE) a N=$@ R=$@ O='-fPIC -Dshared' L='-lm -ldl -shared'
|
|
libk.a:;$(MAKE) b N=$@ R=$@ O='-O3 -march=native -ffreestanding -lm -ldl -Dldstatic'
|
|
o/$N/%.o:%.c *.h;$M;$(CC) @opts $O -o $@ -c $<
|
|
o/$N/bin:$(patsubst %.c,o/$N/%.o,$(wildcard *.c));$(CC) $O -o $@ $^ @lopts $L # ;$(STRIP) -R .comment $@ -R '.note*'
|
|
a:o/$N/bin;cp o/$N/bin $R
|
|
b:$(patsubst %.c,o/$N/%.o,$(wildcard *.c));ar rcs o/$R/libk.a o/$N/*.o && cp o/$N/libk.a $R
|
|
|
|
o/asm/%.s:%.c *.h;$M;$(CC) -O3 @opts -march=native -nostdlib -ffreestanding -c $< -o $@ -S -masm=intel
|
|
|
|
#/usr/lib/llvm-17/bin/wasm-ld must be on $PATH
|
|
#apt-get install gcc-multilib-x86-64-linux-gnux32
|
|
w:k o/w/fs.h o/w/k.wasm.lz4 o/w/index.html $(patsubst w/x/%.k,o/w/x/%.k,$(wildcard w/x/*.k)) #wasm
|
|
h:w o/w/http;cd o/w;./http
|
|
O_WASM=@opts -Oz -nostdlib -ffreestanding --target=wasm32 -U __SIZEOF_INT128__ -Dwasm -I/usr/x86_64-linux-gnux32/include/
|
|
o/w/%.o:%.c *.h o/w/fs.h;$M;clang-17 $(O_WASM) -o $@ -c $<
|
|
o/w/k.wasm0:$(patsubst %.c,o/w/%.o,$(wildcard *.c));clang-17 $(O_WASM) -o $@ $^\
|
|
-Wl,--export=main,--export=kinit,--export=kargs,--export=rep,--export=open,--export=close,--export=write,--export=evs\
|
|
-Wl,--export=__heap_base,--no-entry,--initial-memory=33554432,-z,stack-size=8388608,--allow-undefined
|
|
o/w/k.wasm:o/w/k.wasm0;wasm-opt -Oz $< -o $@
|
|
o/w/k.wasm.lz4:o/w/k.wasm;lz4 -12 <$< >$@
|
|
o/w/fs.h:repl.k LICENSE|k w/fs.k;$M;./k w/fs.k $^ >$@
|
|
o/w/x/%.k:w/x/%.k;$M;ln -f $< $@
|
|
o/w/index.html:w/index.html k w/inl.k w/*.js;$M;cd w && ./inl.k index.html *.js >../$@ && cd -
|
|
o/w/http:w/http.c;$(CC) $< -o $@
|
|
|
|
# O_32=@opts -m32
|
|
# o/32/%.o:%.c *.h;$M;$(CC) $(O_32) -o $@ -c $<
|
|
# k32:$(patsubst %.c,o/32/%.o,$(wildcard *.c));$(CC) $(O_32) -o $@ $^ -lgcc -lm
|
|
o/t:t/t.c;$(CC) $< -o $@ -Wall -Wno-unused-result -Werror
|
|
|
|
t:tu td tg te ta #all tests
|
|
tu:k o/t;o/t ;echo tu done #unit
|
|
td:k;cd dy;./a.k ;echo td done #dyalog
|
|
tg:k;cd g;./a.k ;echo tg done #codegolf
|
|
te:te0 te1 te2 #projecteuler
|
|
te0:k;l/runparts.k e 1 50 ;echo te0 done
|
|
te1:k;l/runparts.k e 50 90 ;echo te1 done
|
|
te2:k;l/runparts.k e 90 ;echo te2 done
|
|
ta:t15 t16 t17 t18 t19 t20 t21 t22 t23 #adventofcode
|
|
t15:k;l/runparts.k aoc/15 ;echo t15 done
|
|
t16:k;l/runparts.k aoc/16 ;echo t16 done
|
|
t17:k;l/runparts.k aoc/17 ;echo t17 done
|
|
t18:k;l/runparts.k aoc/18 ;echo t18 done
|
|
t19:k;l/runparts.k aoc/19 ;echo t19 done
|
|
t20:k;l/runparts.k aoc/20 ;echo t20 done
|
|
t21:k;l/runparts.k aoc/21 ;echo t21 done
|
|
t22:k;l/runparts.k aoc/22 ;echo t22 done
|
|
t23:k;l/runparts.k aoc/23 ;echo t23 done
|
|
|
|
c:;rm -rf o k libk.so libk.a #clean
|
|
.PHONY: 0 c k w h a t tu td tg te te0 te1 te2 ta t15 t16 t17 t18 t19 t20 t21 t22 t23
|