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