1#! /usr/bin/gmake -f
2
3# the 'all' target is included from the 'configure'd Makefile
4
5BUILDSOURCES=..
6BUILD=build
7CMAKE=cmake
8NINJA=ninja
9PREFIX=$$HOME/local
10
11.PHONY: build docs bins test tests testbuilds
12
13default: build
14build:
15	@ test -f Makefile || test -d $(BUILD) || (set -x ; mkdir $(BUILD) ; cd $(BUILD) && $(CMAKE) $(BUILDSOURCES) -DCMAKE_INSTALL_PREFIX:PATH=$(PREFIX) $(OPTIONS))
16	@ test -f Makefile || test ! -d $(BUILD) || test ! -f $(BUILD)/Makefile || (set -x ; cd $(BUILD) && $(MAKE) all)
17	@ test -f Makefile || test ! -d $(BUILD) || test ! -f $(BUILD)/rules.ninja || (set -x ; cd $(BUILD) && $(NINJA) all)
18	@ test -f Makefile || test ! -d $(BUILD) || test ! -f $(BUILD)/Makefile || echo 'DONE (cd $(BUILD) && $(MAKE) all) - please run (cd $(BUILD) && $(MAKE) check VERBOSE=1) now'
19	@ test -f Makefile || test ! -d $(BUILD) || test ! -f $(BUILD)/rules.ninja || echo 'DONE (cd $(BUILD) && $(NINJA) all) - please run (cd $(BUILD) && $(NINJA) check) now'
20
21new: ; rm -rf $(BUILD); $(MAKE) build
22
23ninja: ; rm -rf $(BUILD) && $(MAKE) build OPTIONS=-GNinja
24nmake: ; rm -rf $(BUILD) && $(MAKE) build OPTIONS=-GNmake
25cmake: ; rm -rf $(BUILD) && $(MAKE) build "OPTIONS=-DZZIP_MANPAGES=OFF -DZZIP_INSTALL_BINS=OFF -DZZIP_TESTCVE=OFF"
26
27check checks:
28	@ test ! -f $(BUILD)/Makefile    || (set -x; cd $(BUILD) && $(MAKE) $@ VERBOSE=1)
29	@ test ! -f $(BUILD)/rules.ninja || (set -x; cd $(BUILD) && $(NINJA) $@)
30install docs:
31	@ test ! -f $(BUILD)/Make        || (set -x; cd $(BUILD) && $(MAKE) $@)
32	@ test ! -f $(BUILD)/rules.ninja || (set -x; cd $(BUILD) && $(NINJA) $@)
33
34un uninstalls:
35	@ case "$(PREFIX)" in */local) echo rm -rf "'$(PREFIX)'" ; rm -rf "$(PREFIX)" ;; *) echo skipped rm -rf "'$(PREFIX)'" ;; esac
36
37rms: ; docker images --format '{{.Repository}} {{.ID}}' | grep localhost:5000/systemctl/ | cut -d ' ' -f 2 | xargs --no-run-if-empty docker rmi -f
38rmi: ; docker images --format '{{.Repository}} {{.ID}}' | grep localhost:5000/zziplib/ | cut -d ' ' -f 2 | xargs --no-run-if-empty docker rmi -f
39rmf: ; docker ps -a --format '{{.Image}} {{.ID}}' | grep localhost:5000/zziplib/ | cut -d ' ' -f 2 | xargs --no-run-if-empty docker rm -f
40
41st_%: ; python3 testbuilds.py te$@ -vv --no-cache
42tests:  ; python3 testbuilds.py -vv
43testbuilds: ; python3 testbuilds.py -vv --no-cache
44test_%: ; cd build/test && python3 ../../test/zziptests.py $@ -vv
45
46downloads:
47	- rm -rf test/tmp.download build/test/tmp.download
48	cd build/test && python3 ../../test/zziptests.py --downloadonly -vv
49
50version:
51	oldv=`sed -e '/zziplib.VERSION/!d' -e 's:.*zziplib.VERSION."::' -e 's:".*::' CMakeLists.txt` \
52	; oldr=`echo $$oldv | sed -e 's:.*[.]::'` ; newr=`expr $$oldr + 1` \
53	; newv=`echo $$oldv | sed -e "s:[.]$$oldr\$$:.$$newr:"` \
54	; echo "$$oldv -> $$newv" \
55	; sed -i -e "s:$$oldv:$$newv:" zziplib.spec testbuilds.py \
56	; sed -i -e "s:$$oldv:$$newv:" */CMakeLists.txt \
57	; sed -i -e "s:$$oldv:$$newv:" CMakeLists.txt \
58	; git diff -U0
59
60-include GNUmakefile.win10
61-include docker_mirror.mk
62