makefile (1480B)
1 LISP=sbcl 2 3 BUILD_DIR=./build 4 DATA_DIR=./data 5 TEMPLATE_DIR=./html 6 7 SRC_DIRS=$(DATA_DIR) $(TEMPLATE_DIR) ./lisp ./assets 8 9 FILES=makefile readme.md 10 ARCHIVE=$(BUILD_DIR)/ethica.zip 11 12 GEN=lisp/bin/ethicagen 13 14 VERSIONS=la_spinoza en_elwes de_stern de_auerbach fr_saisset fr_appuhn 15 HTML = $(foreach v, $(VERSIONS), $(BUILD_DIR)/$(v).html) 16 17 .PHONY: all deploy clean 18 19 all: $(HTML) $(BUILD_DIR)/assets 20 21 $(BUILD_DIR): 22 @echo --- 23 @echo Create build directory. 24 @echo 25 mkdir -p $@ 26 @echo --- 27 28 $(BUILD_DIR)/assets: $(BUILD_DIR) 29 @echo --- 30 @echo Link assets. 31 @echo 32 ln -sfr assets -t $(BUILD_DIR) 33 @echo --- 34 35 $(HTML) &: $(DATA_DIR)/* $(DATA_DIR)/meta.json $(TEMPLATE_DIR) $(GEN) $(BUILD_DIR) 36 @echo --- 37 @echo Generating HTML files. 38 @echo 39 $(GEN) --data-dir $(DATA_DIR)/\ 40 --build-dir $(BUILD_DIR)/\ 41 --template-dir $(TEMPLATE_DIR)/\ 42 -- $(VERSIONS) 43 @echo --- 44 45 $(ARCHIVE): $(SRC_DIRS) $(FILES) $(BUILD_DIR) 46 @echo --- 47 @echo Generating source archive. 48 @echo 49 git archive main -o $@ 50 @echo --- 51 52 $(GEN): lisp/lou.spinoza.ethica.asd lisp/ethics.lisp 53 @echo --- 54 @echo Compiling LISP. 55 @echo 56 $(LISP) --load 'lisp/lou.spinoza.ethica.asd'\ 57 --eval '(ql:quickload :lou.spinoza.ethica)'\ 58 --eval '(asdf:make :lou.spinoza.ethica)'\ 59 --eval '(quit)' 60 @echo --- 61 62 deploy: $(ARCHIVE) all 63 @echo --- 64 @echo Uploading files. 65 @echo 66 rsync -vrL --delete $(BUILD_DIR)/ repetitions:~/ethica 67 @echo --- 68 69 clean: 70 @echo --- 71 @echo Cleaning directory. 72 @echo 73 rm -R $(BUILD_DIR) 74 rm -R lisp/bin 75 @echo --- 76