roswell.roswell/t/tree-shaker/Makefile
2017-07-16 13:02:33 +09:00

82 lines
2.2 KiB
Makefile

# .SECONDEXPANSION:
pop = $(filter-out $(firstword $(1)), $(1))
# $(info a b c)
# $(info $(strip a b c))
# $(info $(firstword $(strip a b c)))
# $(info $(call pop,$(strip a b c)))
# $(info a b c)
c_dump = ros dump $(call pop,$(1)) executable aaa.ros -o $(firstword $(1))
u_dump = ros dump --disable-compression $(call pop,$(1)) executable aaa.ros -o $(firstword $(1))
targets = baseline docstring destroy package packages except debug compiler macro cmacro combined
.PHONY: $(targets) all clean test
all: $(targets)
ls -lh *.bin
# somehow this does not work
# %: u-%.bin c-%.bin
# %.dep: u-%.bin c-%.bin
baseline: u-baseline.bin c-baseline.bin
docstring: u-docstring.bin c-docstring.bin
#destroy: u-destroy.bin c-destroy.bin
package: u-package.bin c-package.bin
packages: u-packages.bin c-packages.bin
except: u-except.bin c-except.bin
debug: u-debug.bin c-debug.bin
compiler: u-compiler.bin c-compiler.bin
macro: u-macro.bin c-macro.bin
cmacro: u-cmacro.bin c-cmacro.bin
#combined: u-combined.bin c-combined.bin
dump = $(call $(firstword $(subst -, ,$@))_dump, $@ $(1))
%-baseline.bin : aaa.ros
$(call dump)
./$@
%-docstring.bin : aaa.ros
$(call dump, --remove-docstrings)
./$@
%-destroy.bin : aaa.ros
$(call dump, --destroy-packages-sbcl)
./$@
%-package.bin : aaa.ros
$(call dump, --delete-package trivia)
./$@
%-packages.bin : aaa.ros
$(call dump, --delete-all-packages)
./$@
%-except.bin : aaa.ros
$(call dump, --delete-packages-except trivia)
./$@
%-debug.bin : aaa.ros
$(call dump, --delete-debug-info)
./$@
%-compiler.bin : aaa.ros
$(call dump, --delete-compiler-information-sbcl)
./$@
%-macro.bin : aaa.ros
$(call dump, --delete-macro-definitions)
./$@
%-cmacro.bin : aaa.ros
$(call dump, --delete-compiler-macro-definitions)
./$@
%-combined.bin : aaa.ros
$(call dump, --remove-docstrings --delete-debug-info \
--delete-macro-definitions --delete-compiler-macro-definitions \
--delete-compiler-information-sbcl \
--delete-all-packages --destroy-packages-sbcl)
./$@
test:
for bin in *.bin ; do echo "$$bin $$(./$$bin)" ; done
clean:
rm -f *.bin