Local netbeans changes, 11.3 and jdk location.
[zcl] / Makefile
1
2 dist_VERSION=1.0.99
3 dist_NAME=zcl
4 dist_EXTRA=README                               \
5  build.xml                                      \
6  nbproject/build-impl.xml                       \
7  nbproject/genfiles.properties                  \
8  nbproject/project.properties                   \
9  nbproject/project.xml
10
11 include config.make
12
13 java_MODULES=notzed.zcl notzed.zcl.demo notzed.zcl.fxdemo
14 notzed.zcl.demo_JDEPMOD=notzed.zcl
15
16 notzed.zcl.fxdemo_JDEPMOD=notzed.zcl
17 notzed.zcl.fxdemo_JAVAMODPATH=$(JAVAFX_HOME)/lib
18
19 include java.make
20
21 # ######################################################################
22 # Work in progress idea for java.make extension to create execution templates
23
24 test_demos := $(subst /,.,$(subst .java,,$(shell find src/notzed.zcl.demo/classes -name 'Test*.java' -printf '%P\n')))
25
26 notzed.zcl.demo_DEMOS=au.notzed.zcl.tools.clinfo \
27         $(test_demos)
28
29 notzed.zcl.fxdemo_DEMOS=fxdemo.fract.Mandelbrot fxdemo.fract.Test
30
31 DEMOFLAGS=--add-exports jdk.incubator.foreign/jdk.incubator.foreign.unsafe=notzed.zcl \
32         -Dforeign.restricted=permit
33
34 # module class basename(class)
35 define java_demo=
36 run-$(3): $1
37         $(JAVA_HOME)/bin/java \
38                 $(DEMOFLAGS) \
39                 --module-path $$(subst $$(S),:,bin/modules $(JAVAMODPATH) $$($1_JAVAMODPATH)) \
40                 -m $1/$2 $(ARGV)
41 endef
42 $(foreach module,$(java_MODULES),$(foreach demo,$($(module)_DEMOS),$(eval $(call java_demo,$(module),$(demo),$(lastword $(subst ., ,$(demo)))))))
43
44 # ######################################################################
45 # Work in progress idea for java.make extension to download maven jars
46
47 # server=url, then define server_JARS=publisher:artifact:version
48 maven_HOSTS=central=https://repo1.maven.org/maven2
49
50 central_JARS=junit:junit:4.12 \
51  org.hamcrest:hamcrest-core:1.3
52
53 # owner package version host
54 define maven_func=
55 .lib/$2-$3.jar:
56         mkdir -p .lib
57         wget -O $$@ $(4)/$(subst .,/,$1)/$2/$3/$2-$3.jar
58 .lib/$2-$3.jar.asc: .lib/$2-$3.jar
59         wget -O $$@ $(4)/$(subst .,/,$1)/$2/$3/$2-$3.jar.asc
60         gpg --batch --verify $$@ $$< || ( rm $$@ ; echo "GPG verification failed, you may need to import the public key." ; exit 1 )
61 setup: .lib/$2-$3.jar.asc
62 endef
63
64 $(foreach host,$(maven_HOSTS),\
65   $(foreach nver,$($(firstword $(subst =, ,$(host)))_JARS),\
66    $(eval $(call maven_func,$(word 1,$(subst :, ,$(nver))),$(word 2,$(subst :, ,$(nver))),$(word 3,$(subst :, ,$(nver))),$(lastword $(subst =, ,$(host)))))))
67
68 # ######################################################################
69 # Work in progress idea for java.make extension to run junit
70
71 # TODO: module deps?
72 # TODO: JAVAFLAGS / DEMOFLAGS / TESTFLAGS?
73
74 TESTFLAGS=--add-exports jdk.incubator.foreign/jdk.incubator.foreign.unsafe=notzed.zcl
75
76 #central_JARS+=junit:junit:4.12 \
77 # org.hamcrest:hamcrest-core:1.3
78
79 junit_JARS=.lib/junit-4.12.jar .lib/hamcrest-core-1.3.jar
80
81 define java_tests=
82 ifndef $(1)_TEST_JAVA
83 $(1)_TEST_JAVA := $$(shell find src/$(1)/tests -type f -name '*.java')
84 $(1)_TEST := $$(subst /,.,$$(basename $$(shell find src/$(1)/tests -type f -name '*Test.java' -printf '%P\n')))
85 $(1)_TESTIT := $$(subst /,.,$$(basename $$(shell find src/$(1)/tests -type f -name '*IT.java' -printf '%P\n')))
86 endif
87
88 test: $(1)-test
89 test-it: $(1)-it
90 check: $(1)-test $(1)-it
91 bin/status/$(1).tests: $$($(1)_TEST_JAVA)
92 bin/status/$(1).tests: bin/status/$(1).classes
93 endef
94
95 .PHONY: test test-it check
96
97 $(foreach module,$(java_MODULES),$(if $(wildcard src/$(module)/tests),$(eval $(call java_tests,$(module)))))
98 #$(foreach module,$(java_MODULES),$(if $(wildcard src/$(module)/tests),$(info $(call java_tests,$(module)))))
99
100 # ######################################################################
101
102 # maven format: $(foreach u,$(junit_JARS),.lib/$(word 2,$(subst :, ,$(u)))-$(word 3,$(subst :, ,$(u))).jar)
103 bin/status/%.tests: $(junit_JARS)
104         @install -d $(@D)
105         $(JAVAC) \
106                 --patch-module $*=src/$*/tests \
107                 --add-modules junit \
108                 --add-reads $*=ALL-UNNAMED \
109                 $(JAVACFLAGS) $($*_JAVACFLAGS) \
110                 --module-source-path 'src/*/tests' \
111                 --module-path $(subst $(S),:,.lib bin/modules $(JAVAMODPATH) $($*_JAVAMODPATH)) \
112                 -d bin/tests \
113                 $($*_TEST_JAVA)
114         touch $@
115
116 %-test: bin/status/%.tests
117         $(JAVA) \
118                 --patch-module $*=bin/tests/$* \
119                 --add-modules $* \
120                 --add-modules junit \
121                 --add-reads $*=junit \
122                 --add-reads $*=ALL-UNNAMED \
123                 $(TESTFLAGS) $($*_TESTLAGS) \
124                 --module-path $(subst $(S),:,.lib bin/modules bin/tests $(JAVAMODPATH) $($*_JAVAMODPATH)) \
125                 org.junit.runner.JUnitCore \
126                 $($*_TEST)
127
128 %-it: bin/status/%.tests
129         $(JAVA) \
130                 --patch-module $*=bin/tests/$* \
131                 --add-modules $* \
132                 --add-modules junit \
133                 --add-reads $*=junit \
134                 --add-reads $*=ALL-UNNAMED \
135                 $(TESTFLAGS) $($*_TESTFLAGS) \
136                 --module-path $(subst $(S),:,.lib bin/modules bin/tests $(JAVAMODPATH) $($*_JAVAMODPATH)) \
137                 org.junit.runner.JUnitCore \
138                 $($*_TESTIT)