stud

study spacejunk
Log | Files | Refs | LICENSE

Makefile (4392B) - Raw


      1 CROSSING = 622916 6109267 626066 6111487 # xmin ymin xmax ymax
      2 ZEIMENA_TOLERANCES = 128 256 512 1024 2048 4096
      3 SINEWAVE_TOLERANCES = 2 16 32
      4 CROSSING_TOLERANCES = 128 256 512
      5 CHAIKIN_CROSSING_TOLERANCES = 128 256 512
      6 SINEWAVE_SIZE = 120x48
      7 GEN1 = $(addsuffix .pdf, \
      8 		  $(addprefix sinewave2_douglas_,$(SINEWAVE_TOLERANCES)) \
      9 		  $(addprefix sinewave2_visvalingam_,$(SINEWAVE_TOLERANCES)) \
     10 		  $(addprefix zeimena_douglas_,$(ZEIMENA_TOLERANCES)) \
     11 		  $(addprefix zeimena_visvalingam_,$(ZEIMENA_TOLERANCES)))
     12 GEN2 = $(addsuffix .pdf, \
     13 		   $(addprefix overlaid_zeimena_douglas_,$(CROSSING_TOLERANCES)) \
     14 		   $(addprefix overlaid_zeimena_visvalingam_,$(CROSSING_TOLERANCES)) \
     15 		   $(addprefix overlaid_sinewave2_douglas_,$(SINEWAVE_TOLERANCES)) \
     16 		   $(addprefix overlaid_sinewave2_visvalingam_,$(SINEWAVE_TOLERANCES)))
     17 GEN3 = $(addsuffix .pdf, \
     18 		   $(addprefix overlaid_chaikin_zeimena_douglas_,$(CHAIKIN_CROSSING_TOLERANCES)) \
     19 		   $(addprefix overlaid_chaikin_zeimena_visvalingam_,$(CHAIKIN_CROSSING_TOLERANCES)))
     20 
     21 .PHONY: all
     22 all: mj-referatas.pdf mj-prezentacija.pdf
     23 
     24 mj-referatas-bundle.pdf: mj-referatas.pdf $(shell git ls-files)
     25 	cp $< .tmp-$@
     26 	for f in $^; do \
     27 		if [ "$$f" = "$<" ]; then continue; fi; \
     28 		pdfattach .tmp-$@ $$f .tmp2-$@; \
     29 		mv .tmp2-$@ .tmp-$@; \
     30 	done
     31 	mv .tmp-$@ $@
     32 
     33 mj-referatas.pdf: mj-referatas.tex version.tex bib.bib zeimena.pdf zeimena-pretty.pdf \
     34 			sinewave1.pdf sinewave2.pdf crossing.pdf $(GEN1) $(GEN2) $(GEN3)
     35 	latexmk -shell-escape -g -pdf $<
     36 
     37 mj-prezentacija.pdf: mj-prezentacija.tex ../../misc/Logo_vilniaus_universitetas.png \
     38 	zeimena.pdf crossing.pdf $(GEN2) images/wang1998line.png
     39 	latexmk -pdf $<
     40 
     41 define algo2img
     42 db/.faux_$(1)_$(2)_%: $(2).sql db/.faux_ready
     43 	./managedb -- --echo-all \
     44 		-v ON_ERROR_STOP=1 \
     45 		-v src=$(1) \
     46 		-v param1=$$* \
     47 		-v tbl=$(1)_$(2)_$$* \
     48 		-f $(2).sql
     49 	touch $$@
     50 db/.chaikin_$(1)_$(2)_%: db/.faux_$(1)_$(2)_% chaikin.sql
     51 	./managedb -- --echo-all \
     52 		-v ON_ERROR_STOP=1 \
     53 		-v src=$(1)_$(2)_$$* \
     54 		-v tbl=chaikin_$(1)_$(2)_$$* \
     55 		-f chaikin.sql
     56 	touch $$@
     57 $(1)_$(2)_%.pdf: layer2img.py db/.faux_$(1)_$(2)_%
     58 	./layer2img.py --group2-table=$(1)_$(2)_$$* --size=$(3) --outfile $$@
     59 endef
     60 
     61 define algo2overlay
     62 overlaid_$(1)_$(2)_%.pdf: layer2img.py db/.faux_$(1)_$(2)_%
     63 	./layer2img.py $(3) --group1-table=$(1) --group2-table=$(1)_$(2)_$$* \
     64 		--outfile $$@
     65 overlaid_chaikin_$(1)_$(2)_%.pdf: layer2img.py db/.chaikin_$(1)_$(2)_%
     66 	./layer2img.py $(3) \
     67 		--group1-table=$(1) \
     68 		--group2-table=chaikin_$(1)_$(2)_$$* \
     69 		--outfile $$@
     70 endef
     71 
     72 define gpkg2pdf
     73 $(1): $(2) ./layer2img.py
     74 	./layer2img.py $(3) --group1-infile=$$< --outfile $(1)
     75 endef
     76 
     77 $(eval $(call algo2img,sinewave2,douglas,$(SINEWAVE_SIZE)))
     78 $(eval $(call algo2img,sinewave2,visvalingam,$(SINEWAVE_SIZE)))
     79 $(eval $(call algo2img,zeimena,douglas,210x297))
     80 $(eval $(call algo2img,zeimena,visvalingam,210x297))
     81 $(eval $(call gpkg2pdf,sinewave1.pdf,sinewave1.gpkg,--size=$(SINEWAVE_SIZE)))
     82 $(eval $(call gpkg2pdf,sinewave2.pdf,sinewave2.gpkg,--size=$(SINEWAVE_SIZE)))
     83 $(eval $(call gpkg2pdf,zeimena.pdf,zeimena.gpkg rectangle.gpkg,\
     84 	--size=134x191 --group2-infile rectangle.gpkg))
     85 $(eval $(call gpkg2pdf,crossing.pdf,zeimena.gpkg,\
     86 	--size=105x74  --group2-infile rectangle.gpkg --clip $(CROSSING)))
     87 $(eval $(call algo2overlay,zeimena,douglas,--size 148x105 --clip $(CROSSING)))
     88 $(eval $(call algo2overlay,zeimena,visvalingam,--size 148x105 --clip $(CROSSING)))
     89 $(eval $(call algo2overlay,sinewave2,douglas,--size $(SINEWAVE_SIZE)))
     90 $(eval $(call algo2overlay,sinewave2,visvalingam,--size $(SINEWAVE_SIZE)))
     91 
     92 sinewave%.gpkg: fig2layer.py
     93 	./fig2layer.py -o $@ sine --numwaves=$*
     94 
     95 rectangle.gpkg: fig2layer.py
     96 	./fig2layer.py -o $@ rect --bounds $(CROSSING)
     97 
     98 db/.faux_ready: zeimena.gpkg sinewave2.gpkg managedb
     99 	-./managedb stop; rm -fr db
    100 	./managedb init
    101 	ogr2ogr -f PostgreSQL "PG:host=127.0.0.1 user=osm dbname=osm" zeimena.gpkg
    102 	ogr2ogr -f PostgreSQL "PG:host=127.0.0.1 user=osm dbname=osm" sinewave2.gpkg
    103 	touch $@
    104 
    105 REF = $(shell git describe --tags --dirty)
    106 GIT_DIR = $(shell git rev-parse --show-toplevel)/.git
    107 version.tex: $(shell git ls-files .) $(GIT_DIR)
    108 	( \
    109 		date '+\gdef\GeneratedAt{%F %T %Z}%'; \
    110 		printf '\gdef\VCDescribe{%s}%%\n' $(REF); \
    111 	) > $@
    112 
    113 # Optional: vizualize and analyze dependencies and artifacts of this Makefile
    114 make.png:
    115 	$(MAKE) -Bnd | grep -Ev 'Makefile|version.tex|.git' | make2graph | dot -Tpng -o $@