source: trunk/icedtea-web/Makefile.am@ 433

Last change on this file since 433 was 429, checked in by dmik, 11 years ago

icedtea-web: Merge version 1.5.1 from vendor to trunk.

File size: 70.2 KB
Line 
1# Source directories
2
3export TOP_BUILD_DIR = $(abs_top_builddir)
4
5export NETX_DIR = $(abs_top_builddir)/netx.build
6export NETX_SRCDIR = $(abs_top_srcdir)/netx
7export NETX_RESOURCE_DIR=$(NETX_SRCDIR)/net/sourceforge/jnlp/resources
8
9export REPORT_STYLES_DIRNAME=report-styles
10
11export TESTS_SRCDIR=$(abs_top_srcdir)/tests
12export TESTS_DIR=$(abs_top_builddir)/tests.build
13
14export NETX_UNIT_TEST_SRCDIR=$(TESTS_SRCDIR)/netx/unit
15export NETX_TEST_DIR=$(TESTS_DIR)/netx
16export NETX_UNIT_TEST_DIR=$(NETX_TEST_DIR)/unit
17
18export JUNIT_RUNNER_DIR=$(TESTS_DIR)/junit-runner
19export JUNIT_RUNNER_SRCDIR=$(TESTS_SRCDIR)/junit-runner
20
21export JACOCO_OPERATOR_DIR=$(TESTS_DIR)/jacoco-operator
22export JACOCO_OPERATOR_SRCDIR=$(TESTS_SRCDIR)/jacoco-operator
23
24export TEST_EXTENSIONS_SRCDIR=$(TESTS_SRCDIR)/test-extensions
25export TEST_EXTENSIONS_TESTS_SRCDIR=$(TESTS_SRCDIR)/test-extensions-tests
26export REPRODUCERS_TESTS_SRCDIR=$(TESTS_SRCDIR)/reproducers
27export TEST_EXTENSIONS_DIR=$(TESTS_DIR)/test-extensions
28export CPP_UNITTEST_FRAMEWORK_SRCDIR=$(TESTS_SRCDIR)/UnitTest++
29export CPP_UNITTEST_SRCDIR=$(TESTS_SRCDIR)/cpp-unit-tests
30export CPP_UNITTEST_DIR=$(TESTS_DIR)/cpp-unit-tests
31export TEST_EXTENSIONS_COMPATIBILITY_SYMLINK=$(TESTS_DIR)/netx/jnlp_testsengine
32export TEST_EXTENSIONS_TESTS_DIR=$(TESTS_DIR)/test-extensions-tests
33export REPRODUCERS_TESTS_SERVER_DEPLOYDIR=$(TESTS_DIR)/reproducers_test_server_deploydir
34export REPRODUCERS_BUILD_DIR=$(TESTS_DIR)/reproducers.classes
35export PRIVATE_KEYSTORE_NAME=teststore.ks
36export PRIVATE_KEYSTORE_PASS=123456789
37export EXPORTED_TEST_CERT_PREFIX=icedteatests
38export EXPORTED_TEST_CERT_SUFFIX=crt
39export TEST_CERT_ALIAS=icedteaweb
40export PUBLIC_KEYSTORE_STUB=icedtea-web/security/trusted.certs
41export PUBLIC_KEYSTORE_PASS=changeit
42export SOFTKILLER=softkiller
43
44export JUNIT_RUNNER_JAR=$(abs_top_builddir)/junit-runner.jar
45export UNIT_CLASS_NAMES = $(abs_top_builddir)/unit_class_names
46export REPRODUCERS_CLASS_NAMES = $(abs_top_builddir)/reproducers_class_names
47export REPRODUCERS_CLASS_WHITELIST = $(abs_top_srcdir)/netx-dist-tests-whitelist
48export EMMA_JAVA_ARGS=-Xmx2G
49export EMMA_MODIFIED_FILES=tests-output.xml ServerAccess-logs.xml stdout.log stderr.log all.log
50export EMMA_BACKUP_SUFFIX=_noEmma
51export EMMA_SUFFIX=_withEmma
52export META_MANIFEST = META-INF/MANIFEST.MF
53export SIGNED_REPRODUCERS=signed signed2
54export SIMPLE_REPRODUCERS=simple
55export CUSTOM_REPRODUCERS=custom
56export ALL_NONCUSTOM_REPRODUCERS=$(SIMPLE_REPRODUCERS) $(SIGNED_REPRODUCERS)
57export ALL_REPRODUCERS=$(ALL_NONCUSTOM_REPRODUCERS) $(CUSTOM_REPRODUCERS)
58
59export JACOCO_PATH:=$(shell dirname "$(JACOCO_JAR)")
60export JACOCO_AGENT=org.jacoco.agent.jar
61export JACOCO_ANT=org.jacoco.ant.jar
62export JACOCO_REPORT=org.jacoco.report.jar
63export JACOCO_AGENTRT=org.jacoco.agent.rt.jar
64export JACOCO_CORE=org.jacoco.core.jar
65export JACOCO_JAVAWS_RESULTS=$(TEST_EXTENSIONS_DIR)/jacoco_javaws.exec
66export JACOCO_PLUGIN_RESULTS=$(TEST_EXTENSIONS_DIR)/jacoco_plugin.exec
67export JACOCO_CLASSPATH=$(JACOCO_PATH)/$(JACOCO_CORE):$(JACOCO_PATH)/$(JACOCO_AGENT):$(JACOCO_PATH)/$(JACOCO_REPORT):$(JACOCO_PATH)/$(JACOCO_AGENTRT):$(JACOCO_PATH)/$(JACOCO_ANT):$(ASM_JAR)
68export JACOCO_AGENT_SWITCH_BODY=-javaagent:$(JACOCO_PATH)/$(JACOCO_AGENTRT)
69export JACOCO_BASE_EXCLUDE=org.junit.*:junit.*
70export JACOCO_ADVANCED_EXCLUDE=:*jacoco*:java.lang.*:java.reflect.*:java.util.*:sun.reflect.*
71export JACOCO_AGENT_SWITCH="$(JACOCO_AGENT_SWITCH_BODY)=excludes=$(JACOCO_BASE_EXCLUDE)"
72export JACOCO_AGENT_JAVAWS_SWITCH=\"$(JACOCO_AGENT_SWITCH_BODY)=excludes=$(JACOCO_BASE_EXCLUDE)$(JACOCO_ADVANCED_EXCLUDE),xboot=true,destfile=$(JACOCO_JAVAWS_RESULTS)\"
73export JACOCO_AGENT_PLUGIN_SWITCH=\"$(JACOCO_AGENT_SWITCH_BODY)=excludes=$(JACOCO_BASE_EXCLUDE)$(JACOCO_ADVANCED_EXCLUDE),xboot=true,destfile=$(JACOCO_PLUGIN_RESULTS)\"
74export JACOCO_OPERATOR_EXEC=$(BOOT_DIR)/bin/java $(EMMA_JAVA_ARGS) -cp $(JACOCO_OPERATOR_DIR):$(JACOCO_CLASSPATH):. org.jacoco.operator.Main
75
76# linking variables
77export PLUGIN_LINK_NAME=libjavaplugin.so
78export MOZILLA_LOCAL_PLUGINDIR=${HOME}/.mozilla/plugins
79export MOZILLA_GLOBAL64_PLUGINDIR=/usr/lib64/mozilla/plugins
80export MOZILLA_GLOBAL32_PLUGINDIR=/usr/lib/mozilla/plugins
81export OPERA_GLOBAL64_PLUGINDIR=/usr/lib64/opera/plugins
82export OPERA_GLOBAL32_PLUGINDIR=/usr/lib/opera/plugins
83export BUILT_PLUGIN_LIBRARY=IcedTeaPlugin.so
84export CPP_UNITTEST_FRAMEWORK_BUILDDIR=$(CPP_UNITTEST_DIR)/UnitTest++
85export CPP_UNITTEST_FRAMEWORK_LIB_NAME=libUnitTest++.a
86export CPP_UNITTEST_FRAMEWORK_LIB=$(CPP_UNITTEST_FRAMEWORK_BUILDDIR)/$(CPP_UNITTEST_FRAMEWORK_LIB_NAME)
87export CPP_UNITTEST_EXECUTABLE=$(CPP_UNITTEST_DIR)/IcedTeaPluginUnitTests
88export MOZILLA_LOCAL_BACKUP_FILE=${HOME}/$(PLUGIN_LINK_NAME).origU
89export MOZILLA_GLOBAL_BACKUP_FILE=${HOME}/$(PLUGIN_LINK_NAME).origMG
90export OPERA_GLOBAL_BACKUP_FILE=${HOME}/$(PLUGIN_LINK_NAME).origOG
91export MOZILLA_FAMILY_TEST= "$(FIREFOX)" != "" -o "$(CHROMIUM)" != "" -o "$(CHROME)" != "" -o "$(MIDORI)" != "" -o "$(EPIPHANY)" != ""
92# end of linking variables
93
94# Build directories
95
96export BOOT_DIR = $(abs_top_builddir)/bootstrap/jdk1.6.0
97
98if WITH_RHINO
99 RHINO_RUNTIME=:$(RHINO_JAR)
100else
101 RHINO_RUNTIME=
102endif
103
104export RUNTIME = $(BOOT_DIR)/jre/lib/rt.jar:$(BOOT_DIR)/jre/lib/jsse.jar$(RHINO_RUNTIME):$(BOOT_DIR)/jre/lib/resources.jar
105
106# Flags
107export IT_CFLAGS=$(CFLAGS) $(ARCHFLAG)
108export IT_JAVAC_SETTINGS=-g -encoding utf-8 $(JAVACFLAGS) $(MEMORY_LIMIT) $(PREFER_SOURCE)
109export IT_LANGUAGE_SOURCE_VERSION=6
110export IT_CLASS_TARGET_VERSION=6
111export IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) -target $(IT_CLASS_TARGET_VERSION)
112
113#
114# We need the jars in bootclasspath for a couple of reasons
115# - we use classes (in the sun.applet package) loaded by the bootclassloader
116# using another classloader to load classes from the same package causes an
117# IllegalAccessException
118# - we want full privileges
119#
120export LAUNCHER_BOOTCLASSPATH="-Xbootclasspath/a:$(datadir)/$(PACKAGE_NAME)/netx.jar$(RHINO_RUNTIME):$(TAGSOUP_JAR)"
121export PLUGIN_BOOTCLASSPATH='"-Xbootclasspath/a:$(datadir)/$(PACKAGE_NAME)/netx.jar:$(datadir)/$(PACKAGE_NAME)/plugin.jar$(RHINO_RUNTIME):$(TAGSOUP_JAR)"'
122export PLUGIN_COVERAGE_BOOTCLASSPATH='"-Xbootclasspath/a:$(datadir)/$(PACKAGE_NAME)/netx.jar:$(datadir)/$(PACKAGE_NAME)/plugin.jar$(RHINO_RUNTIME):$(JACOCO_CLASSPATH):$(TAGSOUP_JAR)"'
123
124# Fake update version to work with the Deployment Toolkit script used by Oracle
125# http://download.oracle.com/javase/tutorial/deployment/deploymentInDepth/depltoolkit_index.html
126export JDK_UPDATE_VERSION=50
127
128# Sources list
129
130export PLUGIN_TEST_SRCS = $(abs_top_srcdir)/plugin/tests/LiveConnect/*.java
131
132export NETX_PKGS = javax.jnlp net.sourceforge.nanoxml net.sourceforge.jnlp \
133 net.sourceforge.jnlp.about \
134 net.sourceforge.jnlp.cache net.sourceforge.jnlp.config \
135 net.sourceforge.jnlp.controlpanel net.sourceforge.jnlp.event \
136 net.sourceforge.jnlp.runtime net.sourceforge.jnlp.security \
137 net.sourceforge.jnlp.security.viewer net.sourceforge.jnlp.services \
138 net.sourceforge.jnlp.tools net.sourceforge.jnlp.util \
139 sun.applet
140
141NETX_EXCLUDE_SRCS=
142
143# Conditional defintions
144if HAVE_TAGSOUP
145NETX_CLASSPATH_ARG=-classpath $(TAGSOUP_JAR)
146else
147NETX_EXCLUDE_SRCS+=net.sourceforge.jnlp.MalformedXMLParser.java
148endif
149
150if ENABLE_PLUGIN
151export ICEDTEAPLUGIN_CLEAN = clean-IcedTeaPlugin
152export LIVECONNECT_DIR = netscape sun/applet
153export PLUGIN_DIR=$(abs_top_builddir)/plugin/icedteanp
154export PLUGIN_SRCDIR=$(abs_top_srcdir)/plugin/icedteanp
155export LIVECONNECT_SRCS = $(PLUGIN_SRCDIR)/java
156export ICEDTEAPLUGIN_TARGET = $(PLUGIN_DIR)/$(BUILT_PLUGIN_LIBRARY) stamps/liveconnect-dist.stamp
157export PLUGIN_PKGS = sun.applet netscape.security netscape.javascript
158#this is for plugin testcoverage
159export COVERABLE_PLUGIN_DIR=$(TESTS_DIR)/icedteanp-build-with-jacoco
160endif
161
162if CP_SUPPORTS_REFLINK
163 REFLINK = --reflink=auto
164endif
165
166if SRC_DIR_HARDLINKABLE
167 SRC_DIR_LINK = -l
168else
169 SRC_DIR_LINK = $(REFLINK)
170endif
171
172if ENABLE_DOCS
173JAVADOC_OPTS=-use -keywords -encoding UTF-8 -splitIndex \
174 -bottom '<font size="-1"> <a href="http://icedtea.classpath.org/bugzilla">Submit a bug or feature</a></font>'
175if JAVADOC_SUPPORTS_J_OPTIONS
176JAVADOC_MEM_OPTS=-J-Xmx1024m -J-Xms128m
177endif
178endif
179
180if WITH_RHINO
181 RHINO_TESTS=stamps/check-pac-functions.stamp
182else
183 RHINO_TESTS=
184endif
185
186if WITH_JUNIT
187 JUNIT_TESTS=stamps/run-netx-unit-tests.stamp
188else
189 JUNIT_TESTS=
190endif
191
192
193export PLUGIN_VERSION = IcedTea-Web $(FULL_VERSION)
194
195export EXTRA_DIST = $(top_srcdir)/netx $(top_srcdir)/plugin javaws.png javaws.desktop.in policyeditor.desktop.in \
196 itweb-settings.desktop.in launcher $(top_srcdir)/tests html-gen.sh netx-dist-tests-whitelist NEW_LINE_IFS
197
198# reproducers `D`shortcuts
199export DTEST_SERVER=-Dtest.server.dir=$(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)
200export DJAVAWS_BUILD=-Djavaws.build.bin=$(DESTDIR)$(bindir)/$(javaws)
201export DBROWSERS=-Dused.browsers=$(FIREFOX):$(CHROMIUM):$(CHROME):$(OPERA):$(MIDORI):$(EPIPHANY)
202export REPRODUCERS_DPARAMETERS= $(DTEST_SERVER) $(DJAVAWS_BUILD) $(DBROWSERS) $(BROWSER_TESTS_MODIFICATION)
203# end of `D`shortcuts
204
205#exported autoconf copies
206export EXPORTED_JAVAC=$(BOOT_DIR)/bin/javac
207#end of exported autoconf copies
208
209# binary names
210javaws:= $(shell echo javaws | sed '@program_transform_name@')
211itweb_settings:= $(shell echo itweb-settings | sed '@program_transform_name@')
212policyeditor:= $(shell echo policyeditor | sed '@program_transform_name@')
213
214# the launcher needs to know $(bindir) and $(datadir) which can be different at
215# make-time from configure-time
216edit_launcher_script = sed \
217 -e "s|[@]LAUNCHER_BOOTCLASSPATH[@]|$(LAUNCHER_BOOTCLASSPATH)|g" \
218 -e "s|[@]JAVAWS_SPLASH_LOCATION[@]|$(datadir)/$(PACKAGE_NAME)/javaws_splash.png|g" \
219 -e "s|[@]JAVA[@]|$(JAVA)|g" \
220 -e "s|[@]JRE[@]|$(SYSTEM_JRE_DIR)|g" \
221 -e "s|[@]MAIN_CLASS[@]|$${MAIN_CLASS}|g" \
222 -e "s|[@]BIN_LOCATION[@]|$${BIN_LOCATION}|g" \
223 -e "s|[@]PROGRAM_NAME[@]|$${PROGRAM_NAME}|g"
224
225# Top-Level Targets
226# =================
227
228all-local: stamps/netx-dist.stamp stamps/plugin.stamp launcher.build/$(javaws) \
229 javaws.desktop stamps/docs.stamp launcher.build/$(itweb_settings) itweb-settings.desktop \
230 launcher.build/$(policyeditor) policyeditor.desktop
231
232check-local: $(RHINO_TESTS) $(JUNIT_TESTS)
233
234clean-local: clean-netx clean-plugin clean-liveconnect \
235 clean-native-ecj clean-launchers clean-desktop-files clean-docs clean-tests clean-bootstrap-directory
236 if [ -e stamps ] ; then \
237 rmdir stamps ; \
238 fi
239
240.PHONY: clean-IcedTeaPlugin clean-add-netx clean-add-netx-debug clean-add-plugin clean-add-plugin-debug \
241 clean-bootstrap-directory clean-native-ecj clean-desktop-files clean-netx-docs clean-docs clean-plugin-docs \
242 clean-tests check-local clean-launchers stamps/check-pac-functions.stamp stamps/run-netx-unit-tests.stamp clean-netx-tests \
243 clean-junit-runner clean-netx-unit-tests
244
245install-exec-local:
246 ${mkinstalldirs} $(DESTDIR)$(bindir) $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/ $(DESTDIR)$(libdir)
247if ENABLE_PLUGIN
248 ${INSTALL_PROGRAM} $(PLUGIN_DIR)/$(BUILT_PLUGIN_LIBRARY) $(DESTDIR)$(libdir)
249 ${INSTALL_DATA} $(abs_top_builddir)/liveconnect/lib/classes.jar $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/plugin.jar
250endif
251 ${INSTALL_DATA} $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx.jar
252 ${INSTALL_DATA} $(NETX_SRCDIR)/javaws_splash.png $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/javaws_splash.png
253 ${INSTALL_PROGRAM} launcher.build/$(javaws) $(DESTDIR)$(bindir)
254 ${INSTALL_PROGRAM} launcher.build/$(itweb_settings) $(DESTDIR)$(bindir)
255 ${INSTALL_PROGRAM} launcher.build/$(policyeditor) $(DESTDIR)$(bindir)
256
257install-data-local:
258 ${mkinstalldirs} -d $(DESTDIR)$(mandir)/man1
259 ${INSTALL_DATA} $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(mandir)/man1
260 ${INSTALL_DATA} $(NETX_SRCDIR)/itweb-settings.1 $(DESTDIR)$(mandir)/man1
261 ${INSTALL_DATA} $(NETX_SRCDIR)/policyeditor.1 $(DESTDIR)$(mandir)/man1
262if ENABLE_DOCS
263 ${mkinstalldirs} $(DESTDIR)$(htmldir)
264 (cd ${abs_top_builddir}/docs/netx; \
265 for files in $$(find . -type f); \
266 do \
267 ${INSTALL_DATA} -D $${files} $(DESTDIR)$(htmldir)/netx/$${files}; \
268 done)
269if ENABLE_PLUGIN
270 (cd ${abs_top_builddir}/docs/plugin; \
271 for files in $$(find . -type f); \
272 do \
273 ${INSTALL_DATA} -D $${files} $(DESTDIR)$(htmldir)/plugin/$${files}; \
274 done)
275endif
276endif
277
278uninstall-local:
279 rm -f $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY)
280 rm -f $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/plugin.jar
281 rm -f $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx.jar
282 rm -f $(DESTDIR)$(mandir)/man1/javaws.1
283 rm -f $(DESTDIR)$(mandir)/man1/itweb-settings.1
284 rm -f $(DESTDIR)$(mandir)/man1/policyeditor.1
285 rm -f $(DESTDIR)$(bindir)/$(javaws)
286 rm -f $(DESTDIR)$(bindir)/$(itweb_settings)
287 rm -f $(DESTDIR)$(bindir)/$(policyeditor)
288 rm -rf $(DESTDIR)$(htmldir)
289
290# Plugin
291
292if ENABLE_PLUGIN
293# IcedTeaPlugin.so.
294# Separate compile and link invocations to ensure intermediate object
295# is listed before -l options. See:
296# http://developer.mozilla.org/en/docs/XPCOM_Glue
297
298PLUGIN_SRC=IcedTeaNPPlugin.cc IcedTeaScriptablePluginObject.cc \
299 IcedTeaJavaRequestProcessor.cc IcedTeaPluginRequestProcessor.cc \
300 IcedTeaPluginUtils.cc IcedTeaParseProperties.cc
301
302PLUGIN_OBJECTS=IcedTeaNPPlugin.o IcedTeaScriptablePluginObject.o \
303 IcedTeaJavaRequestProcessor.o IcedTeaPluginRequestProcessor.o \
304 IcedTeaPluginUtils.o IcedTeaParseProperties.o
305
306$(PLUGIN_DIR)/%.o: $(PLUGIN_SRCDIR)/%.cc
307 mkdir -p $(PLUGIN_DIR) && \
308 cd $(PLUGIN_DIR) && \
309 $(CXX) $(CXXFLAGS) \
310 $(DEFS) $(VERSION_DEFS) \
311 -DJDK_UPDATE_VERSION="\"$(JDK_UPDATE_VERSION)\"" \
312 -DPLUGIN_NAME="\"IcedTea-Web Plugin\"" \
313 -DPLUGIN_VERSION="\"$(PLUGIN_VERSION)\"" \
314 -DPACKAGE_URL="\"$(PACKAGE_URL)\"" \
315 -DMOZILLA_VERSION_COLLAPSED="$(MOZILLA_VERSION_COLLAPSED)" \
316 -DICEDTEA_WEB_JRE="\"$(SYSTEM_JRE_DIR)\"" \
317 -DPLUGIN_BOOTCLASSPATH=$(PLUGIN_BOOTCLASSPATH) \
318 $(GLIB_CFLAGS) \
319 $(MOZILLA_CFLAGS) \
320 -fvisibility=hidden \
321 -fPIC -o $@ -c $<
322
323$(PLUGIN_DIR)/$(BUILT_PLUGIN_LIBRARY): $(addprefix $(PLUGIN_DIR)/,$(PLUGIN_OBJECTS))
324 cd $(PLUGIN_DIR) && \
325 $(CXX) $(CXXFLAGS) \
326 $(PLUGIN_OBJECTS) \
327 $(GLIB_LIBS) \
328 $(MOZILLA_LIBS) \
329 -shared -o $@
330
331# Start of CPP Unit test targets
332
333# Note that UnitTest++ has its own makefile, however this is avoided because it creates an in-source build.
334$(CPP_UNITTEST_FRAMEWORK_LIB): $(CPP_UNITTEST_FRAMEWORK_SRCDIR)
335 mkdir -p $(CPP_UNITTEST_FRAMEWORK_BUILDDIR) && \
336 pushd $(CPP_UNITTEST_FRAMEWORK_SRCDIR) && \
337 for cppfile in $$(find $(CPP_UNITTEST_FRAMEWORK_SRCDIR) -name '*.cpp') ; \
338 do \
339 objfile="$(CPP_UNITTEST_FRAMEWORK_BUILDDIR)/$$(basename $${cppfile%.cpp}).o" ; \
340 $(CXX) $(CXXFLAGS) -c $$cppfile -o $$objfile || exit 1 ; \
341 done ; \
342 ar cr $(CPP_UNITTEST_FRAMEWORK_LIB) $(CPP_UNITTEST_FRAMEWORK_BUILDDIR)/*.o ; \
343 popd
344
345clean-unittest++:
346 rm -f $(CPP_UNITTEST_FRAMEWORK_BUILDDIR)/*.o
347 rm -f $(CPP_UNITTEST_FRAMEWORK_LIB)
348 if [ -e $(CPP_UNITTEST_FRAMEWORK_BUILDDIR) ] ; then \
349 rmdir $(CPP_UNITTEST_FRAMEWORK_BUILDDIR) ; \
350 fi
351
352stamps/cpp-unit-tests-compile.stamp: $(CPP_UNITTEST_FRAMEWORK_LIB) $(CPP_UNITTEST_SRCDIR) $(addprefix $(PLUGIN_DIR)/,$(PLUGIN_OBJECTS))
353 mkdir -p $(CPP_UNITTEST_DIR) && \
354 pushd $(CPP_UNITTEST_SRCDIR) && \
355 for cppfile in $$(find $(CPP_UNITTEST_SRCDIR) -name '*.cc') ; \
356 do \
357 objfile="$(CPP_UNITTEST_DIR)/$$(basename $${cppfile%.cc}).o" ; \
358 echo "Compiling $$cppfile to $$objfile"; \
359 $(CXX) $(CXXFLAGS) \
360 $(DEFS) $(VERSION_DEFS) \
361 -DJDK_UPDATE_VERSION="\"$(JDK_UPDATE_VERSION)\"" \
362 -DPLUGIN_NAME="\"IcedTea-Web Plugin\"" \
363 -DPLUGIN_VERSION="\"$(PLUGIN_VERSION)\"" \
364 -DPACKAGE_URL="\"$(PACKAGE_URL)\"" \
365 -DMOZILLA_VERSION_COLLAPSED="$(MOZILLA_VERSION_COLLAPSED)" \
366 -DICEDTEA_WEB_JRE="\"$(SYSTEM_JRE_DIR)\"" \
367 -DPLUGIN_BOOTCLASSPATH=$(PLUGIN_BOOTCLASSPATH) \
368 $(GLIB_CFLAGS) \
369 $(MOZILLA_CFLAGS) \
370 "-I$(CPP_UNITTEST_FRAMEWORK_SRCDIR)/src" \
371 "-I$(PLUGIN_SRCDIR)" \
372 -o $$objfile -c $$cppfile || exit 1 ; \
373 done ; \
374 popd ; \
375 mkdir -p stamps ; \
376 touch $@
377
378$(CPP_UNITTEST_EXECUTABLE): $(CPP_UNITTEST_FRAMEWORK_LIB) stamps/cpp-unit-tests-compile.stamp
379 cd $(CPP_UNITTEST_DIR) && \
380 $(CXX) $(CXXFLAGS) \
381 $(addprefix $(PLUGIN_DIR)/,$(PLUGIN_OBJECTS)) \
382 $(CPP_UNITTEST_DIR)/*.o \
383 -lrt \
384 -lpthread \
385 $(GLIB_LIBS) \
386 $(MOZILLA_LIBS) \
387 $(CPP_UNITTEST_FRAMEWORK_LIB)\
388 $(BUILT_CPP_UNIT_TEST_FRAMEWORK) -o $@
389
390clean-cpp-unit-tests:
391 rm -f stamps/cpp-unit-tests-compile.stamp
392 rm -f $(CPP_UNITTEST_EXECUTABLE)
393 rm -f $(CPP_UNITTEST_DIR)/*.o
394
395run-cpp-unit-tests: $(CPP_UNITTEST_EXECUTABLE)
396 $(CPP_UNITTEST_EXECUTABLE)
397
398# End of CPP Unit test targets
399
400clean-IcedTeaPlugin:
401 rm -f $(PLUGIN_DIR)/*.o
402 rm -f $(PLUGIN_DIR)/$(BUILT_PLUGIN_LIBRARY)
403 if [ $(abs_top_srcdir) != $(abs_top_builddir) ]; then \
404 if [ -e $(abs_top_builddir)/plugin/icedteanp ] ; then \
405 rmdir $(abs_top_builddir)/plugin/icedteanp ; \
406 rmdir $(abs_top_builddir)/plugin ; \
407 fi ; \
408 fi
409endif
410
411stamps/plugin.stamp: $(ICEDTEAPLUGIN_TARGET)
412 mkdir -p stamps
413 touch stamps/plugin.stamp
414
415clean-plugin: $(ICEDTEAPLUGIN_CLEAN)
416 rm -f stamps/plugin.stamp
417
418liveconnect-source-files.txt:
419 if test "x${LIVECONNECT_DIR}" != x; then \
420 find $(LIVECONNECT_SRCS) -name '*.java' | sort > $@ ; \
421 sed -i '/_OS2/ d' $@
422 fi
423 touch $@
424
425stamps/liveconnect.stamp: liveconnect-source-files.txt stamps/netx.stamp
426 if test "x${LIVECONNECT_DIR}" != x; then \
427 mkdir -p $(abs_top_builddir)/liveconnect && \
428 $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
429 -d $(abs_top_builddir)/liveconnect \
430 -bootclasspath $(NETX_DIR):$(RUNTIME) \
431 $(NETX_CLASSPATH_ARG) \
432 -sourcepath $(LIVECONNECT_SRCS) \
433 @liveconnect-source-files.txt ; \
434 fi
435 mkdir -p stamps
436 touch $@
437
438stamps/liveconnect-dist.stamp: stamps/liveconnect.stamp
439 if test "x${LIVECONNECT_DIR}" != x; then \
440 (cd $(abs_top_builddir)/liveconnect ; \
441 mkdir -p lib ; \
442 $(BOOT_DIR)/bin/jar cf lib/classes.jar $(LIVECONNECT_DIR) ; \
443 cp -pPR $(SRC_DIR_LINK) $(LIVECONNECT_SRCS) src; \
444 find src -type f -exec chmod 640 '{}' ';' -o -type d -exec chmod 750 '{}' ';'; \
445 cd src ; \
446 $(ZIP) -qr $(abs_top_builddir)/liveconnect/lib/src.zip $(LIVECONNECT_DIR) ) ; \
447 fi
448 mkdir -p stamps
449 touch $@
450
451clean-liveconnect:
452 rm -rf $(abs_top_builddir)/liveconnect
453 rm -f stamps/liveconnect-dist.stamp
454 rm -f liveconnect-source-files.txt
455 rm -f stamps/liveconnect.stamp
456
457# NetX
458# requires availability of OpenJDK source code including
459# a patch applied to sun.plugin.AppletViewerPanel and generated sources
460
461netx-source-files.txt:
462 find $(NETX_SRCDIR) -name '*.java' | sort > $@ ; \
463 for src in $(NETX_EXCLUDE_SRCS) ; \
464 do \
465 sed -i "/$${src}/ d" $@ ; \
466 done
467if !WITH_RHINO
468 sed -i '/RhinoBasedPacEvaluator/ d' $@
469endif
470if !HAVE_JAVA7
471 sed -i '/VariableX509TrustManagerJDK7/ d' $@
472endif
473
474stamps/netx-html-gen.stamp:
475 (cd $$NETX_SRCDIR/..; \
476 mkdir -p html-gen; \
477 cp AUTHORS NEWS COPYING ChangeLog html-gen/; \
478 export HTML_GEN_DEBUG=true; \
479 bash html-gen.sh 36; \
480 unset HTML_GEN_DEBUG)
481 ${INSTALL_DATA} $(NETX_SRCDIR)/../html-gen/*.html $(NETX_RESOURCE_DIR)
482 rm -r $(NETX_SRCDIR)/../html-gen/
483 mkdir -p stamps
484 touch $@
485
486stamps/netx.stamp: netx-source-files.txt stamps/bootstrap-directory.stamp stamps/netx-html-gen.stamp
487 mkdir -p $(NETX_DIR)
488 $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
489 -d $(NETX_DIR) \
490 -sourcepath $(NETX_SRCDIR) \
491 -bootclasspath $(RUNTIME) \
492 $(NETX_CLASSPATH_ARG) \
493 @netx-source-files.txt
494 (cd $(NETX_RESOURCE_DIR); \
495 for files in $$(find . -type f); \
496 do \
497 ${INSTALL_DATA} -D $${files} \
498 $(NETX_DIR)/net/sourceforge/jnlp/resources/$${files}; \
499 done)
500 cp -a $(NETX_SRCDIR)/net/sourceforge/jnlp/runtime/pac-funcs.js \
501 $(NETX_DIR)/net/sourceforge/jnlp/runtime
502 cp -a build.properties $(NETX_DIR)/net/sourceforge/jnlp/
503 mkdir -p stamps
504 touch $@
505
506stamps/netx-dist.stamp: stamps/netx.stamp $(abs_top_builddir)/netx.manifest
507 (cd $(NETX_DIR) ; \
508 mkdir -p lib ; \
509 $(BOOT_DIR)/bin/jar cfm lib/classes.jar \
510 $(abs_top_builddir)/netx.manifest javax/jnlp net sun; \
511 cp -pPR $(SRC_DIR_LINK) $(NETX_SRCDIR) src; \
512 find src -type f -exec chmod 640 '{}' ';' -o -type d -exec chmod 750 '{}' ';'; \
513 cd src ; \
514 $(ZIP) -qr $(NETX_DIR)/lib/src.zip javax net sun)
515 mkdir -p stamps
516 touch $@
517
518clean-netx:
519 rm -rf $(NETX_DIR)
520 rm -f stamps/netx-dist.stamp
521 rm -f netx-source-files.txt
522 rm -f stamps/netx.stamp
523 rm -f stamps/netx-html-gen.stamp
524 rm -f $(NETX_RESOURCE_DIR)/{NEWS,AUTHORS,COPYING,ChangeLog}.html
525
526clean-desktop-files:
527 rm -f javaws.desktop
528 rm -f itweb-settings.desktop
529
530launcher.build/$(javaws): launcher/launchers.in
531 mkdir -p launcher.build
532 MAIN_CLASS=net.sourceforge.jnlp.runtime.Boot ;\
533 BIN_LOCATION=$(bindir)/$(javaws) ;\
534 PROGRAM_NAME=$(javaws) ;\
535 $(edit_launcher_script) < $< > $@
536
537launcher.build/$(itweb_settings): launcher/launchers.in
538 mkdir -p launcher.build
539 MAIN_CLASS=net.sourceforge.jnlp.controlpanel.CommandLine ;\
540 BIN_LOCATION=$(bindir)/$(itweb_settings) ;\
541 PROGRAM_NAME=$(itweb_settings) ;\
542 $(edit_launcher_script) < $< > $@
543
544launcher.build/$(policyeditor): launcher/launchers.in
545 mkdir -p launcher.build
546 MAIN_CLASS=net.sourceforge.jnlp.security.policyeditor.PolicyEditor ;\
547 BIN_LOCATION=$(bindir)/$(policyeditor) ;\
548 PROGRAM_NAME=$(policyeditor) ;\
549 $(edit_launcher_script) < $< > $@
550
551clean-launchers:
552 rm -f launcher.build/$(javaws)
553 rm -f launcher.build/$(itweb_settings)
554 rm -f launcher.build/$(policyeditor)
555 if [ -e launcher.build ] ; then \
556 rmdir launcher.build ; \
557 fi
558
559javaws.desktop: javaws.desktop.in
560 sed "s#PATH_TO_JAVAWS#$(bindir)/$(javaws)#" < $(srcdir)/javaws.desktop.in > javaws.desktop
561
562itweb-settings.desktop: $(srcdir)/itweb-settings.desktop.in
563 sed "s#PATH_TO_ITWEB_SETTINGS#$(bindir)/$(itweb_settings)#" \
564 < $(srcdir)/itweb-settings.desktop.in > itweb-settings.desktop
565
566policyeditor.desktop: $(srcdir)/policyeditor.desktop.in
567 sed 's#PATH_TO_POLICYEDITOR#$(bindir)/$(policyeditor)#' \
568 < $(srcdir)/policyeditor.desktop.in > policyeditor.desktop
569
570# documentation
571
572stamps/docs.stamp: stamps/netx-docs.stamp stamps/plugin-docs.stamp
573 touch stamps/docs.stamp
574
575clean-docs: clean-netx-docs clean-plugin-docs
576 if [ -e ${abs_top_builddir}/docs ] ; then \
577 rmdir ${abs_top_builddir}/docs ; \
578 fi
579 rm -f stamps/docs.stamp
580
581stamps/netx-docs.stamp: stamps/bootstrap-directory.stamp
582if ENABLE_DOCS
583 $(BOOT_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \
584 -d ${abs_top_builddir}/docs/netx -sourcepath $(NETX_SRCDIR) \
585 -doctitle 'IcedTea-Web: NetX API Specification' \
586 -windowtitle 'IcedTea-Web: NetX ' \
587 -header '<strong>IcedTea-Web<br/>NetX</strong>' \
588 $(NETX_PKGS)
589endif
590 mkdir -p stamps
591 touch stamps/netx-docs.stamp
592
593clean-netx-docs:
594 rm -rf ${abs_top_builddir}/docs/netx
595 rm -f stamps/netx-docs.stamp
596
597stamps/plugin-docs.stamp: stamps/bootstrap-directory.stamp
598if ENABLE_DOCS
599if ENABLE_PLUGIN
600 $(BOOT_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \
601 -d ${abs_top_builddir}/docs/plugin -sourcepath $(NETX_SRCDIR):$(LIVECONNECT_SRCS) \
602 -doctitle 'IcedTea-Web: Plugin API Specification' \
603 -windowtitle 'IcedTea-Web: Plugin ' \
604 -header '<strong>IcedTea-Web<br/>Plugin</strong>' \
605 $(PLUGIN_PKGS)
606endif
607endif
608 mkdir -p stamps
609 touch stamps/plugin-docs.stamp
610
611clean-plugin-docs:
612 rm -rf ${abs_top_builddir}/docs/plugin
613 rm -f stamps/plugin-docs.stamp
614
615
616# check
617# ==========================
618
619clean-tests: clean-netx-tests clean-cpp-unit-tests clean-unittest++
620 if [ -e $(CPP_UNITTEST_DIR) ] ; then \
621 rmdir $(CPP_UNITTEST_DIR) ; \
622 fi
623 if [ -e $(TESTS_DIR) ]; then \
624 rmdir $(TESTS_DIR) ; \
625 fi
626
627stamps/check-pac-functions.stamp: stamps/bootstrap-directory.stamp
628 ./jrunscript $(abs_top_srcdir)/tests/netx/pac/pac-funcs-test.js \
629 $$(readlink -f $(abs_top_srcdir)/netx/net/sourceforge/jnlp/runtime/pac-funcs.js) ; \
630 mkdir -p stamps && \
631 touch $@
632
633junit-runner-source-files.txt:
634 find $(JUNIT_RUNNER_SRCDIR) -name '*.java' | sort > $@
635
636jacoco-operator-source-files.txt:
637 find $(JACOCO_OPERATOR_SRCDIR) -name '*.java' | sort > $@
638
639$(JUNIT_RUNNER_JAR): junit-runner-source-files.txt stamps/test-extensions-compile.stamp
640 mkdir -p $(JUNIT_RUNNER_DIR) && \
641 $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
642 -d $(JUNIT_RUNNER_DIR) \
643 -classpath $(JUNIT_JAR):$(TEST_EXTENSIONS_DIR) \
644 @junit-runner-source-files.txt && \
645 $(BOOT_DIR)/bin/jar cf $@ -C $(JUNIT_RUNNER_DIR) .
646
647stamps/junit-jnlp-dist-dirs: junit-jnlp-dist-simple.txt stamps/junit-jnlp-dist-signed.stamp junit-jnlp-dist-custom.txt
648 mkdir -p $(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)
649 mkdir -p $(REPRODUCERS_BUILD_DIR)
650 touch $@
651
652junit-jnlp-dist-custom.txt:
653 cd $(REPRODUCERS_TESTS_SRCDIR)/$(CUSTOM_REPRODUCERS)/ ; \
654 find . -maxdepth 1 -mindepth 1 | sed "s/.\/*//" > $(abs_top_builddir)/$@
655
656junit-jnlp-dist-simple.txt:
657 cd $(REPRODUCERS_TESTS_SRCDIR)/simple/ ; \
658 find . -maxdepth 1 -mindepth 1 | sed "s/.\/*//" > $(abs_top_builddir)/$@
659
660stamps/junit-jnlp-dist-signed.stamp:
661 types=($(SIGNED_REPRODUCERS)) ; \
662 for which in "$${types[@]}" ; do \
663 pushd $(REPRODUCERS_TESTS_SRCDIR)/$$which/ ; \
664 find . -maxdepth 1 -mindepth 1 | sed "s/.\/*//" > $(abs_top_builddir)/junit-jnlp-dist-$$which.txt ; \
665 popd ; \
666 done ; \
667 mkdir -p stamps && \
668 touch $@
669
670stamps/netx-dist-tests-prepare-reproducers.stamp: stamps/junit-jnlp-dist-dirs stamps/liveconnect-dist.stamp stamps/netx-dist.stamp stamps/plugin.stamp
671 types=($(ALL_NONCUSTOM_REPRODUCERS)); \
672 for which in "$${types[@]}" ; do \
673 . $(abs_top_srcdir)/NEW_LINE_IFS ; \
674 simpleReproducers=(`cat $(abs_top_builddir)/junit-jnlp-dist-$$which.txt `); \
675 IFS="$$IFS_BACKUP" ; \
676 for dir in "$${simpleReproducers[@]}" ; do \
677 echo "processing: $$dir" ; \
678 mkdir -p "$(REPRODUCERS_BUILD_DIR)/$$dir" ; \
679 if [ -e "$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/srcs/" ]; then \
680 d=`pwd` ; \
681 cd "$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/srcs/" ; \
682 srcFiles=`find . -mindepth 1 -type f -name "*.java" | sed "s/.\/*//"` ; \
683 notSrcFiles=`find . -mindepth 1 -type f \! -name "*.java" | sed "s/.\/*//"` ; \
684 $(BOOT_DIR)/bin/javac -cp $(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect -d "$(REPRODUCERS_BUILD_DIR)/$$dir/" $$srcFiles ; \
685 if [ -n "$$notSrcFiles" ] ; then \
686 cp -R --parents $$notSrcFiles "$(REPRODUCERS_BUILD_DIR)/$$dir/" ; \
687 fi ; \
688 cd "$(REPRODUCERS_BUILD_DIR)/$$dir/" ; \
689 if [ -f $(META_MANIFEST) ]; \
690 then \
691 $(BOOT_DIR)/bin/jar cfm "$(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)/$$dir.jar" $(META_MANIFEST) * ; \
692 else \
693 $(BOOT_DIR)/bin/jar cf "$(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)/$$dir.jar" * ; \
694 fi; \
695 cd "$$d" ; \
696 fi; \
697 done ; \
698 done ; \
699 mkdir -p stamps && \
700 touch $@
701
702stamps/netx-dist-tests-sign-some-reproducers.stamp: stamps/netx-dist-tests-prepare-reproducers.stamp
703 keystore=$(abs_top_builddir)/$(PRIVATE_KEYSTORE_NAME); \
704 types=($(SIGNED_REPRODUCERS)) ; \
705 for which in "$${types[@]}" ; do \
706 tcaw=$(TEST_CERT_ALIAS)_$$which ; \
707 $(BOOT_DIR)/bin/keytool -genkey -alias $$tcaw -keystore $$keystore -keypass $(PRIVATE_KEYSTORE_PASS) -storepass $(PRIVATE_KEYSTORE_PASS) -dname "cn=$$tcaw, ou=$$tcaw, o=$$tcaw, c=$$tcaw" ; \
708 . $(abs_top_srcdir)/NEW_LINE_IFS ; \
709 signedReproducers=(`cat $(abs_top_builddir)/junit-jnlp-dist-$$which.txt `); \
710 IFS="$$IFS_BACKUP" ; \
711 for dir in "$${signedReproducers[@]}" ; do \
712 $(BOOT_DIR)/bin/jarsigner -keystore $$keystore -storepass $(PRIVATE_KEYSTORE_PASS) -keypass $(PRIVATE_KEYSTORE_PASS) "$(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)/$$dir.jar" $$tcaw ; \
713 done ; \
714 done ; \
715 mkdir -p stamps && \
716 touch $@
717
718stamps/change-dots-to-paths.stamp: stamps/netx-dist-tests-sign-some-reproducers.stamp
719 pushd $(REPRODUCERS_TESTS_SERVER_DEPLOYDIR); \
720 types=($(ALL_NONCUSTOM_REPRODUCERS)); \
721 for which in "$${types[@]}" ; do \
722 . $(abs_top_srcdir)/NEW_LINE_IFS ; \
723 simpleReproducers=(`cat $(abs_top_builddir)/junit-jnlp-dist-$$which.txt `); \
724 IFS="$$IFS_BACKUP" ; \
725 for dir in "$${simpleReproducers[@]}" ; do \
726 if test "$${dir:0:1}" = "." ; then \
727 echo "reproducer $$dir starts with dot. It is forbidden" ; \
728 exit 5; \
729 fi; \
730 if test "$${dir:(-1)}" = "." ; then \
731 echo "reproducer $$dir ends with dot. It is forbidden" ; \
732 exit 5; \
733 fi; \
734 q=`expr index "$$dir" .`; \
735 r=$$? ; \
736 if [ $$r = 0 ]; then \
737 slashed_dir="./$${dir//.//}" ; \
738 path="`dirname $$slashed_dir`" ; \
739 file="`basename $$slashed_dir`.jar" ; \
740 echo "copying $$dir.jar to $$path as $$file" ; \
741 mkdir --parents $$path ; \
742 cp $$dir".jar" "$$path"/"$$file" ; \
743 fi ; \
744 done ; \
745 done ; \
746 popd ; \
747 mkdir -p stamps && \
748 touch $@
749
750#this always tries to remove previous testcert
751#the code is copypasted from netx-dist-tests-remove-cert-from-public, because
752#with depending to not stamped target we always have to rerun reproducers targets
753stamps/exported-test-certs.stamp: stamps/change-dots-to-paths.stamp
754 -types=($(SIGNED_REPRODUCERS)) ; \
755 PUBLIC_KEYSTORE=$$XDG_CONFIG_HOME ; \
756 if test "x$$PUBLIC_KEYSTORE" = x; then \
757 PUBLIC_KEYSTORE=${HOME}/.config ; \
758 fi ;\
759 PUBLIC_KEYSTORE=$$PUBLIC_KEYSTORE/$(PUBLIC_KEYSTORE_STUB); \
760 keystoredir=`dirname $(PUBLIC_KEYSTORE)`; \
761 [ ! -d $(keystoredir) ] && mkdir -p $(keystoredir); \
762 for which in "$${types[@]}" ; do \
763 $(BOOT_DIR)/bin/keytool -delete -alias $(TEST_CERT_ALIAS)_$$which -keystore $$PUBLIC_KEYSTORE -storepass $(PUBLIC_KEYSTORE_PASS) ; \
764 done ;
765 types=($(SIGNED_REPRODUCERS)) ; \
766 for which in "$${types[@]}" ; do \
767 $(BOOT_DIR)/bin/keytool -export -alias $(TEST_CERT_ALIAS)_$$which -file $(EXPORTED_TEST_CERT_PREFIX)_$$which.$(EXPORTED_TEST_CERT_SUFFIX) -storepass $(PRIVATE_KEYSTORE_PASS) -keystore $(PRIVATE_KEYSTORE_NAME) ; \
768 done ;
769 mkdir -p stamps && \
770 touch $@
771
772stamps/netx-dist-tests-import-cert-to-public: stamps/exported-test-certs.stamp
773 types=($(SIGNED_REPRODUCERS)) ; \
774 PUBLIC_KEYSTORE=$$XDG_CONFIG_HOME ; \
775 if test "x$$PUBLIC_KEYSTORE" = x; then \
776 PUBLIC_KEYSTORE=${HOME}/.config ; \
777 fi ;\
778 PUBLIC_KEYSTORE=$$PUBLIC_KEYSTORE/$(PUBLIC_KEYSTORE_STUB); \
779 keystoredir=`dirname $(PUBLIC_KEYSTORE)`; \
780 [ ! -d $(keystoredir) ] && mkdir -p $(keystoredir); \
781 for which in "$${types[@]}" ; do \
782 yes | $(BOOT_DIR)/bin/keytool -import -alias $(TEST_CERT_ALIAS)_$$which -keystore $$PUBLIC_KEYSTORE -storepass $(PUBLIC_KEYSTORE_PASS) -file $(EXPORTED_TEST_CERT_PREFIX)_$$which.$(EXPORTED_TEST_CERT_SUFFIX) ;\
783 done ;
784 mkdir -p stamps && \
785 touch $@
786
787netx-dist-tests-remove-cert-from-public:
788 -types=($(SIGNED_REPRODUCERS)) ; \
789 PUBLIC_KEYSTORE=$$XDG_CONFIG_HOME ; \
790 if test "x$$PUBLIC_KEYSTORE" = x; then \
791 PUBLIC_KEYSTORE=${HOME}/.config ; \
792 fi ;\
793 PUBLIC_KEYSTORE=$$PUBLIC_KEYSTORE/$(PUBLIC_KEYSTORE_STUB); \
794 keystoredir=`dirname $(PUBLIC_KEYSTORE)`; \
795 [ ! -d $(keystoredir) ] && mkdir -p $(keystoredir); \
796 for which in "$${types[@]}" ; do \
797 $(BOOT_DIR)/bin/keytool -delete -alias $(TEST_CERT_ALIAS)_$$which -keystore $$PUBLIC_KEYSTORE -storepass $(PUBLIC_KEYSTORE_PASS) ; \
798 done ;
799 -rm -rf stamps/netx-dist-tests-import-cert-to-public
800
801test-extensions-source-files.txt:
802 find $(TEST_EXTENSIONS_SRCDIR) -name '*.java' | sort > $@
803
804stamps/test-extensions-compile.stamp: stamps/netx-dist.stamp stamps/plugin.stamp stamps/junit-jnlp-dist-dirs test-extensions-source-files.txt
805 mkdir -p $(TEST_EXTENSIONS_DIR);
806 mkdir -p $(NETX_TEST_DIR);
807 ln -s $(TEST_EXTENSIONS_DIR) $(TEST_EXTENSIONS_COMPATIBILITY_SYMLINK);
808 $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
809 -d $(TEST_EXTENSIONS_DIR) \
810 -classpath $(JUNIT_JAR):$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar \
811 @test-extensions-source-files.txt && \
812 mkdir -p stamps && \
813 touch $@
814
815test-extensions-tests-source-files.txt:
816 find $(TEST_EXTENSIONS_TESTS_SRCDIR) -name '*.java' | sort > $@
817
818stamps/test-extensions-tests-compile.stamp: stamps/junit-jnlp-dist-dirs test-extensions-tests-source-files.txt stamps/test-extensions-compile.stamp
819 mkdir -p $(TEST_EXTENSIONS_TESTS_DIR);
820 $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
821 -d $(TEST_EXTENSIONS_TESTS_DIR) \
822 -classpath $(JUNIT_JAR):$(NETX_DIR)/lib/classes.jar:$(TEST_EXTENSIONS_DIR) \
823 @test-extensions-tests-source-files.txt && \
824 mkdir -p stamps && \
825 touch $@
826
827stamps/compile-reproducers-testcases.stamp: stamps/netx-dist.stamp stamps/plugin.stamp stamps/junit-jnlp-dist-dirs \
828 test-extensions-source-files.txt stamps/test-extensions-compile.stamp stamps/test-extensions-tests-compile.stamp
829 types=($(ALL_REPRODUCERS)); \
830 for which in "$${types[@]}" ; do \
831 . $(abs_top_srcdir)/NEW_LINE_IFS ; \
832 simpleReproducers=(`cat $(abs_top_builddir)/junit-jnlp-dist-$$which.txt `); \
833 IFS="$$IFS_BACKUP" ; \
834 for dir in "$${simpleReproducers[@]}" ; do \
835 $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
836 -d $(TEST_EXTENSIONS_TESTS_DIR) \
837 -classpath $(JUNIT_JAR):$(NETX_DIR)/lib/classes.jar:$(TEST_EXTENSIONS_DIR) \
838 "$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases/"*.java ; \
839 if [ -d "$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases" ]; then \
840 pushd "$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases" ; \
841 NONJAVA_RESOURCES=`ls | grep -v ".*\\.java$$"` ; \
842 if [ -n "$$NONJAVA_RESOURCES" ]; then \
843 cp $$NONJAVA_RESOURCES $(TEST_EXTENSIONS_TESTS_DIR)/ ; \
844 fi ; \
845 popd ; \
846 fi ; \
847 done ; \
848 done ; \
849 mkdir -p stamps && \
850 touch $@
851
852stamps/copy-reproducers-resources.stamp: stamps/junit-jnlp-dist-dirs
853 types=($(ALL_REPRODUCERS)); \
854 for which in "$${types[@]}" ; do \
855 . $(abs_top_srcdir)/NEW_LINE_IFS ; \
856 simpleReproducers=(`cat $(abs_top_builddir)/junit-jnlp-dist-$$which.txt `); \
857 IFS="$$IFS_BACKUP" ; \
858 for dir in "$${simpleReproducers[@]}" ; do \
859 cp -R "$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/resources/"* $(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)/ ; \
860 done ; \
861 done ; \
862 mkdir -p stamps && \
863 touch $@
864
865$(REPRODUCERS_CLASS_NAMES): $(REPRODUCERS_CLASS_WHITELIST)
866 whiteListed=`cat $(REPRODUCERS_CLASS_WHITELIST)`; \
867 cd $(TEST_EXTENSIONS_TESTS_DIR) ; \
868 class_names= ; \
869 for test in `find -type f` ; do \
870 class_name=`echo $$test | sed -e 's|\.class$$||' -e 's|^\./||'` ; \
871 class_name=`echo $$class_name | sed -e 's|/|.|g' ` ; \
872 INLCUDE="NO" ; \
873 for x in $$whiteListed ; do \
874 q=`expr match "$$class_name" "$$x"`; \
875 r=$$? ; \
876 if [ $$r = 0 ]; then \
877 echo "$$class_name will be included in reproducers testcases because of $$x pattern in $(REPRODUCERS_CLASS_WHITELIST). Matching was $$q"; \
878 INLCUDE="YES" ; \
879 fi; \
880 done; \
881 if [ "$$INLCUDE" = "YES" ]; then \
882 class_names="$$class_names $$class_name" ; \
883 else \
884 echo "$$class_name had no match in $(REPRODUCERS_CLASS_WHITELIST). Excluding"; \
885 fi; \
886 done ; \
887 echo $$class_names > $(REPRODUCERS_CLASS_NAMES)
888
889$(TESTS_DIR)/$(SOFTKILLER):
890 cd $(TESTS_SRCDIR)/$(SOFTKILLER); \
891 $(MAKE) ; \
892 mv $(SOFTKILLER) $(TESTS_DIR)/
893
894stamps/run-netx-dist-tests.stamp: stamps/netx-dist.stamp stamps/plugin.stamp launcher.build/$(javaws) \
895 javaws.desktop stamps/docs.stamp launcher.build/$(itweb_settings) itweb-settings.desktop launcher.build/$(policyeditor) policyeditor.desktop \
896 stamps/netx.stamp stamps/junit-jnlp-dist-dirs stamps/netx-dist-tests-import-cert-to-public $(TESTS_DIR)/softkiller \
897 stamps/test-extensions-compile.stamp stamps/compile-reproducers-testcases.stamp $(JUNIT_RUNNER_JAR) stamps/copy-reproducers-resources.stamp\
898 $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME) $(REPRODUCERS_CLASS_NAMES) stamps/process-custom-reproducers.stamp
899 cd $(TEST_EXTENSIONS_DIR) ; \
900 class_names=`cat $(REPRODUCERS_CLASS_NAMES)` ; \
901 CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):.:$(TEST_EXTENSIONS_TESTS_DIR):$(TEST_EXTENSIONS_SRCDIR) ; \
902 $(BOOT_DIR)/bin/java $(REPRODUCERS_DPARAMETERS) \
903 -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH CommandLine $$class_names
904if WITH_XSLTPROC
905 -$(XSLTPROC) --stringparam logs logs_reproducers.html $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/jreport.xsl $(TEST_EXTENSIONS_DIR)/tests-output.xml > $(TESTS_DIR)/index_reproducers.html
906 -$(XSLTPROC) $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/logs.xsl $(TEST_EXTENSIONS_DIR)/ServerAccess-logs.xml > $(TESTS_DIR)/logs_reproducers.html
907 -$(XSLTPROC) $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/textreport.xsl $(TEST_EXTENSIONS_DIR)/tests-output.xml > $(TESTS_DIR)/summary_reproducers.txt
908endif
909 touch $@
910
911stamps/process-custom-reproducers.stamp: stamps/junit-jnlp-dist-dirs stamps/netx-dist-tests-import-cert-to-public \
912 stamps/test-extensions-compile.stamp stamps/compile-reproducers-testcases.stamp $(JUNIT_RUNNER_JAR) stamps/copy-reproducers-resources.stamp\
913 $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME) $(REPRODUCERS_CLASS_NAMES)
914 . $(abs_top_srcdir)/NEW_LINE_IFS ; \
915 customReproducers=(`cat $(abs_top_builddir)/junit-jnlp-dist-custom.txt `); \
916 IFS="$$IFS_BACKUP" ; \
917 for dir in "$${customReproducers[@]}" ; do \
918 pushd $(REPRODUCERS_TESTS_SRCDIR)/$(CUSTOM_REPRODUCERS)/$$dir/srcs; \
919 $(MAKE) prepare-reproducer ; \
920 popd ; \
921 done ; \
922 mkdir -p stamps && \
923 touch $@
924
925clean-custom-reproducers: junit-jnlp-dist-custom.txt
926 . $(abs_top_srcdir)/NEW_LINE_IFS ; \
927 customReproducers=(`cat $(abs_top_builddir)/junit-jnlp-dist-custom.txt `); \
928 IFS="$$IFS_BACKUP" ; \
929 for dir in "$${customReproducers[@]}" ; do \
930 pushd $(REPRODUCERS_TESTS_SRCDIR)/custom/$$dir/srcs; \
931 $(MAKE) clean-reproducer ; \
932 popd ; \
933 done ; \
934 rm -f stamps/process-custom-reproducers.stamp
935
936#for global-links you must be root, for opera there do not exists user-links
937#although this targets will indeed create symbolic links to enable
938#icedtea-web plugin inside browser it is intended for testing purposes
939if ENABLE_PLUGIN
940stamps/user-links.stamp: stamps/netx-dist.stamp stamps/plugin.stamp \
941 launcher.build/$(javaws) stamps/netx.stamp $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY)
942 if [ $(MOZILLA_FAMILY_TEST) ] ; then \
943 if [ -e $(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME) ] ; then \
944 mv -f $(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME) $(MOZILLA_LOCAL_BACKUP_FILE) ; \
945 echo "$(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME) backed up as $(MOZILLA_LOCAL_BACKUP_FILE)" ; \
946 else \
947 echo "$(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME) doesn't exists, nothing to be backed up to $(MOZILLA_LOCAL_BACKUP_FILE)" ; \
948 fi ; \
949 pushd $(MOZILLA_LOCAL_PLUGINDIR) ; \
950 ln -s $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) $(PLUGIN_LINK_NAME) ; \
951 echo "$(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) linked as $$PWD/$(PLUGIN_LINK_NAME)" ; \
952 popd ; \
953 fi ; \
954 touch $@
955
956restore-user-links:
957 if [ $(MOZILLA_FAMILY_TEST) ] ; then \
958 if [ -e $(MOZILLA_LOCAL_BACKUP_FILE) ] ; then \
959 mv -f $(MOZILLA_LOCAL_BACKUP_FILE) $(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME) ; \
960 echo "$(MOZILLA_LOCAL_BACKUP_FILE) restored as $(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME)" ; \
961 else \
962 rm -f $(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME) ; \
963 echo "$(MOZILLA_LOCAL_BACKUP_FILE) do not exists, nothing to be restored. $(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME) removed" ; \
964 fi ; \
965 fi ;
966 if [ -e stamps/user-links.stamp ] ; then \
967 rm -f stamps/user-links.stamp ; \
968 fi
969
970stamps/global-links.stamp: stamps/netx-dist.stamp stamps/plugin.stamp launcher.build/$(javaws) \
971 stamps/netx.stamp $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY)
972 if [ $(MOZILLA_FAMILY_TEST) ] ; then \
973 dir="$(MOZILLA_GLOBAL32_PLUGINDIR)" ; \
974 arch=`arch` ; \
975 if [ "$$arch" = "x86_64" ] ; then \
976 dir="$(MOZILLA_GLOBAL64_PLUGINDIR)" ; \
977 fi ; \
978 if [ -e "$$dir"/$(PLUGIN_LINK_NAME) ] ; then \
979 mv -f "$$dir"/$(PLUGIN_LINK_NAME) $(MOZILLA_GLOBAL_BACKUP_FILE) ; \
980 echo "$$dir/$(PLUGIN_LINK_NAME) backed up as $(MOZILLA_GLOBAL_BACKUP_FILE)" ; \
981 else \
982 echo "$$dir/$(PLUGIN_LINK_NAME) do not exists, nothing to be backed up to $(MOZILLA_GLOBAL_BACKUP_FILE)" ; \
983 fi ; \
984 pushd "$$dir" ; \
985 ln -s $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) $(PLUGIN_LINK_NAME) ; \
986 echo "$(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) linked as $$PWD/$(PLUGIN_LINK_NAME)" ; \
987 popd ; \
988 fi ;
989 if [ "$(OPERA)" != "" ] ; then \
990 dir="$(OPERA_GLOBAL32_PLUGINDIR)" ; \
991 arch=`arch` ; \
992 if [ "$$arch" = "x86_64" ] ; then \
993 dir="$(OPERA_GLOBAL64_PLUGINDIR)" ; \
994 fi ; \
995 if [ -e "$$dir"/$(PLUGIN_LINK_NAME) ] ; then \
996 mv -f "$$dir"/$(PLUGIN_LINK_NAME) $(OPERA_GLOBAL_BACKUP_FILE) ; \
997 echo "$$dir/$(PLUGIN_LINK_NAME) backed up as $(OPERA_GLOBAL_BACKUP_FILE) "; \
998 else \
999 echo "$$dir/$(PLUGIN_LINK_NAME) do not exists, nothing to be backed up to $(OPERA_GLOBAL_BACKUP_FILE) "; \
1000 fi ; \
1001 pushd "$$dir" ; \
1002 ln -s $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) $(PLUGIN_LINK_NAME) ; \
1003 echo "$(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) linked as $$PWD/$(PLUGIN_LINK_NAME)" ; \
1004 popd ; \
1005 fi ; \
1006 touch $@
1007
1008restore-global-links:
1009 if [ $(MOZILLA_FAMILY_TEST) ] ; then \
1010 dir="$(MOZILLA_GLOBAL32_PLUGINDIR)" ; \
1011 arch=`arch` ; \
1012 if [ "$$arch" = "x86_64" ] ; then \
1013 dir="$(MOZILLA_GLOBAL64_PLUGINDIR)" ; \
1014 fi ; \
1015 if [ -e $(MOZILLA_GLOBAL_BACKUP_FILE) ] ; then \
1016 mv -f $(MOZILLA_GLOBAL_BACKUP_FILE) "$$dir"/$(PLUGIN_LINK_NAME) ; \
1017 echo "$(MOZILLA_GLOBAL_BACKUP_FILE) restored as $$dir/$(PLUGIN_LINK_NAME)" ; \
1018 else \
1019 rm -f "$$dir"/$(PLUGIN_LINK_NAME) ; \
1020 echo "$(MOZILLA_GLOBAL_BACKUP_FILE) do not exists, nothing to be restored. $$dir/$(PLUGIN_LINK_NAME) removed" ; \
1021 fi ; \
1022 fi ;
1023 if [ "$(OPERA)" != "" ] ; then \
1024 dir="$(OPERA_GLOBAL32_PLUGINDIR)" ; \
1025 arch=`arch` ; \
1026 if [ "$$arch" = "x86_64" ] ; then \
1027 dir="$(OPERA_GLOBAL64_PLUGINDIR)" ; \
1028 fi ; \
1029 if [ -e $(OPERA_GLOBAL_BACKUP_FILE) ] ; then \
1030 mv -f $(OPERA_GLOBAL_BACKUP_FILE) "$$dir"/$(PLUGIN_LINK_NAME) ; \
1031 echo "$(OPERA_GLOBAL_BACKUP_FILE) restored as $$dir/$(PLUGIN_LINK_NAME)" ; \
1032 else \
1033 rm -f "$$dir"/$(PLUGIN_LINK_NAME) ; \
1034 echo "$(OPERA_GLOBAL_BACKUP_FILE) do not exist, nothing to be restored. $$dir/$(PLUGIN_LINK_NAME) removed" ; \
1035 fi ; \
1036 fi ;
1037 if [ -e stamps/global-links.stamp ] ; then \
1038 rm -f stamps/global-links.stamp ; \
1039 fi
1040endif
1041
1042netx-unit-tests-source-files.txt:
1043 find $(NETX_UNIT_TEST_SRCDIR) -name '*.java' | sort > $@
1044
1045stamps/netx-unit-tests-compile.stamp: stamps/netx.stamp \
1046 netx-unit-tests-source-files.txt stamps/test-extensions-compile.stamp
1047 mkdir -p $(NETX_UNIT_TEST_DIR) && \
1048 $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
1049 -d $(NETX_UNIT_TEST_DIR) \
1050 -classpath $(JUNIT_JAR):$(abs_top_builddir)/liveconnect/lib/classes.jar:$(NETX_DIR)/lib/classes.jar:$(TEST_EXTENSIONS_DIR):$(TAGSOUP_JAR) \
1051 @netx-unit-tests-source-files.txt && \
1052 mkdir -p stamps && \
1053 touch $@
1054
1055$(TESTS_DIR)/$(REPORT_STYLES_DIRNAME):
1056 mkdir $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME)
1057 cp $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/*.css $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME)/
1058 cp $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/*.js $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME)/
1059
1060$(UNIT_CLASS_NAMES):
1061 cd $(NETX_UNIT_TEST_DIR) ; \
1062 class_names= ; \
1063 for test in `find -type f` ; do \
1064 class_name=`echo $$test | sed -e 's|\.class$$||' -e 's|^\./||'` ; \
1065 class_name=`echo $$class_name | sed -e 's|/|.|g' ` ; \
1066 class_names="$$class_names $$class_name" ; \
1067 done ; \
1068 echo $$class_names > $(UNIT_CLASS_NAMES);
1069
1070stamps/run-netx-unit-tests.stamp: stamps/netx-unit-tests-compile.stamp $(JUNIT_RUNNER_JAR) \
1071 $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME) $(UNIT_CLASS_NAMES)
1072 filename=" " ; \
1073 cd $(NETX_UNIT_TEST_SRCDIR) ; \
1074 for file in `find . -type f \! -iname "*.java"`; do\
1075 filename=`echo $$file `; \
1076 cp --parents $$filename $(NETX_UNIT_TEST_DIR) ; \
1077 done ; \
1078 cd $(NETX_UNIT_TEST_DIR) ; \
1079 class_names=`cat $(UNIT_CLASS_NAMES)` ; \
1080 CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):$(TEST_EXTENSIONS_DIR):.:$(TEST_EXTENSIONS_SRCDIR):$(TAGSOUP_JAR) ; \
1081 $(BOOT_DIR)/bin/java -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH CommandLine $$class_names
1082if WITH_XSLTPROC
1083 -$(XSLTPROC) --stringparam logs logs_unit.html $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/jreport.xsl $(NETX_UNIT_TEST_DIR)/tests-output.xml > $(TESTS_DIR)/index_unit.html
1084 -$(XSLTPROC) $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/logs.xsl $(NETX_UNIT_TEST_DIR)/ServerAccess-logs.xml > $(TESTS_DIR)/logs_unit.html
1085 -$(XSLTPROC) $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/textreport.xsl $(NETX_UNIT_TEST_DIR)/tests-output.xml > $(TESTS_DIR)/summary_unit.txt
1086endif
1087 mkdir -p stamps && \
1088 touch $@
1089
1090#warning, during this target tests.build/netx/unit/tests-output.xml is backup and rewriten (but not coresponding html file)
1091#xml results run from emma sandbox, however, can be wrong, co the new tests-output.xml is then renamed and orginal one restored
1092#you can add -ix "-*Test*" -ix "-*test*" to ignore all test cases from statistics
1093stamps/run-unit-test-code-coverage.stamp: stamps/netx-unit-tests-compile.stamp $(JUNIT_RUNNER_JAR) \
1094 $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME) $(UNIT_CLASS_NAMES)
1095if WITH_EMMA
1096 cd $(NETX_UNIT_TEST_DIR) ; \
1097 for file in $(EMMA_MODIFIED_FILES) ; do \
1098 mv $(NETX_UNIT_TEST_DIR)/$$file $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" ; \
1099 done ;\
1100 class_names=`cat $(UNIT_CLASS_NAMES)` ; \
1101 CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):$(TEST_EXTENSIONS_DIR):.:$(TEST_EXTENSIONS_SRCDIR) ; \
1102 $(BOOT_DIR)/bin/java $(EMMA_JAVA_ARGS) -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH -cp $(EMMA_JAR) -Demma.report.html.out.encoding=UTF-8 emmarun \
1103 -Dreport.html.out.encoding=UTF-8 \
1104 -raw \
1105 -sp $(NETX_SRCDIR) \
1106 -sp $(NETX_UNIT_TEST_SRCDIR) \
1107 -sp $(JUNIT_RUNNER_SRCDIR) \
1108 -r html \
1109 -r xml \
1110 -cp $(NETX_DIR)/lib/classes.jar \
1111 -cp $(JUNIT_JAR) \
1112 -cp $(JUNIT_RUNNER_JAR) \
1113 -cp $(BOOT_DIR)/jre/lib/rt.jar \
1114 -cp $(BOOT_DIR)/jre/lib/jsse.jar \
1115 -cp $(BOOT_DIR)/jre/lib/resources.jar \
1116 -cp $(RHINO_RUNTIME) \
1117 -cp $(TEST_EXTENSIONS_DIR) \
1118 -cp $(TEST_EXTENSIONS_SRCDIR) \
1119if HAVE_TAGSOUP
1120 -cp $(TAGSOUP_JAR) \
1121endif
1122 -cp . \
1123 -ix "-org.junit.*" \
1124 -ix "-junit.*" \
1125 CommandLine $$class_names ; \
1126 for file in $(EMMA_MODIFIED_FILES) ; do \
1127 mv $(NETX_UNIT_TEST_DIR)/$$file $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_SUFFIX)" ; \
1128 mv $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" $(NETX_UNIT_TEST_DIR)/$$file ; \
1129 done ;
1130else
1131 echo "Sorry, coverage report cant be run without emma installed. Try install emma or specify with-emma value" ;
1132 exit 5
1133endif
1134 touch $@
1135
1136stamps/compile-jacoco-operator.stamp: jacoco-operator-source-files.txt
1137if WITH_JACOCO
1138 mkdir -p $(JACOCO_OPERATOR_DIR) && \
1139 $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
1140 -d $(JACOCO_OPERATOR_DIR) \
1141 -classpath $(JACOCO_CLASSPATH) \
1142 @jacoco-operator-source-files.txt ;
1143else
1144 echo "Sorry, jacoco coverage report generator cant be compiled without jacoco installed. Try installing jacoco or specify with-jacoco value" ;
1145 exit 5
1146endif
1147 touch $@
1148
1149
1150#warning, during this target tests.build/netx/unit/tests-output.xml is backup and rewriten (but not coresponding html file)
1151#xml results run with jacoco agent however, can be wrong, co the new tests-output.xml is then renamed and orginal one restored
1152stamps/run-unit-test-code-coverage-jacoco.stamp: stamps/netx-unit-tests-compile.stamp $(JUNIT_RUNNER_JAR) \
1153 $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME) $(UNIT_CLASS_NAMES) stamps/compile-jacoco-operator.stamp
1154if WITH_JACOCO
1155 filename=" " ; \
1156 cd $(NETX_UNIT_TEST_SRCDIR) ; \
1157 for file in `find . -type f \! -iname "*.java"`; do\
1158 filename=`echo $$file `; \
1159 cp --parents $$filename $(NETX_UNIT_TEST_DIR) ; \
1160 done ; \
1161 cd $(NETX_UNIT_TEST_DIR) ; \
1162 for file in $(EMMA_MODIFIED_FILES) ; do \
1163 mv $(NETX_UNIT_TEST_DIR)/$$file $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" ; \
1164 done ;\
1165 class_names=`cat $(UNIT_CLASS_NAMES)` ; \
1166 CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):$(TEST_EXTENSIONS_DIR):$(JACOCO_CLASSPATH):.:$(TEST_EXTENSIONS_SRCDIR):$(TAGSOUP_JAR) ; \
1167 $(BOOT_DIR)/bin/java $(JACOCO_AGENT_SWITCH) -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH CommandLine $$class_names ; \
1168 for file in $(EMMA_MODIFIED_FILES) ; do \
1169 mv $(NETX_UNIT_TEST_DIR)/$$file $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_SUFFIX)" ; \
1170 mv $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" $(NETX_UNIT_TEST_DIR)/$$file ; \
1171 done ; \
1172 $(JACOCO_OPERATOR_EXEC) \
1173 report --die-soon --html-output coverage --xml-output coverage.xml --input-file jacoco.exec \
1174 --input-srcs $(NETX_SRCDIR) $(PLUGIN_SRCDIR)/java $(NETX_UNIT_TEST_SRCDIR) $(JUNIT_RUNNER_SRCDIR) $(TEST_EXTENSIONS_SRCDIR) \
1175 --input-builds $(NETX_DIR)/lib/classes.jar $(abs_top_builddir)/liveconnect/lib/classes.jar $(NETX_UNIT_TEST_DIR) $(JUNIT_RUNNER_JAR) $(TEST_EXTENSIONS_DIR) \
1176 --title "IcedTea-Web unit-tests codecoverage" ;
1177else
1178 echo "Sorry, coverage report cant be run without jacoco installed. Try installing jacoco or specify with-jacoco value" ;
1179 exit 5
1180endif
1181 touch $@
1182
1183#warning, during this target tests.build/netx/jnlp_testsengine/tests-output.xml is backup and rewriten (but not coresponding html file)
1184#xml results run from emma sandbox, however, can be wrong, co the new tests-output.xml is then renamed and orginal one restored
1185stamps/run-reproducers-test-code-coverage.stamp: stamps/run-netx-dist-tests.stamp $(REPRODUCERS_CLASS_NAMES)
1186if WITH_EMMA
1187 cd $(TESTS_DIR) ; \
1188 for file in $(EMMA_MODIFIED_FILES) ; do \
1189 mv $(TEST_EXTENSIONS_DIR)/$$file $(TEST_EXTENSIONS_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" ; \
1190 done ;\
1191 echo "backuping javaws and netx.jar in $(DESTDIR)" ; \
1192 netx_backup=$(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx_backup.jar ; \
1193 javaws_backup=$(DESTDIR)$(bindir)/javaws_backup ; \
1194 mv $(DESTDIR)$(bindir)/javaws $$javaws_backup ; \
1195 mv $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx.jar $$netx_backup ; \
1196 nw_bootclasspath="$(LAUNCHER_BOOTCLASSPATH):$(EMMA_JAR):$$netx_backup" ; \
1197 instructed_dir=$(TESTS_DIR)/instr ; \
1198 echo "instrumenting netx.jar from $$netx_backup through $$instructed_dir" ; \
1199 $(BOOT_DIR)/bin/java -cp $(EMMA_JAR) emma instr -d $$instructed_dir -ip $$netx_backup ; \
1200 pushd $$instructed_dir ; \
1201 $(BOOT_DIR)/bin/jar -cf $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx.jar * ; \
1202 popd ; \
1203 rm -rf $$instructed_dir ; \
1204 echo "patching $(javaws)" ; \
1205 cat $$javaws_backup | sed "s,$(LAUNCHER_BOOTCLASSPATH),$$nw_bootclasspath," > $(DESTDIR)$(bindir)/$(javaws) ; \
1206 chmod 777 $(DESTDIR)$(bindir)/$(javaws) ; \
1207 testcases_srcs=( ) ; \
1208 k=0 ; \
1209 types=($(ALL_REPRODUCERS)); \
1210 for which in "$${types[@]}" ; do \
1211 . $(abs_top_srcdir)/NEW_LINE_IFS ; \
1212 simpleReproducers=(`cat $(abs_top_builddir)/junit-jnlp-dist-$$which.txt `); \
1213 IFS="$$IFS_BACKUP" ; \
1214 for dir in "$${simpleReproducers[@]}" ; do \
1215 testcases_srcs[k]="-sp" ; \
1216 k=$$((k+1)) ; \
1217 testcases_srcs[k]="$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases/" ; \
1218 k=$$((k+1)) ; \
1219 done ; \
1220 done ; \
1221 cd $(TEST_EXTENSIONS_DIR) ; \
1222 class_names=`cat $(REPRODUCERS_CLASS_NAMES)` ; \
1223 CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):$(TEST_EXTENSIONS_DIR):.:$(TEST_EXTENSIONS_SRCDIR) ; \
1224 $(BOOT_DIR)/bin/java \
1225 $(EMMA_JAVA_ARGS) \
1226 $(REPRODUCERS_DPARAMETERS) \
1227 -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH -cp $(EMMA_JAR) emmarun \
1228 -raw \
1229 -cp $(NETX_DIR)/lib/classes.jar \
1230 -cp $(JUNIT_JAR) \
1231 -cp $(JUNIT_RUNNER_JAR) \
1232 -cp $(BOOT_DIR)/jre/lib/rt.jar \
1233 -cp $(BOOT_DIR)/jre/lib/jsse.jar \
1234 -cp $(BOOT_DIR)/jre/lib/resources.jar \
1235 -cp $(RHINO_RUNTIME) \
1236 -cp . \
1237 -cp $(TEST_EXTENSIONS_SRCDIR) \
1238 -cp $(TEST_EXTENSIONS_TESTS_DIR) \
1239 -ix "-org.junit.*" \
1240 -ix "-junit.*" \
1241 CommandLine $$class_names ; \
1242 mv $(TEST_EXTENSIONS_DIR)/coverage.ec $(TEST_EXTENSIONS_DIR)/coverageX.ec ; \
1243 mv $(TEST_EXTENSIONS_DIR)/coverage.es $(TEST_EXTENSIONS_DIR)/coverageX.es ; \
1244 $(BOOT_DIR)/bin/java $(EMMA_JAVA_ARGS) -cp $(EMMA_JAR) emma merge \
1245 -in $(TESTS_DIR)/coverage.em \
1246 -in $(TEST_EXTENSIONS_DIR)/coverageX.ec \
1247 -in $(TEST_EXTENSIONS_DIR)/coverageX.es ; \
1248 $(BOOT_DIR)/bin/java $(EMMA_JAVA_ARGS) -cp $(EMMA_JAR) -Demma.report.html.out.encoding=UTF-8 emma report \
1249 -Dreport.html.out.encoding=UTF-8 \
1250 -in $(TEST_EXTENSIONS_DIR)/coverage.es \
1251 -sp $(NETX_SRCDIR) \
1252 -sp $(NETX_UNIT_TEST_SRCDIR) \
1253 -sp $(JUNIT_RUNNER_SRCDIR) \
1254 -sp $(TEST_EXTENSIONS_SRCDIR) \
1255 -sp $(TEST_EXTENSIONS_TESTS_SRCDIR) \
1256 -r html \
1257 -r xml \
1258 "$${testcases_srcs[@]}" ; \
1259 echo "restoring javaws and netx.jar in $(DESTDIR)" ; \
1260 rm -f $(DESTDIR)$(bindir)/$(javaws) $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx.jar ; \
1261 rm -f $(DESTDIR)$(bindir)/$(javaws); \
1262 mv $$javaws_backup $(DESTDIR)$(bindir)/$(javaws); \
1263 mv $$netx_backup $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx.jar ; \
1264 for file in $(EMMA_MODIFIED_FILES) ; do \
1265 mv $(TEST_EXTENSIONS_DIR)/$$file $(TEST_EXTENSIONS_DIR)/"$$file""$(EMMA_SUFFIX)" ; \
1266 mv $(TEST_EXTENSIONS_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" $(TEST_EXTENSIONS_DIR)/$$file ; \
1267 done ;\
1268 rm $(TEST_EXTENSIONS_DIR)/coverage.txt ;
1269else
1270 echo "Sorry, coverage report cant be run without emma installed. Try install emma or specify with-emma value" ;
1271 exit 5
1272endif
1273 touch $@
1274
1275$(COVERABLE_PLUGIN_DIR):
1276 mkdir -p $(COVERABLE_PLUGIN_DIR);
1277
1278$(COVERABLE_PLUGIN_DIR)/%.o: $(PLUGIN_SRCDIR)/%.cc
1279 cd $(COVERABLE_PLUGIN_DIR) && \
1280 $(CXX) $(CXXFLAGS) \
1281 $(DEFS) $(VERSION_DEFS) \
1282 -DJDK_UPDATE_VERSION="\"$(JDK_UPDATE_VERSION)\"" \
1283 -DPLUGIN_NAME="\"IcedTea-Web Plugin with jacoco coverage agent\"" \
1284 -DPLUGIN_VERSION="\"$(PLUGIN_VERSION)\"" \
1285 -DPACKAGE_URL="\"$(PACKAGE_URL)\"" \
1286 -DMOZILLA_VERSION_COLLAPSED="$(MOZILLA_VERSION_COLLAPSED)" \
1287 -DICEDTEA_WEB_JRE="\"$(SYSTEM_JRE_DIR)\"" \
1288 -DPLUGIN_BOOTCLASSPATH=$(PLUGIN_COVERAGE_BOOTCLASSPATH) \
1289 -DCOVERAGE_AGENT=$(JACOCO_AGENT_PLUGIN_SWITCH) \
1290 $(GLIB_CFLAGS) \
1291 $(MOZILLA_CFLAGS) \
1292 -fvisibility=hidden \
1293 -fPIC -o $@ -c $<
1294
1295$(COVERABLE_PLUGIN_DIR)/$(BUILT_PLUGIN_LIBRARY): $(addprefix $(COVERABLE_PLUGIN_DIR)/,$(PLUGIN_OBJECTS))
1296 cd $(COVERABLE_PLUGIN_DIR) && \
1297 $(CXX) $(CXXFLAGS) \
1298 $(PLUGIN_OBJECTS) \
1299 $(GLIB_LIBS) \
1300 $(MOZILLA_LIBS) \
1301 -shared -o $@
1302
1303stamps/build-fake-plugin.stamp: $(COVERABLE_PLUGIN_DIR) $(addprefix $(PLUGIN_SRCDIR)/,$(PLUGIN_SRC)) $(addprefix $(COVERABLE_PLUGIN_DIR)/,$(PLUGIN_OBJECTS)) stamps/liveconnect-dist.stamp $(COVERABLE_PLUGIN_DIR)/$(BUILT_PLUGIN_LIBRARY)
1304 touch $@
1305
1306#warning, during this target tests.build/netx/jnlp_testsengine/tests-output.xml is backup and rewriten (but not coresponding html file)
1307#xml results run with jacoco agent, however, can be wrong, co the new tests-output.xml is then renamed and orginal one restored
1308stamps/run-reproducers-test-code-coverage-jacoco.stamp: stamps/run-netx-dist-tests.stamp $(REPRODUCERS_CLASS_NAMES) \
1309stamps/compile-jacoco-operator.stamp stamps/build-fake-plugin.stamp
1310if WITH_JACOCO
1311 cd $(TESTS_DIR) ; \
1312 for file in $(EMMA_MODIFIED_FILES) ; do \
1313 mv $(TEST_EXTENSIONS_DIR)/$$file $(TEST_EXTENSIONS_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" ; \
1314 done ;\
1315 echo "backuping javaws in $(DESTDIR)$(bindir)" ; \
1316 javaws_backup=$(DESTDIR)$(bindir)/javaws_backup ; \
1317 mv $(DESTDIR)$(bindir)/javaws $$javaws_backup ; \
1318 echo "patching $(javaws)" ; \
1319 nw_bootclasspath="$(LAUNCHER_BOOTCLASSPATH):$(JACOCO_CLASSPATH)" ; \
1320 cat $$javaws_backup | sed "s|COMMAND.k.=\"..JAVA.\"|COMMAND[k]=\"\\$$\\{JAVA\\}\" ; k=1 ; COMMAND[k]=$(JACOCO_AGENT_JAVAWS_SWITCH)|" | sed "s,$(LAUNCHER_BOOTCLASSPATH),$$nw_bootclasspath," > $(DESTDIR)$(bindir)/$(javaws) ; \
1321 chmod 777 $(DESTDIR)$(bindir)/$(javaws) ; \
1322 echo "backuping plugin in $(DESTDIR)/$(libdir)$(BUILT_PLUGIN_LIBRARY)" ; \
1323 plugin_backup=$(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY)_backup ; \
1324 mv $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) $$plugin_backup ; \
1325 echo "fakeing plugin" ; \
1326 cp $(COVERABLE_PLUGIN_DIR)/$(BUILT_PLUGIN_LIBRARY) $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) ; \
1327 testcases_srcs=( ) ; \
1328 k=0 ; \
1329 types=($(ALL_REPRODUCERS)); \
1330 for which in "$${types[@]}" ; do \
1331 . $(abs_top_srcdir)/NEW_LINE_IFS ; \
1332 simpleReproducers=(`cat $(abs_top_builddir)/junit-jnlp-dist-$$which.txt `); \
1333 IFS="$$IFS_BACKUP" ; \
1334 for dir in "$${simpleReproducers[@]}" ; do \
1335 testcases_srcs[k]="$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases/" ; \
1336 k=$$((k+1)) ; \
1337 done ; \
1338 done ; \
1339 cd $(TEST_EXTENSIONS_DIR) ; \
1340 class_names=`cat $(REPRODUCERS_CLASS_NAMES)` ; \
1341 CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):.:$(TEST_EXTENSIONS_DIR):$(JACOCO_CLASSPATH):$(TEST_EXTENSIONS_TESTS_DIR):$(TEST_EXTENSIONS_SRCDIR) ; \
1342 $(BOOT_DIR)/bin/java $(JACOCO_AGENT_SWITCH) $(REPRODUCERS_DPARAMETERS) \
1343 -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH CommandLine $$class_names ; \
1344 if [ -f $(JACOCO_JAVAWS_RESULTS) ] ; then \
1345 jacoco_javaws_results=$(JACOCO_JAVAWS_RESULTS) ; \
1346 $(JACOCO_OPERATOR_EXEC) \
1347 report --die-soon --html-output coverage-javaws --xml-output coverage-javaws.xml --input-file $(JACOCO_JAVAWS_RESULTS) \
1348 --input-srcs $(NETX_SRCDIR) \
1349 --input-builds $(NETX_DIR)/lib/classes.jar \
1350 --title "IcedTea-Web javaws reproducers codecoverage" ; \
1351 fi; \
1352 if [ -f $(JACOCO_PLUGIN_RESULTS) ] ; then \
1353 jacoco_plugin_results=$(JACOCO_PLUGIN_RESULTS) ; \
1354 $(JACOCO_OPERATOR_EXEC) \
1355 report --die-soon --html-output coverage-plugin --xml-output coverage-plugin.xml --input-file $(JACOCO_PLUGIN_RESULTS) \
1356 --input-srcs $(NETX_SRCDIR) $(PLUGIN_SRCDIR)/java \
1357 --input-builds $(NETX_DIR)/lib/classes.jar $(abs_top_builddir)/liveconnect/lib/classes.jar \
1358 --title "IcedTea-Web plugin reproducers codecoverage" ; \
1359 fi; \
1360 $(JACOCO_OPERATOR_EXEC) \
1361 merge --die-soon --input-files jacoco.exec $$jacoco_javaws_results $$jacoco_plugin_results --output-file jacoco-merged-reproducers.exec ; \
1362 $(JACOCO_OPERATOR_EXEC) \
1363 report --html-output coverage --xml-output coverage.xml --input-file jacoco-merged-reproducers.exec \
1364 --input-srcs $(NETX_SRCDIR) $(PLUGIN_SRCDIR)/java $(JUNIT_RUNNER_SRCDIR) $(TEST_EXTENSIONS_SRCDIR) $(TEST_EXTENSIONS_TESTS_SRCDIR) "$${testcases_srcs[@]}" \
1365 --input-builds $(NETX_DIR)/lib/classes.jar $(abs_top_builddir)/liveconnect/lib/classes.jar $(JUNIT_RUNNER_JAR) $(TEST_EXTENSIONS_DIR) $(TEST_EXTENSIONS_TESTS_DIR) \
1366 --title "IcedTea-Web reproducers-tests codecoverage" ; \
1367 echo "restoring javaws in $(DESTDIR)$(bindir)" ; \
1368 rm -f $(DESTDIR)$(bindir)/$(javaws); \
1369 mv $$javaws_backup $(DESTDIR)$(bindir)/$(javaws); \
1370 echo "restoring plugin in $(DESTDIR)/$(libdir)$(BUILT_PLUGIN_LIBRARY)" ; \
1371 mv $$plugin_backup $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) ; \
1372 for file in $(EMMA_MODIFIED_FILES) ; do \
1373 mv $(TEST_EXTENSIONS_DIR)/$$file $(TEST_EXTENSIONS_DIR)/"$$file""$(EMMA_SUFFIX)" ; \
1374 mv $(TEST_EXTENSIONS_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" $(TEST_EXTENSIONS_DIR)/$$file ; \
1375 done ;
1376else
1377 echo "Sorry, coverage report cant be run without jacoco installed. Try installing jacoco or specify with-jacoco value" ;
1378 exit 5
1379endif
1380 touch $@
1381
1382run-test-code-coverage-jacoco: stamps/run-unit-test-code-coverage-jacoco.stamp stamps/run-reproducers-test-code-coverage-jacoco.stamp
1383if WITH_JACOCO
1384 cd $(TESTS_DIR) ; \
1385 k=0 ; \
1386 types=($(ALL_REPRODUCERS)); \
1387 for which in "$${types[@]}" ; do \
1388 . $(abs_top_srcdir)/NEW_LINE_IFS ; \
1389 simpleReproducers=(`cat $(abs_top_builddir)/junit-jnlp-dist-$$which.txt `); \
1390 IFS="$$IFS_BACKUP" ; \
1391 for dir in "$${simpleReproducers[@]}" ; do \
1392 testcases_srcs[k]="$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases/" ; \
1393 k=$$((k+1)) ; \
1394 done ; \
1395 done ; \
1396 class_names=`cat $(REPRODUCERS_CLASS_NAMES)` ; \
1397 $(JACOCO_OPERATOR_EXEC) \
1398 merge --die-soon --input-files $(TEST_EXTENSIONS_DIR)/jacoco-merged-reproducers.exec $(NETX_UNIT_TEST_DIR)/jacoco.exec --output-file jacoco-merged.exec; \
1399 $(JACOCO_OPERATOR_EXEC) \
1400 report --html-output coverage --xml-output coverage.xml --input-file jacoco-merged.exec \
1401 --input-srcs $(NETX_SRCDIR) $(PLUGIN_SRCDIR)/java $(JUNIT_RUNNER_SRCDIR) $(TEST_EXTENSIONS_SRCDIR) $(TEST_EXTENSIONS_TESTS_SRCDIR) "$${testcases_srcs[@]}" \
1402 --input-builds $(NETX_DIR)/lib/classes.jar $(abs_top_builddir)/liveconnect/lib/classes.jar $(JUNIT_RUNNER_JAR) $(TEST_EXTENSIONS_DIR) $(TEST_EXTENSIONS_TESTS_DIR) \
1403 --input-srcs $(NETX_UNIT_TEST_SRCDIR) \
1404 --input-builds $(NETX_UNIT_TEST_DIR) \
1405 --title "IcedTea-Web complete codecoverage" ;
1406else
1407 echo "Sorry, coverage report cant be run without jacoco installed. Try installing jacoco or specify with-jacoco value" ;
1408 exit 5
1409endif
1410
1411run-test-code-coverage: stamps/run-unit-test-code-coverage.stamps stamps/run-reproducers-test-code-coverage.stamps
1412if WITH_EMMA
1413 cd $(TESTS_DIR) ; \
1414 k=0 ; \
1415 types=($(ALL_REPRODUCERS)); \
1416 for which in "$${types[@]}" ; do \
1417 . $(abs_top_srcdir)/NEW_LINE_IFS ; \
1418 simpleReproducers=(`cat $(abs_top_builddir)/junit-jnlp-dist-$$which.txt `); \
1419 IFS="$$IFS_BACKUP" ; \
1420 for dir in "$${simpleReproducers[@]}" ; do \
1421 testcases_srcs[k]="-sp" ; \
1422 k=$$((k+1)) ; \
1423 testcases_srcs[k]="$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases/" ; \
1424 k=$$((k+1)) ; \
1425 done ; \
1426 done ; \
1427 $(BOOT_DIR)/bin/java $(EMMA_JAVA_ARGS) -cp $(EMMA_JAR) emma merge \
1428 -in $(NETX_UNIT_TEST_DIR)/coverage.es \
1429 -in $(TEST_EXTENSIONS_DIR)/coverage.es ; \
1430 $(BOOT_DIR)/bin/java $(EMMA_JAVA_ARGS) -cp $(EMMA_JAR) -Demma.report.html.out.encoding=UTF-8 emma report \
1431 -Dreport.html.out.encoding=UTF-8 \
1432 -in $(TESTS_DIR)/coverage.es \
1433 -in $(TESTS_DIR)/coverage.em \
1434 -sp $(NETX_SRCDIR) \
1435 -sp $(NETX_UNIT_TEST_SRCDIR) \
1436 -sp $(JUNIT_RUNNER_SRCDIR) \
1437 -sp $(TEST_EXTENSIONS_SRCDIR) \
1438 -sp $(TEST_EXTENSIONS_TESTS_SRCDIR) \
1439 "$${testcases_srcs[@]}" \
1440 -r html \
1441 -r xml ;
1442else
1443 echo "Sorry, coverage report cant be run without emma installed. Try install emma or specify with-emma value" ;
1444 exit 5
1445endif
1446
1447run-test-server-on-44321: stamps/netx.stamp stamps/junit-jnlp-dist-dirs stamps/netx-dist-tests-import-cert-to-public \
1448 stamps/test-extensions-compile.stamp stamps/compile-reproducers-testcases.stamp $(JUNIT_RUNNER_JAR) stamps/copy-reproducers-resources.stamp
1449 cd $(TEST_EXTENSIONS_DIR) ; \
1450 CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):.:$(TEST_EXTENSIONS_TESTS_DIR) ; \
1451 $(BOOT_DIR)/bin/java $(REPRODUCERS_DPARAMETERS) \
1452 -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH net.sourceforge.jnlp.ServerAccess
1453
1454run-test-server-on-random-port: stamps/netx.stamp stamps/junit-jnlp-dist-dirs stamps/netx-dist-tests-import-cert-to-public \
1455 stamps/test-extensions-compile.stamp stamps/compile-reproducers-testcases.stamp $(JUNIT_RUNNER_JAR) stamps/copy-reproducers-resources.stamp
1456 cd $(TEST_EXTENSIONS_DIR) ; \
1457 CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):.:$(TEST_EXTENSIONS_TESTS_DIR) ; \
1458 $(BOOT_DIR)/bin/java $(REPRODUCERS_DPARAMETERS) \
1459 -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH net.sourceforge.jnlp.ServerAccess randomport
1460
1461clean-netx-tests: clean-netx-unit-tests clean-junit-runner clean-netx-dist-tests clean-test-code-coverage-jacoco clean-test-code-coverage
1462 if [ -e $(TESTS_DIR)/netx ]; then \
1463 rmdir $(TESTS_DIR)/netx ; \
1464 fi
1465
1466clean-junit-runner:
1467 rm -f junit-runner-source-files.txt
1468 rm -rf $(JUNIT_RUNNER_DIR)
1469 rm -f $(JUNIT_RUNNER_JAR)
1470
1471clean-netx-unit-tests: clean_tests_reports
1472 rm -f netx-unit-tests-source-files.txt
1473 rm -rf $(NETX_UNIT_TEST_DIR)
1474 rm -f $(UNIT_CLASS_NAMES)
1475 rm -f stamps/check-pac-functions.stamp
1476 rm -f stamps/run-netx-unit-tests.stamp
1477 rm -f stamps/netx-unit-tests-compile.stamp
1478
1479clean_tests_reports:
1480 rm -rf $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME)/
1481 rm -f $(TESTS_DIR)/*.html
1482 rm -f $(TESTS_DIR)/summary_unit.txt
1483 rm -f $(TESTS_DIR)/summary_reproducers.txt
1484
1485clean-$(SOFTKILLER):
1486 rm -f $(TESTS_DIR)/softkiller
1487
1488clean-netx-dist-tests: clean_tests_reports netx-dist-tests-remove-cert-from-public clean-custom-reproducers clean-$(SOFTKILLER)
1489 rm -f test-extensions-source-files.txt
1490 rm -f test-extensions-tests-source-files.txt
1491 rm -f $(TEST_EXTENSIONS_COMPATIBILITY_SYMLINK)
1492 rm -rf $(TEST_EXTENSIONS_TESTS_DIR)
1493 rm -rf $(REPRODUCERS_BUILD_DIR)
1494 rm -rf $(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)
1495 rm -rf $(TEST_EXTENSIONS_DIR)
1496 rm -f stamps/junit-jnlp-dist-dirs
1497 rm -f stamps/test-extensions-compile.stamp
1498 rm -f stamps/test-extensions-tests-compile.stamp
1499 rm -f stamps/netx-dist-tests-prepare-reproducers.stamp
1500 rm -f stamps/compile-reproducers-testcases.stamp
1501 rm -f stamps/copy-reproducers-resources.stamp
1502 rm -f stamps/netx-dist-tests-sign-some-reproducers.stamp
1503 rm -f stamps/change-dots-to-paths.stamp
1504 rm -f junit-jnlp-dist-simple.txt
1505 rm -f junit-jnlp-dist-custom.txt
1506 rm -f netx-dist-tests-tests-source-files.txt
1507 types=($(SIGNED_REPRODUCERS)) ; \
1508 for which in "$${types[@]}" ; do \
1509 rm -f junit-jnlp-dist-$$which.txt ; \
1510 rm -f $(EXPORTED_TEST_CERT_PREFIX)_$$which.$(EXPORTED_TEST_CERT_SUFFIX) ; \
1511 done ;
1512 rm -f stamps/exported-test-certs.stamp
1513 rm -f stamps/junit-jnlp-dist-signed.stamp
1514 rm -f $(REPRODUCERS_CLASS_NAMES)
1515 rm -f $(abs_top_builddir)/$(PRIVATE_KEYSTORE_NAME)
1516 rm -f stamps/run-netx-dist-tests.stamp
1517
1518clean-unit-test-code-coverage:
1519 if [ -e stamps/run-unit-test-code-coverage.stamp ]; then \
1520 rm -rf $(NETX_UNIT_TEST_DIR)/coverage ; \
1521 rm -f $(NETX_UNIT_TEST_DIR)/coverage.xml ; \
1522 rm -f $(NETX_UNIT_TEST_DIR)/coverageX.es ; \
1523 rm -f $(NETX_UNIT_TEST_DIR)/coverageX.ec ; \
1524 rm -f $(NETX_UNIT_TEST_DIR)/coverage.es ; \
1525 rm -f $(NETX_UNIT_TEST_DIR)/tests-output_withEmma.xml ; \
1526 rm -f stamps/run-unit-test-code-coverage.stamp ; \
1527 fi
1528
1529clean-reproducers-test-code-coverage:
1530 if [ -e stamps/run-reproducers-test-code-coverage.stamp ]; then \
1531 rm -rf $(TEST_EXTENSIONS_DIR)/coverage ; \
1532 rm -f $(TEST_EXTENSIONS_DIR)/coverage.xml ; \
1533 rm -f $(TEST_EXTENSIONS_DIR)/coverage.es ; \
1534 rm -f $(TEST_EXTENSIONS_DIR)/tests-output_withEmma.xml ; \
1535 rm -f stamps/run-reproducers-test-code-coverage.stamp ; \
1536 fi
1537
1538clean-test-code-coverage: clean-unit-test-code-coverage clean-reproducers-test-code-coverage
1539 if [ -e $(TESTS_DIR)/coverage.xml ]; then \
1540 rm -rf $(TESTS_DIR)/coverage ; \
1541 rm -f $(TESTS_DIR)/coverage.xml ; \
1542 rm -f $(TESTS_DIR)/coverage.es ; \
1543 rm -f $(TESTS_DIR)/coverage.em ; \
1544 fi
1545
1546clean-unit-test-code-coverage-jacoco:
1547 if [ -e stamps/run-unit-test-code-coverage-jacoco.stamp ]; then \
1548 rm -rf $(NETX_UNIT_TEST_DIR)/coverage ; \
1549 rm -f $(NETX_UNIT_TEST_DIR)/coverage.xml ; \
1550 rm -f $(NETX_UNIT_TEST_DIR)/jacoco.exec ; \
1551 rm -f $(NETX_UNIT_TEST_DIR)/tests-output_withEmma.xml ; \
1552 rm -f stamps/run-unit-test-code-coverage-jacoco.stamp ; \
1553 fi
1554
1555clean-reproducers-test-code-coverage-jacoco:
1556 if [ -e stamps/run-reproducers-test-code-coverage-jacoco.stamp ]; then \
1557 rm -rf $(TEST_EXTENSIONS_DIR)/coverage-javaws ; \
1558 rm -f $(TEST_EXTENSIONS_DIR)/coverage-javaws.xml ; \
1559 rm -f $(TEST_EXTENSIONS_DIR)/jacoco_javaws.exec ; \
1560 rm -rf $(TEST_EXTENSIONS_DIR)/coverage-plugin ; \
1561 rm -f $(TEST_EXTENSIONS_DIR)/coverage-plugin.xml ; \
1562 rm -f $(TEST_EXTENSIONS_DIR)/jacoco_plugin.exec ; \
1563 rm -rf $(TEST_EXTENSIONS_DIR)/coverage ; \
1564 rm -f $(TEST_EXTENSIONS_DIR)/coverage.xml ; \
1565 rm -f $(TEST_EXTENSIONS_DIR)/jacoco-merged-reproducers.exec ; \
1566 rm -f $(TEST_EXTENSIONS_DIR)/tests-output_withEmma.xml ; \
1567 rm -f stamps/run-reproducers-test-code-coverage-jacoco.stamp ; \
1568 fi
1569
1570clean-test-code-coverage-jacoco: clean-unit-test-code-coverage-jacoco clean-reproducers-test-code-coverage-jacoco clean-test-code-coverage-tools-jacoco
1571 if [ -e $(TESTS_DIR)/coverage.xml ]; then \
1572 rm -rf $(TESTS_DIR)/coverage ; \
1573 rm -f $(TESTS_DIR)/jacoco-merged.exec; \
1574 fi
1575
1576clean-test-code-coverage-tools-jacoco:
1577 rm -rf $(JACOCO_OPERATOR_DIR)
1578 rm -rf $(COVERABLE_PLUGIN_DIR)
1579 rm -f stamps/compile-jacoco-operator.stamp;
1580 rm -f jacoco-operator-source-files.txt
1581 rm -f stamps/build-fake-plugin.stamp
1582
1583
1584# plugin tests
1585
1586if ENABLE_PLUGIN
1587stamps/plugin-tests.stamp: $(PLUGIN_TEST_SRCS) stamps/plugin.stamp
1588 mkdir -p plugin/tests/LiveConnect
1589 $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
1590 -d plugin/tests/LiveConnect \
1591 -classpath liveconnect/lib/classes.jar \
1592 $(PLUGIN_TEST_SRCS) ;
1593 $(BOOT_DIR)/bin/jar cf plugin/tests/LiveConnect/PluginTest.jar \
1594 plugin/tests/LiveConnect/*.class ;
1595 cp -pPR $(SRC_DIR_LINK) $(abs_top_srcdir)/plugin/tests/LiveConnect/*.{js,html} \
1596 plugin/tests/LiveConnect ;
1597 echo "Done. Now launch \"firefox file://`pwd`/index.html\"" ;
1598 mkdir -p stamps
1599 touch stamps/plugin-tests.stamp
1600endif
1601
1602# Bootstrap Directory Targets
1603# ===========================
1604
1605stamps/native-ecj.stamp:
1606 mkdir -p stamps ; \
1607 if test "x$(GCJ)" != "xno"; then \
1608 $(GCJ) $(IT_CFLAGS) -Wl,-Bsymbolic -findirect-dispatch -o native-ecj \
1609 --main=org.eclipse.jdt.internal.compiler.batch.Main ${ECJ_JAR} ; \
1610 fi ; \
1611 touch stamps/native-ecj.stamp
1612
1613clean-native-ecj:
1614 rm -f native-ecj
1615 rm -rf stamps/native-ecj.stamp
1616
1617# bootstrap
1618stamps/bootstrap-directory.stamp: stamps/native-ecj.stamp
1619 mkdir -p $(BOOT_DIR)/bin stamps/
1620 ln -sf $(JAVA) $(BOOT_DIR)/bin/java
1621 ln -sf $(JAR) $(BOOT_DIR)/bin/jar
1622 ln -sf $(abs_top_builddir)/javac $(BOOT_DIR)/bin/javac
1623 ln -sf $(JAVADOC) $(BOOT_DIR)/bin/javadoc
1624 if [ -e "$(KEYTOOL)" ] ; then \
1625 ln -sf $(KEYTOOL) $(BOOT_DIR)/bin/keytool ;\
1626 else \
1627 echo "#! /bin/sh" > $(BOOT_DIR)/bin/keytool ;\
1628 echo "echo \"keytool not exist on your system, signed part of reproducers test will fail\"" >> $(BOOT_DIR)/bin/keytool ;\
1629 chmod 777 $(BOOT_DIR)/bin/keytool ;\
1630 fi
1631 if [ -e "$(JARSIGNER)" ] ; then \
1632 ln -sf $(JARSIGNER) $(BOOT_DIR)/bin/jarsigner ;\
1633 else \
1634 echo "#! /bin/sh" > $(BOOT_DIR)/bin/jarsigner ;\
1635 echo "echo \"jarsigner not exist on your system, signed part of reproducers test will fail\"" >> $(BOOT_DIR)/bin/jarsigner ;\
1636 chmod 777 $(BOOT_DIR)/bin/jarsigner ;\
1637 fi
1638 mkdir -p $(BOOT_DIR)/jre/lib && \
1639 ln -s $(SYSTEM_JRE_DIR)/lib/rt.jar $(BOOT_DIR)/jre/lib && \
1640 if [ -e $(SYSTEM_JRE_DIR)/lib/jsse.jar ] ; then \
1641 ln -s $(SYSTEM_JRE_DIR)/lib/jsse.jar $(BOOT_DIR)/jre/lib ; \
1642 else \
1643 ln -s rt.jar $(BOOT_DIR)/jre/lib/jsse.jar ; \
1644 fi
1645 if [ -e $(SYSTEM_JRE_DIR)/lib/resources.jar ] ; then \
1646 ln -s $(SYSTEM_JRE_DIR)/lib/resources.jar $(BOOT_DIR)/jre/lib ; \
1647 else \
1648 ln -s rt.jar $(BOOT_DIR)/jre/lib/resources.jar ; \
1649 fi
1650 ln -sf $(SYSTEM_JRE_DIR)/lib/$(JRE_ARCH_DIR) \
1651 $(BOOT_DIR)/jre/lib/ && \
1652 if ! test -d $(BOOT_DIR)/jre/lib/$(INSTALL_ARCH_DIR); \
1653 then \
1654 ln -sf ./$(JRE_ARCH_DIR) \
1655 $(BOOT_DIR)/jre/lib/$(INSTALL_ARCH_DIR); \
1656 fi;
1657 mkdir -p $(BOOT_DIR)/include && \
1658 for i in $(SYSTEM_JDK_DIR)/include/*; do \
1659 test -r $$i | continue; \
1660 i=`basename $$i`; \
1661 rm -f $(BOOT_DIR)/include/$$i; \
1662 ln -s $(SYSTEM_JDK_DIR)/include/$$i $(BOOT_DIR)/include/$$i; \
1663 done
1664 mkdir -p stamps
1665 touch stamps/bootstrap-directory.stamp
1666
1667clean-bootstrap-directory:
1668 rm -rf $(BOOT_DIR)
1669 if [ -e ${abs_top_builddir}/bootstrap ] ; then \
1670 rmdir ${abs_top_builddir}/bootstrap ; \
1671 fi
1672 rm -f stamps/bootstrap-directory.stamp
1673
1674# Target Aliases
1675# ===============
1676
1677add-netx: stamps/add-netx.stamp
1678
1679add-netx-debug: stamps/add-netx-debug.stamp
1680
1681netx: stamps/netx.stamp
1682
1683netx-dist: stamps/netx-dist.stamp
1684
1685plugin: stamps/plugin.stamp
1686
1687plugin-tests: stamps/plugin-tests.stamp
1688
1689check-pac-functions: stamps/check-pac-functions.stamp
1690
1691run-netx-unit-tests: stamps/run-netx-unit-tests.stamp
1692
1693links: stamps/global-links.stamp
1694
1695user-links: stamps/user-links.stamp
1696
1697run-netx-dist-tests: stamps/run-netx-dist-tests.stamp
1698
1699run-unit-test-code-coverage: stamps/run-unit-test-code-coverage.stamp
1700
1701run-reproducers-test-code-coverage: stamps/run-reproducers-test-code-coverage.stamp
1702
1703run-unit-test-code-coverage-jacoco: stamps/run-unit-test-code-coverage-jacoco.stamp
1704
1705run-reproducers-test-code-coverage-jacoco: stamps/run-reproducers-test-code-coverage-jacoco.stamp
Note: See TracBrowser for help on using the repository browser.