# Binaries ECHO=echo KODEV=kodev MKDIR=mkdir -p COPY=cp RM=rm -f SPP=spp CD=cd AWK=awk GREP=grep SORT=sort # Config chroot_dir=kore_chroot/ mirror=http://dl-cdn.alpinelinux.org/alpine/ arch=aarch64 version=2.10.5-r0 certbot_email=--register-unsafely-without-email #certbot_email=-m you@cock.li user=robin port=8888 domain=test.monster:$(port) SPPFLAGS=-D port=$(port) -D kore_chroot=$(chroot_dir) -D chuser=$(user) -D domain=$(domain) # squelch prints, flip to print verbose information Q=@ #Q= # Probably don't change stuff past here if you're just using smr lua_in_files=$(shell find src/lua/*.in -type f) lua_files=$(shell find src/lua/*.lua -type f) $(shell find src/lua/endpoints -type f) $(lua_in_files:%.in=%) src_files=$(shell find src -type f) $(shell find conf -type f) sql_files=$(shell find src/sql -type f) test_files=$(shell find spec -type f) built_tests=$(test_files:%=$(chroot_dir)%) built_files=$(lua_files:src/lua/%.lua=$(chroot_dir)%.lua) in_page_files=$(shell find src/pages/*.in -type f) in_part_files=$(shell find src/pages/parts/*.in -type f) page_files=$(in_page_files:%.in=%) part_files=$(in_part_files:%.in=%) $(shell find src/pages/parts/*.etlua -type f) built_pages=$(page_files:src/pages/%.etlua=$(chroot_dir)pages/%.etlua) built_sql=$(sql_files:src/sql/%.sql=$(chroot_dir)sql/%.sql) built=$(built_files) $(built_sql) $(built_pages) $(built_tests) asset_in_files=$(wildcard assets/*.in -type f) asset_files=$(asset_in_files:%.in=%) help: ## Print this help $(Q)$(GREP) -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | $(SORT) | $(AWK) 'BEGIN {FS = ":.*?## "}; {printf "%-30s %s\n", $$1, $$2}' all: $(chroot_dir) smr.so $(built_files) $(built_pages) $(built_sql) ## Build and run smr in a chroot $(Q)$(ECHO) "[running] $@" $(Q)$(KODEV) run conf/smr.conf : conf/smr.conf.in Makefile $(Q)$(ECHO) "[preprocess] $@" $(Q)$(SPP) -o $@ $(SPPFLAGS) $< apk-tools-static-$(version).apk: # wget -q $(mirror)latest-stable/main/$(arch)/apk-tools-static-$(version).apk clean: ## clean up all the files generated by this makefile $(Q)$(ECHO) "[clean] $@" $(Q)$(KODEV) clean $(Q)$(RM) $(page_files) $(Q)$(RM) conf/smr.conf $(Q)$(RM) src/pages/parts/story_breif.etlua $(Q)$(RM) src/lua/config.lua $(Q)$(RM) $(asset_files) cloc: ## calculate source lines of code in smr cloc --force-lang="HTML",etlua.in src assets $(chroot_dir): apk-tools-static-$(version).apk $(Q)$(MKDIR) $(chroot_dir) $(Q)$(MKDIR) $(chroot_dir)/pages $(Q)$(MKDIR) $(chroot_dir)/sql $(Q)$(MKDIR) $(chroot_dir)/data $(Q)$(MKDIR) $(chroot_dir)/data/archive $(Q)$(MKDIR) $(chroot_dir)/endpoints code : $(built_files) $(built_files): $(chroot_dir)%.lua : src/lua/%.lua $(Q)$(ECHO) "[copy] $@" $(Q)$(COPY) $^ $@ $(built_pages): $(chroot_dir)pages/%.etlua : src/pages/%.etlua $(Q)$(ECHO) "[copy] $@" $(Q)$(COPY) $^ $@ src/lua/config.lua : src/lua/config.lua.in Makefile $(Q)$(ECHO) "[preprocess] $@" $(Q)$(SPP) $(SPPFLAGS) -o $@ $< $(page_files) : % : %.in $(part_files) $(Q)$(ECHO) "[preprocess] $@" $(Q)$(SPP) $(SPPFLAGS) -o $@ $< src/pages/parts/story_breif.etlua : src/pages/parts/story_breif.etlua.in $(Q)$(ECHO) "[preprocess] $@" $(Q)$(SPP) $(SPPFLAGS) -o $@ $< $(built_sql): $(chroot_dir)sql/%.sql : src/sql/%.sql $(Q)$(ECHO) "[copy] $@" $(Q)$(COPY) $^ $@ $(built_tests) : $(chroot_dir)% : % $(Q)$(ECHO) "[copy] $@" $(Q)$(COPY) $^ $@ $(asset_files) : % : %.in $(Q)$(ECHO) "[preprocess] $@" $(Q)$(SPP) $(SPPFLAGS) -o $@ $< smr.so : $(src_files) conf/smr.conf conf/build.conf $(asset_files) $(Q)$(ECHO) "[build] $@" $(Q)$(KODEV) build test : $(built) ## run the unit tests $(Q)$(CD) kore_chroot && busted -v --no-keep-going #--exclude-tags slow cov : $(built) ## code coverage (based on unit tests) $(Q)$(RM) kore_chroot/luacov.stats.out $(Q)$(CD) kore_chroot && busted -v -c --no-keep-going #--exclude-tags slow $(Q)$(CD) kore_chroot && luacov endpoints/ $(Q)$(ECHO) "open kore_chroot/luacov.report.out to view coverage results."