Mercurial > hg > release > icedtea-web-1.8
view Makefile.am @ 1538:67eb4fc36fa0
Added optional windows desktop integration
* AUTHORS: added Joel
* Makefile: Excluded (WindowsDesktopEntry.java) if mslinks are not included, added mslinks to UNIFIED_CLASSPATH_SEGMENTS included mslinks to windows and linux runtime libs, added MSLINKS_JAR to other composeclasspath calls
* NEWS: mentioned windows desktop support, mentioned listing of cache and operations via id.
* acinclude.m4: added check (IT_CHECK_FOR_MSLINKS) for optional mslinks.jar, strong warning printed if build is on windows
* configure.ac: call (IT_CHECK_FOR_MSLINKS)
* netx/net/sourceforge/jnlp/Launcher.java: new variable of (KEY_JAVAWS_LOCATION) to replace hardcoded icedtea-web.bin.location over netx.
* netx/net/sourceforge/jnlp/OptionsDefinitions.java: re-declared clear cache to take none or one argument. Added Xcacheids switch for listing the cache (works with verbose)
* netx/net/sourceforge/jnlp/cache/CacheDirectory.java: refactored hardcoded ".info" to constant.
* netx/net/sourceforge/jnlp/cache/CacheEntry.java: introduced KEY_JNLP_PATH and used to set jnlp-path attribute
* netx/net/sourceforge/jnlp/cache/CacheLRUWrapper.java: hide private constructor, declared and provided (windowsShortcutList)
* netx/net/sourceforge/jnlp/cache/CacheUtil.java: extracted and used (checkToClearCache). Added second method clearCache with arg to clear only specific part of cache. Clear cache also alerts windows desktop files now via new removeWindowsShortcuts. Added methods to lists ids and details from cache listCacheIds and getCacheIds. Included new inner class CacheId to encapsualte various types of id - CacheJnlpId and CacheDomainId now.
* netx/net/sourceforge/jnlp/cache/DirectoryNode.java: only adapted to .info refactoring
* netx/net/sourceforge/jnlp/cache/ResourceDownloader.java: Save main argument, or jnlp argument or html argument to jnlp-path .info entry if found.
* netx/net/sourceforge/jnlp/controlpanel/CacheAppViewer.java: gui to itweb-settings cache pane to allow comfortable listing of ids and deleting via those grouping. New file.
* netx/net/sourceforge/jnlp/controlpanel/CachePane.java: added logic to show .info details for each file shown by cache viewer. (generateData) made jnlp-path aware, made public and reused several times
* netx/net/sourceforge/jnlp/controlpanel/TemporaryInternetFilesPanel.java: added button to show dilog which is deleting by id
* netx/net/sourceforge/jnlp/resources/Messages.properties: added BXclearcache BXSingleCacheCleared BXSingleCacheClearNotFound BXSingleCacheMoreThenOneId BXSingleCacheFileCount BXcacheids NOAnonorone WinDesktopError. Modified BXclearcache. Improved EXAWdesktopWants EXAWdesktopDontWants EXAWsubmenu EXAWmenuWants EXAWmenuDontWants EXAWrememberByApp EXAWrememberByPage EXAWrememberByAppTooltip EXAWbrowsersTolltip SDesktopShortcut
* netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java: added if isWindows reflective calls to WindowsDesktopEntry and original XdesktopEntry work moved to else part.
* netx/net/sourceforge/jnlp/runtime/Boot.java: now offer getter for optionParser (so it van be reused in ResourceDownloader) Added understanding to Xcacheids. Understanding to Xclearcache adapted to its new optional argument
* netx/net/sourceforge/jnlp/util/GenericDesktopEntry.java: interface for (future) WindowsDesktopEntry and XDesktopEntry unification
* netx/net/sourceforge/jnlp/util/WindowsDesktopEntry.java: new file, implementation fo windos desktop integration via lnk files generated by mslinks.jar. Unlike XDesktop integration, it swarms also uninstall shortcuts.
* netx/net/sourceforge/jnlp/util/XDesktopEntry.java: Mostly adapted to refactorings. Extracted extraction of favicon to method, reused, and improved to try more locations on server.
* netx/net/sourceforge/jnlp/util/optionparser/OptionParser.java: adapted to refactorings
* shell-launcher/launchers.bat.in: mslinks included in bootclasspath
* tests/netx/unit/net/sourceforge/jnlp/cache/CacheUtilTest.java: addd tests for CacheId
* tests/netx/unit/net/sourceforge/jnlp/util/XDesktopEntryTest.java: Added tests for favicon extracti
author | Jiri Vanek <jvanek@redhat.com> |
---|---|
date | Tue, 15 Jan 2019 16:12:46 +0100 |
parents | e5394f3f30d3 |
children | 889bb8e09dda |
line wrap: on
line source
if WINDOWS export CLASSPATH_SEPARATOR = ; else export CLASSPATH_SEPARATOR = : endif # Functions to compose path/classpath EMPTY := SPACE := $(EMPTY) $(EMPTY) define joinsegments $(subst $(SPACE),$(CLASSPATH_SEPARATOR),$(strip $1)) endef define composeclasspath $(if $(call joinsegments,$1),-classpath "$(call joinsegments,$1)",) endef # Source directories if WINDOWS export TOP_BUILD_DIR := $(shell cygpath -p -m "$(abs_top_builddir)") export TOP_SRC_DIR := $(shell cygpath -p -m "$(abs_top_srcdir)") export prefix := $(shell cygpath -p -m "$(prefix)") export CPA="-v" WIN_LAUNCHERS=launcher.build/$(javaws).bat launcher.build/$(itweb_settings).bat launcher.build/$(policyeditor).bat else export TOP_BUILD_DIR = $(abs_top_builddir) export TOP_SRC_DIR = $(abs_top_srcdir) export CPA="-av" WIN_LAUNCHERS= endif if ENABLE_SHELL_LAUNCHERS SHELL_LUNCHERS=$(WIN_LAUNCHERS) launcher.build/$(javaws).sh launcher.build/$(itweb_settings).sh launcher.build/$(policyeditor).sh else SHELL_LUNCHERS= endif if ENABLE_NATIVE_LAUNCHERS NATIVE_LUNCHERS=launcher.build/$(javaws) launcher.build/$(itweb_settings) launcher.build/$(policyeditor) DESKTOP_SUFFIX= else NATIVE_LUNCHERS= DESKTOP_SUFFIX=.sh endif # javaws is program name, JAVAWS is used executable name. in 99.9% those are equals. # in unsupported case (no rust, and enforced shell lunchers), it will become javaws.sh. # similar case is for other two binaries. JAVAWS=$(javaws)$(DESKTOP_SUFFIX) ITWEB_SETTINGS=$(itweb_settings)$(DESKTOP_SUFFIX) POLICYEDITOR=$(policyeditor)$(DESKTOP_SUFFIX) LAUNCHERS=$(NATIVE_LUNCHERS) $(SHELL_LUNCHERS) DESKTOP_FILES=javaws.desktop itweb-settings.desktop policyeditor.desktop DESKTOP_IN_FILES=javaws.desktop.in itweb-settings.desktop.in policyeditor.desktop.in export WIN_INSTALLER_DIR = $(TOP_BUILD_DIR)/win-installer.build export WIN_INSTALLER_SRC_DIR = $(TOP_SRC_DIR)/win-installer export NETX_DIR = $(TOP_BUILD_DIR)/netx.build export DOCS_DIR=$(TOP_BUILD_DIR)/icedtea-web-docs/$(FULL_VERSION) export NETX_SRCDIR = $(TOP_SRC_DIR)/netx export NETX_RESOURCE_DIR=$(NETX_SRCDIR)/net/sourceforge/jnlp/resources export ICONS_DEST_DIR=$(DESTDIR)$(datadir)/pixmaps export BASH_CMPL_DEST_DIR=$(DESTDIR)@bashcompdir@ export WIN_ALL_DEPS=$(DESTDIR)$(prefix)/win-deps-all export WIN_RUN_DEPS=$(DESTDIR)$(prefix)/win-deps-runtime export LINUX_BIN_DIST_DEPS=$(DESTDIR)$(prefix)/linux-deps-runtime export REPORT_STYLES_DIRNAME=report-styles export TESTS_SRCDIR=$(TOP_SRC_DIR)/tests export TESTS_DIR=$(TOP_BUILD_DIR)/tests.build export NETX_UNIT_TEST_SRCDIR=$(TESTS_SRCDIR)/netx/unit export NETX_TEST_DIR=$(TESTS_DIR)/netx export NETX_UNIT_TEST_DIR=$(NETX_TEST_DIR)/unit export JUNIT_RUNNER_DIR=$(TESTS_DIR)/junit-runner export JUNIT_RUNNER_SRCDIR=$(TESTS_SRCDIR)/junit-runner export JACOCO_OPERATOR_DIR=$(TESTS_DIR)/jacoco-operator export JACOCO_OPERATOR_SRCDIR=$(TESTS_SRCDIR)/jacoco-operator export TEST_EXTENSIONS_SRCDIR=$(TESTS_SRCDIR)/test-extensions export TEST_EXTENSIONS_TESTS_SRCDIR=$(TESTS_SRCDIR)/test-extensions-tests export REPRODUCERS_TESTS_SRCDIR=$(TESTS_SRCDIR)/reproducers export TEST_EXTENSIONS_DIR=$(TESTS_DIR)/test-extensions export CPP_UNITTEST_FRAMEWORK_SRCDIR=$(TESTS_SRCDIR)/UnitTest++ export CPP_UNITTEST_SRCDIR=$(TESTS_SRCDIR)/cpp-unit-tests export CPP_UNITTEST_DIR=$(TESTS_DIR)/cpp-unit-tests export TEST_EXTENSIONS_COMPATIBILITY_SYMLINK=$(TESTS_DIR)/netx/jnlp_testsengine export TEST_EXTENSIONS_TESTS_DIR=$(TESTS_DIR)/test-extensions-tests export REPRODUCERS_TESTS_SERVER_DEPLOYDIR=$(TESTS_DIR)/reproducers_test_server_deploydir export REPRODUCERS_BUILD_DIR=$(TESTS_DIR)/reproducers.classes export PRIVATE_KEYSTORE_NAME=teststore.ks export PRIVATE_KEYSTORE_PASS=123456789 export EXPORTED_TEST_CERT_PREFIX=icedteatests export EXPORTED_TEST_CERT_SUFFIX=crt export TEST_CERT_ALIAS=icedteaweb export PUBLIC_KEYSTORE_STUB=icedtea-web/security/trusted.certs export PUBLIC_KEYSTORE_PASS=changeit export JUNIT_RUNNER_JAR=$(TOP_BUILD_DIR)/junit-runner.jar export UNIT_CLASS_NAMES = $(TOP_BUILD_DIR)/unit_class_names export REPRODUCERS_CLASS_NAMES = $(TOP_BUILD_DIR)/reproducers_class_names export REPRODUCERS_CLASS_WHITELIST = $(TOP_SRC_DIR)/netx-dist-tests-whitelist export COVERAGE_JAVA_ARGS=-Xmx2G export COVERAGE_MODIFIED_FILES=tests-output.xml ServerAccess-logs.xml stdout.log stderr.log all.log export EMMA_BACKUP_SUFFIX=_noEmma export EMMA_SUFFIX=_withEmma export META_MANIFEST = META-INF/MANIFEST.MF export SIGNED_REPRODUCERS=signed signed2 export SIMPLE_REPRODUCERS=simple export CUSTOM_REPRODUCERS=custom export ALL_NONCUSTOM_REPRODUCERS=$(SIMPLE_REPRODUCERS) $(SIGNED_REPRODUCERS) export ALL_REPRODUCERS=$(ALL_NONCUSTOM_REPRODUCERS) $(CUSTOM_REPRODUCERS) export JACOCO_PATH:=$(shell dirname "$(JACOCO_JAR)") export JACOCO_AGENT=org.jacoco.agent.jar export JACOCO_ANT=org.jacoco.ant.jar export JACOCO_REPORT=org.jacoco.report.jar export JACOCO_AGENTRT=org.jacoco.agent.rt.jar export JACOCO_CORE=org.jacoco.core.jar export JACOCO_JAVAWS_RESULTS=$(TEST_EXTENSIONS_DIR)/jacoco_javaws.exec export JACOCO_PLUGIN_RESULTS=$(TEST_EXTENSIONS_DIR)/jacoco_plugin.exec # space separated fragments for composeclasspath export JACOCO_CLASSPATH=$(JACOCO_PATH)/$(JACOCO_CORE) $(JACOCO_PATH)/$(JACOCO_AGENT) $(JACOCO_PATH)/$(JACOCO_REPORT) $(JACOCO_PATH)/$(JACOCO_AGENTRT) $(JACOCO_PATH)/$(JACOCO_ANT) $(ASM_JAR) export JACOCO_AGENT_SWITCH_BODY=-javaagent:$(JACOCO_PATH)/$(JACOCO_AGENTRT) export JACOCO_BASE_EXCLUDE=org.junit.*:junit.* export JACOCO_ADVANCED_EXCLUDE=:*jacoco*:java.lang.*:java.reflect.*:java.util.*:sun.reflect.*:javax.swing.* export JACOCO_AGENT_SWITCH="$(JACOCO_AGENT_SWITCH_BODY)=excludes=$(JACOCO_BASE_EXCLUDE)$(JACOCO_ADVANCED_EXCLUDE),inclbootstrapclasses=true" export JACOCO_AGENT_JAVAWS_SWITCH=\"$(JACOCO_AGENT_SWITCH),destfile=$(JACOCO_JAVAWS_RESULTS)\" export JACOCO_AGENT_PLUGIN_SWITCH=\"$(JACOCO_AGENT_SWITCH),destfile=$(JACOCO_PLUGIN_RESULTS)\" export JACOCO_OPERATOR_EXEC=$(SYSTEM_JRE_DIR)/bin/java $(COVERAGE_JAVA_ARGS) -cp $(call joinsegments, $(JACOCO_OPERATOR_DIR) $(JACOCO_CLASSPATH) .) org.jacoco.operator.Main # linking variables export PLUGIN_LINK_NAME=libjavaplugin.so export MOZILLA_LOCAL_PLUGINDIR=${HOME}/.mozilla/plugins export MOZILLA_GLOBAL64_PLUGINDIR=/usr/lib64/mozilla/plugins export MOZILLA_GLOBAL32_PLUGINDIR=/usr/lib/mozilla/plugins export OPERA_GLOBAL64_PLUGINDIR=/usr/lib64/opera/plugins export OPERA_GLOBAL32_PLUGINDIR=/usr/lib/opera/plugins export BUILT_PLUGIN_LIBRARY=IcedTeaPlugin.so export CPP_UNITTEST_FRAMEWORK_BUILDDIR=$(CPP_UNITTEST_DIR)/UnitTest++ export CPP_UNITTEST_FRAMEWORK_LIB_NAME=libUnitTest++.a export CPP_UNITTEST_FRAMEWORK_LIB=$(CPP_UNITTEST_FRAMEWORK_BUILDDIR)/$(CPP_UNITTEST_FRAMEWORK_LIB_NAME) export CPP_UNITTEST_EXECUTABLE=$(CPP_UNITTEST_DIR)/IcedTeaPluginUnitTests export MOZILLA_LOCAL_BACKUP_FILE=${HOME}/$(PLUGIN_LINK_NAME).origU export MOZILLA_GLOBAL_BACKUP_FILE=${HOME}/$(PLUGIN_LINK_NAME).origMG export OPERA_GLOBAL_BACKUP_FILE=${HOME}/$(PLUGIN_LINK_NAME).origOG export MOZILLA_FAMILY_TEST= "$(FIREFOX)" != "" -o "$(CHROMIUM)" != "" -o "$(CHROME)" != "" -o "$(MIDORI)" != "" -o "$(EPIPHANY)" != "" # end of linking variables # Build directories # note this is *space* separated list, as composeclasspath is called on them in classpath usage JUNIT_RUNTIME:=$(JUNIT_JAR) $(HAMCREST_JAR) # support for javaws -html needs plugin.jar on classpath. rest of javaws works of course without it. # plugin jar is split into plugin.jar and jsobject.jar so it can run with modular (9+) jdk if ENABLE_PLUGINJAR PLUGIN_JAR=$(datadir)/$(PACKAGE_NAME)/plugin.jar JSOBJECT_JAR=$(datadir)/$(PACKAGE_NAME)/jsobject.jar endif NETX_JAR=$(datadir)/$(PACKAGE_NAME)/javaws.jar SPLASH_PNG=$(datadir)/$(PACKAGE_NAME)/javaws_splash.png # Conditional defintions if HAVE_TAGSOUP if HAVE_MSLINKS NETX_EXCLUDE_SRCS= else NETX_EXCLUDE_SRCS=net.sourceforge.jnlp.util.WindowsDesktopEntry.java endif else if HAVE_MSLINKS NETX_EXCLUDE_SRCS=net.sourceforge.jnlp.MalformedXMLParser.java else NETX_EXCLUDE_SRCS=net.sourceforge.jnlp.MalformedXMLParser.java net.sourceforge.jnlp.util.WindowsDesktopEntry.java endif endif # Flags export IT_CFLAGS=$(CFLAGS) $(ARCHFLAG) export IT_JAVAC_SETTINGS=-g -encoding utf-8 $(JAVACFLAGS) $(MEMORY_LIMIT) $(PREFER_SOURCE) export IT_LANGUAGE_SOURCE_VERSION=8 export IT_CLASS_TARGET_VERSION=8 export IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) -target $(IT_CLASS_TARGET_VERSION) # # We need the jars in bootclasspath for a couple of reasons # - we use classes (in the sun.applet package) loaded by the bootclassloader # using another classloader to load classes from the same package causes an # IllegalAccessException # - we want full privileges # export UNIFIED_CLASSPATH_SEGMENTS=$(NETX_JAR) $(PLUGIN_JAR) $(JSOBJECT_JAR) $(RHINO_JAR) $(TAGSOUP_JAR) $(MSLINKS_JAR) export UNIFIED_JACOCO_CLASSPATH_SEGMENTS=$(UNIFIED_CLASSPATH_SEGMENTS) $(JACOCO_CLASSPATH) export UNIFIED_CLASSPATH=$(call joinsegments, $(UNIFIED_CLASSPATH_SEGMENTS)) export UNIFIED_JACOCO_CLASSPATH=$(call joinsegments, $(UNIFIED_JACOCO_CLASSPATH_SEGMENTS)) export UNIFIED_BOOTCLASSPATH=-Xbootclasspath/a:$(UNIFIED_CLASSPATH) # note javaws, itwebsettings and policyeditor (== LAUNCHER_BOOTCLASSPATH) must be always able to compile and run *without* plugin export LAUNCHER_BOOTCLASSPATH=$(UNIFIED_BOOTCLASSPATH) export PLUGIN_BOOTCLASSPATH='"$(UNIFIED_BOOTCLASSPATH)"' export PLUGIN_COVERAGE_BOOTCLASSPATH='"-Xbootclasspath/a:$(UNIFIED_JACOCO_CLASSPATH)"' # Fake update version to work with the Deployment Toolkit script used by Oracle # http://download.oracle.com/javase/tutorial/deployment/deploymentInDepth/depltoolkit_index.html export JDK_UPDATE_VERSION=50 # Sources list export PLUGIN_TEST_SRCS = $(TOP_SRC_DIR)/plugin/tests/LiveConnect/*.java export NETX_PKGS = javax.jnlp net.sourceforge.nanoxml net.sourceforge.jnlp \ net.sourceforge.jnlp.about \ net.sourceforge.jnlp.cache net.sourceforge.jnlp.config \ net.sourceforge.jnlp.controlpanel net.sourceforge.jnlp.event \ net.sourceforge.jnlp.runtime net.sourceforge.jnlp.security \ net.sourceforge.jnlp.security.viewer net.sourceforge.jnlp.services \ net.sourceforge.jnlp.tools net.sourceforge.jnlp.util \ sun.applet if ENABLE_PLUGINJAR export ICEDTEAPLUGIN_TARGET = stamps/liveconnect-dist.stamp export PLUGIN_DIR=$(TOP_BUILD_DIR)/plugin/icedteanp export PLUGIN_SRCDIR=$(TOP_SRC_DIR)/plugin/icedteanp export JSOBJECT_DIRS = netscape export SUN_APPLET_DIRS = sun/applet export PLUGIN_PKGS = sun.applet netscape.security netscape.javascript export LIVECONNECT_SRCS = $(PLUGIN_SRCDIR)/java export LIVECONNECT_DIR = $(JSOBJECT_DIRS) $(SUN_APPLET_DIRS) endif #overriding ICEDTEAPLUGIN_TARGET if ENABLE_NATIVE_PLUGIN export ICEDTEAPLUGIN_TARGET = $(PLUGIN_DIR)/$(BUILT_PLUGIN_LIBRARY) stamps/liveconnect-dist.stamp export ICEDTEAPLUGIN_CLEAN = clean-IcedTeaPlugin #this is for plugin testcoverage export COVERABLE_PLUGIN_DIR=$(TESTS_DIR)/icedteanp-build-with-jacoco endif if ENABLE_NATIVE_PLUGIN CPPUNIT_IMPL = run-cpp-unit-tests-impl CPPUNIT_CLEAN_IMPL = clean-cpp-unit-tests-impl else CPPUNIT_IMPL = run-cpp-unit-tests-impl-placeholder CPPUNIT_CLEAN_IMPL = clean-cpp-unit-tests-placeholder endif if CP_SUPPORTS_REFLINK REFLINK = --reflink=auto endif if SRC_DIR_HARDLINKABLE SRC_DIR_LINK = -l else SRC_DIR_LINK = $(REFLINK) endif if ENABLE_DOCS JAVADOC_OPTS=-use -keywords -encoding UTF-8 -splitIndex \ -bottom '<font size="-1"> <a href="http://icedtea.classpath.org/bugzilla">Submit a bug or feature</a></font>' if HAVE_JAVA9 JAVADOC_OPTS+=-source $(IT_LANGUAGE_SOURCE_VERSION) endif if JAVADOC_SUPPORTS_J_OPTIONS JAVADOC_MEM_OPTS=-J-Xmx1024m -J-Xms128m endif endif # if you create netx-dist-tests-whitelist in top directory, and place "expr match" regexes # (separate by one of IFS's values (most commonly space)) into it, you can control reproducers which compile or/xor run. # if you need declare space in your regex, use \s as described in "expr match" documentation ECHO_WHITELIST=if [ -f $(REPRODUCERS_CLASS_WHITELIST) ] ; then cat $(REPRODUCERS_CLASS_WHITELIST) ; else echo ".*" ; fi if ENABLE_WHITELIST COMPILE_WHITELIST_FILTER=`$(ECHO_WHITELIST)` RUN_WHITELIST_FILTER=.* else COMPILE_WHITELIST_FILTER=.* RUN_WHITELIST_FILTER=`$(ECHO_WHITELIST)` endif if WITH_RHINO RHINO_TESTS=stamps/check-pac-functions.stamp else RHINO_TESTS= endif if WITH_JUNIT JUNIT_TESTS=stamps/run-netx-unit-tests.stamp else JUNIT_TESTS= endif export PLUGIN_VERSION = IcedTea-Web $(FULL_VERSION) export EXTRA_DIST = $(top_srcdir)/netx $(top_srcdir)/plugin javaws.png $(DESKTOP_IN_FILES) $(top_srcdir)/completion \ shell-launcher rust-launcher $(top_srcdir)/tests html-gen.sh NEW_LINE_IFS $(top_srcdir)/metadata.in $(top_srcdir)/win-installer # reproducers `D`shortcuts export DTEST_SERVER=-Dtest.server.dir=$(REPRODUCERS_TESTS_SERVER_DEPLOYDIR) export DJAVAWS_BUILD=-Djavaws.build.bin=$(DESTDIR)$(bindir)/$(JAVAWS) export DBROWSERS=-Dused.browsers=$(FIREFOX):$(CHROMIUM):$(CHROME):$(OPERA):$(MIDORI):$(EPIPHANY) export REPRODUCERS_DPARAMETERS= $(DTEST_SERVER) $(DJAVAWS_BUILD) $(DBROWSERS) $(BROWSER_TESTS_MODIFICATION) # end of `D`shortcuts #exported autoconf copies export EXPORTED_JAVAC=$(SYSTEM_JDK_DIR)/bin/javac export EXPORTED_JAR=$(SYSTEM_JDK_DIR)/bin/jar export EXPORTED_KEYTOOL=$(SYSTEM_JDK_DIR)/bin/keytool export EXPORTED_JARSIGNER=$(SYSTEM_JDK_DIR)/bin/jarsigner export EXPORTED_PACK200=$(SYSTEM_JDK_DIR)/bin/pack200 #end of exported autoconf copies # binary names javaws:= $(shell echo javaws | sed '@program_transform_name@') itweb_settings:= $(shell echo itweb-settings | sed '@program_transform_name@') policyeditor:= $(shell echo policyeditor | sed '@program_transform_name@') # the launcher needs to know $(bindir) and $(datadir) which can be different at # make-time from configure-time edit_launcher_script = sed \ -e "s|[@]LAUNCHER_BOOTCLASSPATH[@]|$(LAUNCHER_BOOTCLASSPATH)|g" \ -e "s|[@]JAVAWS_SPLASH_LOCATION[@]|$(SPLASH_PNG)|g" \ -e "s|[@]JAVA[@]|$(JAVA)|g" \ -e "s|[@]JRE[@]|$(SYSTEM_JRE_DIR)|g" \ -e "s|[@]MAIN_CLASS[@]|$${MAIN_CLASS}|g" \ -e "s|[@]BIN_LOCATION[@]|$${BIN_LOCATION}|g" \ -e "s|[@]NETX_JAR[@]|$(NETX_JAR)|g" \ -e "s|[@]PLUGIN_JAR[@]|$(PLUGIN_JAR)|g" \ -e "s|[@]JSOBJECT_JAR[@]|$(JSOBJECT_JAR)|g" \ -e "s|[@]MSLINKS_JAR[@]|$(MSLINKS_JAR)|g" \ -e "s|[@]TAGSOUP_JAR[@]|$(TAGSOUP_JAR)|g" \ -e "s|[@]RHINO_JAR[@]|$(RHINO_JAR)|g" \ -e "s|[@]PROGRAM_NAME[@]|$${PROGRAM_NAME}|g" # Top-Level Targets # ================= all-local: stamps/netx-dist.stamp stamps/plugin.stamp stamps/docs.stamp \ $(LAUNCHERS) $(DESKTOP_FILES) check-local: $(RHINO_TESTS) $(JUNIT_TESTS) clean-local: clean-netx clean-plugin clean-liveconnect \ clean-native-ecj clean-launchers clean-desktop-files clean-docs clean-generated-docs clean-metadata clean-icedteaweb-completion clean-tests clean-bootstrap-directory clean-win-installer if [ -e stamps ] ; then \ rmdir stamps ; \ fi .PHONY: clean-IcedTeaPlugin clean-add-netx clean-add-netx-debug clean-add-plugin clean-add-plugin-debug \ clean-bootstrap-directory clean-native-ecj clean-desktop-files clean-netx-docs clean-docs clean-plugin-docs clean-generated-docs clean-icedteaweb-completion\ clean-tests check-local clean-launchers stamps/check-pac-functions.stamp stamps/run-netx-unit-tests.stamp clean-netx-tests \ clean-junit-runner clean-netx-unit-tests clean-metadata win-installer clean-win-installer install-exec-local: ${mkinstalldirs} $(DESTDIR)$(bindir) $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/ $(DESTDIR)$(libdir) $(ICONS_DEST_DIR) $(BASH_CMPL_DEST_DIR) if ENABLE_NATIVE_PLUGIN ${INSTALL_PROGRAM} $(PLUGIN_DIR)/$(BUILT_PLUGIN_LIBRARY) $(DESTDIR)$(libdir) endif if ENABLE_PLUGINJAR ${INSTALL_DATA} $(TOP_BUILD_DIR)/liveconnect/lib/classes-applet.jar $(DESTDIR)$(PLUGIN_JAR) ${INSTALL_DATA} $(TOP_BUILD_DIR)/liveconnect/lib/classes-jsobject.jar $(DESTDIR)$(JSOBJECT_JAR) endif ${INSTALL_DATA} $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(NETX_JAR) ${INSTALL_DATA} $(NETX_SRCDIR)/javaws_splash.png $(DESTDIR)$(SPLASH_PNG) ${INSTALL_DATA} $(TOP_SRC_DIR)/javaws.png $(ICONS_DEST_DIR)/ if ENABLE_NATIVE_LAUNCHERS ${INSTALL_PROGRAM} launcher.build/$(javaws) $(DESTDIR)$(bindir) ${INSTALL_PROGRAM} launcher.build/$(itweb_settings) $(DESTDIR)$(bindir) ${INSTALL_PROGRAM} launcher.build/$(policyeditor) $(DESTDIR)$(bindir) endif if ENABLE_SHELL_LAUNCHERS ${INSTALL_PROGRAM} launcher.build/$(javaws).sh $(DESTDIR)$(bindir) ${INSTALL_PROGRAM} launcher.build/$(itweb_settings).sh $(DESTDIR)$(bindir) ${INSTALL_PROGRAM} launcher.build/$(policyeditor).sh $(DESTDIR)$(bindir) if WINDOWS ${INSTALL_PROGRAM} launcher.build/$(javaws).bat $(DESTDIR)$(bindir) ${INSTALL_PROGRAM} launcher.build/$(itweb_settings).bat $(DESTDIR)$(bindir) ${INSTALL_PROGRAM} launcher.build/$(policyeditor).bat $(DESTDIR)$(bindir) endif endif ${INSTALL_DATA} $(TOP_BUILD_DIR)/completion/itweb-settings.bash $(BASH_CMPL_DEST_DIR)/ ${INSTALL_DATA} $(TOP_BUILD_DIR)/completion/javaws.bash $(BASH_CMPL_DEST_DIR)/ ${INSTALL_DATA} $(TOP_BUILD_DIR)/completion/policyeditor.bash $(BASH_CMPL_DEST_DIR)/ # all generated manpages are installed in swarm # all windows depndences are copied for windows build, and known one are copied/removed as necessary # the makefile variables are used in favor of global variables, but maybe they will need to get mixed together install-data-local: printvarsfile ${mkinstalldirs} -d $(DESTDIR)$(mandir) cp -r "$(DOCS_DIR)/man/"* $(DESTDIR)$(mandir)/ if ENABLE_DOCS ${mkinstalldirs} $(DESTDIR)$(htmldir) (cd ${TOP_BUILD_DIR}/docs/netx; \ for files in $$(find . -type f); \ do \ ${INSTALL_DATA} -D $${files} $(DESTDIR)$(htmldir)/netx/$${files}; \ done) if ENABLE_PLUGINJAR (cd ${TOP_BUILD_DIR}/docs/plugin; \ for files in $$(find . -type f); \ do \ ${INSTALL_DATA} -D $${files} $(DESTDIR)$(htmldir)/plugin/$${files}; \ done) endif endif if WINDOWS mkdir -p $(WIN_ALL_DEPS) mkdir -p $(WIN_RUN_DEPS) JARSVARS=` ( set -o posix ; set ) | sed "s/.*=//" | grep \\.jar$$ | grep \\.jar.exe$$ ` ; \ JARSMAKE=` cat $(TOP_BUILD_DIR)/printvarsfile | sed "s/.*=//" | grep \\.jar$$ ` ; \ for JAR in $$JARSMAKE ; do \ if [ -f $ $$JAR ] ; then \ cp -v $$JAR $(WIN_ALL_DEPS)/ ; \ fi ; \ done ; rm -f $(WIN_ALL_DEPS)/jar ; for JAR in `ls $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/*.jar` ; do \ rm -fv $(WIN_ALL_DEPS)/`basename $$JAR` ; \ done; if WITH_RHINO filteredName=`basename $(RHINO_JAR) | sed "s/[^a-zA-Z]//g" | sed "s/jar$$/.jar/"` ; \ cp -v $(RHINO_JAR) $(WIN_RUN_DEPS)/$$filteredName endif if HAVE_TAGSOUP filteredName=`basename $(TAGSOUP_JAR) | sed "s/[^a-zA-Z]//g" | sed "s/jar$$/.jar/"` ; \ cp -v $(TAGSOUP_JAR) $(WIN_RUN_DEPS)/$$filteredName endif if HAVE_MSLINKS filteredName=`basename $(MSLINKS_JAR) | sed "s/[^a-zA-Z]//g" | sed "s/jar$$/.jar/"` ; \ cp -v $(MSLINKS_JAR) $(WIN_RUN_DEPS)/$$filteredName endif endif #no npapi plugin at all! linux-bin-dist: install rm -f $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) mkdir -p $(LINUX_BIN_DIST_DEPS) if WITH_RHINO filteredName=`basename $(RHINO_JAR) | sed "s/[^a-zA-Z]//g" | sed "s/jar$$/.jar/"` ; \ cp -v $(RHINO_JAR) $(LINUX_BIN_DIST_DEPS)/$$filteredName endif if HAVE_TAGSOUP filteredName=`basename $(TAGSOUP_JAR) | sed "s/[^a-zA-Z]//g" | sed "s/jar$$/.jar/"` ; \ cp -v $(TAGSOUP_JAR) $(LINUX_BIN_DIST_DEPS)/$$filteredName endif cp $(NETX_DIR)/lib/src.zip $(DESTDIR)$(prefix)/netx.src.zip if ENABLE_PLUGINJAR cp $(TOP_BUILD_DIR)/liveconnect/lib/src.zip $(DESTDIR)$(prefix)/plugin.src.zip endif if ENABLE_DOCS cp -r $(DOCS_DIR)/html $(DESTDIR)$(prefix)/icedtea-web-docs endif (cd $(DESTDIR)$(prefix)/.. && $(ZIP) -qr $(TOP_BUILD_DIR)/$(distdir).linux.bin.zip `basename $(DESTDIR)$(prefix)` ); win-bin-dist: win-only-image (cd $(DESTDIR)$(prefix)/.. && $(ZIP) -qr $(TOP_BUILD_DIR)/$(distdir).win.bin.zip `basename $(DESTDIR)$(prefix)` ); if WINDOWS # strips cygwin and other linux-like blobs. keeping only windows-usefull stuff win-only-image: install uninstall-linux-only remove-empty-linux-only-dirs rm -rf $(WIN_ALL_DEPS) if ENABLE_DOCS cp -r $(DOCS_DIR)/html $(DESTDIR)$(prefix)/icedtea-web-docs endif cp $(NETX_DIR)/lib/src.zip $(DESTDIR)$(prefix)/netx.src.zip if ENABLE_PLUGINJAR cp $(TOP_BUILD_DIR)/liveconnect/lib/src.zip $(DESTDIR)$(prefix)/plugin.src.zip endif clean-win-installer: rm -rf $(WIN_INSTALLER_DIR) $(WIN_INSTALLER_DIR)/itw-installer.json: clean-win-installer mkdir $(WIN_INSTALLER_DIR) sed \ -e "s|../win-installer|$(WIN_INSTALLER_SRC_DIR)|g" \ -e s/[@]PACKAGE_VERSION[@]/$(PACKAGE_VERSION)/g $(WIN_INSTALLER_SRC_DIR)/installer.json.in > $@ win-installer: win-only-image $(WIN_INSTALLER_DIR)/itw-installer.json "$(JAVA)" -jar "$(WIXGEN_JAR)" "$(DESTDIR)$(prefix)" -c $(WIN_INSTALLER_DIR)/itw-installer.json -o $(WIN_INSTALLER_DIR)/itw-installer.wxs cd $(WIN_INSTALLER_DIR) && "$(WIX_TOOLSET_DIR)"/candle.exe /nologo itw-installer.wxs cd $(WIN_INSTALLER_DIR) && "$(WIX_TOOLSET_DIR)"/light.exe /nologo -ext WixUIExtension itw-installer.wixobj endif # note that this is called only from windows specific target (hidden otherwise) remove-empty-linux-only-dirs: echo "*************************************************************************" ; \ echo "* If run without prefix or on non-windows machine, may harm your system *" ; \ echo "*************************************************************************" ; \ MAN_DIRS_TO_CHECK_AND_CLEAN="de/man1 pl/man1 cs/man1 de pl cs man1 " ; \ for manDirName in $$MAN_DIRS_TO_CHECK_AND_CLEAN ; do \ dirCandidate=$(DESTDIR)$(mandir)/$$manDirName ; \ if ls -1qA $$dirCandidate | grep -q . ; then echo "$$dirCandidate not empty"; else rmdir -v $$dirCandidate ; fi ; \ done dirCandidate=$(DESTDIR)$(mandir)/$$manDirName ; \ if ls -1qA $$dirCandidate | grep -q . ; then echo "$$dirCandidate not empty"; else rmdir -v $$dirCandidate ; fi ; DEFAULT_CMPL_DIRS_TO_CHECK_AND_CLEAN="$(BASH_CMPL_DEST_DIR) `dirname $(BASH_CMPL_DEST_DIR)` $$(dirname $$(dirname $(BASH_CMPL_DEST_DIR)))" ; \ for cmplDirName in $$DEFAULT_CMPL_DIRS_TO_CHECK_AND_CLEAN ; do \ dirCandidate=$$cmplDirName ; \ if ls -1qA $$dirCandidate | grep -q . ; then echo "$$dirCandidate not empty"; else rmdir -v $$dirCandidate ; fi ; \ done dirCandidate=$(DESTDIR)$(libdir)/ ; \ if ls -1qA $$dirCandidate | grep -q . ; then echo "$$dirCandidate not empty"; else rmdir -v $$dirCandidate ; fi ; # all generated manpages must be removed one by one # shell (only shell!) lunchers must go away uninstall-linux-only: KNOWN_MANS="icedtea-web.1 icedtea-web-plugin.1 itweb-settings.1 javaws.1 policyeditor.1" ; \ KNOWN_DIRS="man1 de/man1 pl/man1 cs/man1" ; \ for file in $$KNOWN_MANS ; do \ for dir in $$KNOWN_DIRS ; do \ rm -f $(DESTDIR)$(mandir)/$$dir/$$file ; \ done ; \ done rm -f $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) rm -f $(DESTDIR)$(bindir)/$(javaws).sh rm -f $(DESTDIR)$(bindir)/$(itweb_settings).sh rm -f $(DESTDIR)$(bindir)/$(policyeditor).sh rm -f $(BASH_CMPL_DEST_DIR)/itweb-settings.bash rm -f $(BASH_CMPL_DEST_DIR)/javaws.bash rm -f $(BASH_CMPL_DEST_DIR)/policyeditor.bash uninstall-local: uninstall-linux-only rm -f $(DESTDIR)$(PLUGIN_JAR) rm -f $(DESTDIR)$(JSOBJECT_JAR) rm -f $(DESTDIR)$(NETX_JAR) rm -r $(DESTDIR)$(SPLASH_PNG) rm -r $(ICONS_DEST_DIR)/javaws.png rm -rf $(DESTDIR)$(htmldir) if WINDOWS rm -rf $(WIN_ALL_DEPS) rm -rf $(WIN_RUN_DEPS) rm -f $(DESTDIR)$(bindir)/$(javaws).bat rm -f $(DESTDIR)$(bindir)/$(itweb_settings).bat rm -f $(DESTDIR)$(bindir)/$(policyeditor).bat endif # Plugin if ENABLE_NATIVE_PLUGIN # IcedTeaPlugin.so. # Separate compile and link invocations to ensure intermediate object # is listed before -l options. See: # http://developer.mozilla.org/en/docs/XPCOM_Glue PLUGIN_SRC=IcedTeaNPPlugin.cc IcedTeaScriptablePluginObject.cc \ IcedTeaJavaRequestProcessor.cc IcedTeaPluginRequestProcessor.cc \ IcedTeaPluginUtils.cc IcedTeaParseProperties.cc PLUGIN_OBJECTS=IcedTeaNPPlugin.o IcedTeaScriptablePluginObject.o \ IcedTeaJavaRequestProcessor.o IcedTeaPluginRequestProcessor.o \ IcedTeaPluginUtils.o IcedTeaParseProperties.o $(PLUGIN_DIR)/%.o: $(PLUGIN_SRCDIR)/%.cc mkdir -p $(PLUGIN_DIR) && \ cd $(PLUGIN_DIR) && \ $(CXX) $(CXXFLAGS) \ $(DEFS) $(VERSION_DEFS) \ -DJDK_UPDATE_VERSION="\"$(JDK_UPDATE_VERSION)\"" \ -DPLUGIN_NAME="\"IcedTea-Web Plugin\"" \ -DJAVAWS_BIN="\"$(bindir)/$(JAVAWS)\"" \ -DJAVAWS_NAME="\"$(javaws)\"" \ -DPLUGIN_VERSION="\"$(PLUGIN_VERSION)\"" \ -DPACKAGE_URL="\"$(PACKAGE_URL)\"" \ -DMOZILLA_VERSION_COLLAPSED="$(MOZILLA_VERSION_COLLAPSED)" \ -DICEDTEA_WEB_JRE="\"$(SYSTEM_JRE_DIR)\"" \ -DPLUGIN_BOOTCLASSPATH=$(PLUGIN_BOOTCLASSPATH) \ -DNETX_JAR="\"$(NETX_JAR)\"" \ -DPLUGIN_JAR="\"$(PLUGIN_JAR)\"" \ -DJSOBJECT_JAR="\"$(JSOBJECT_JAR)\""\ $(GLIB_CFLAGS) \ $(MOZILLA_CFLAGS) \ -fvisibility=hidden \ -fPIC -o $@ -c $< $(PLUGIN_DIR)/$(BUILT_PLUGIN_LIBRARY): $(addprefix $(PLUGIN_DIR)/,$(PLUGIN_OBJECTS)) cd $(PLUGIN_DIR) && \ $(CXX) $(CXXFLAGS) \ $(PLUGIN_OBJECTS) \ $(GLIB_LIBS) \ $(MOZILLA_LIBS) \ -shared -o $@ # Start of CPP Unit test targets # Note that UnitTest++ has its own makefile, however this is avoided because it creates an in-source build. $(CPP_UNITTEST_FRAMEWORK_LIB): $(CPP_UNITTEST_FRAMEWORK_SRCDIR) mkdir -p $(CPP_UNITTEST_FRAMEWORK_BUILDDIR) && \ pushd $(CPP_UNITTEST_FRAMEWORK_SRCDIR) && \ for cppfile in $$(find $(CPP_UNITTEST_FRAMEWORK_SRCDIR) -name '*.cpp') ; \ do \ objfile="$(CPP_UNITTEST_FRAMEWORK_BUILDDIR)/$$(basename $${cppfile%.cpp}).o" ; \ $(CXX) $(CXXFLAGS) -c $$cppfile -o $$objfile || exit 1 ; \ done ; \ ar cr $(CPP_UNITTEST_FRAMEWORK_LIB) $(CPP_UNITTEST_FRAMEWORK_BUILDDIR)/*.o ; \ popd clean-unittest++: rm -f $(CPP_UNITTEST_FRAMEWORK_BUILDDIR)/*.o rm -f $(CPP_UNITTEST_FRAMEWORK_LIB) if [ -e $(CPP_UNITTEST_FRAMEWORK_BUILDDIR) ] ; then \ rmdir $(CPP_UNITTEST_FRAMEWORK_BUILDDIR) ; \ fi stamps/cpp-unit-tests-compile.stamp: $(CPP_UNITTEST_FRAMEWORK_LIB) $(CPP_UNITTEST_SRCDIR) $(addprefix $(PLUGIN_DIR)/,$(PLUGIN_OBJECTS)) mkdir -p $(CPP_UNITTEST_DIR) && \ pushd $(CPP_UNITTEST_SRCDIR) && \ for cppfile in $$(find $(CPP_UNITTEST_SRCDIR) -name '*.cc') ; \ do \ objfile="$(CPP_UNITTEST_DIR)/$$(basename $${cppfile%.cc}).o" ; \ echo "Compiling $$cppfile to $$objfile"; \ $(CXX) $(CXXFLAGS) \ $(DEFS) $(VERSION_DEFS) \ -DJDK_UPDATE_VERSION="\"$(JDK_UPDATE_VERSION)\"" \ -DPLUGIN_NAME="\"IcedTea-Web Plugin\"" \ -DJAVAWS_BIN="\"$(bindir)/$(JAVAWS)\"" \ -DJAVAWS_NAME="\"$(javaws)\"" \ -DPLUGIN_VERSION="\"$(PLUGIN_VERSION)\"" \ -DPACKAGE_URL="\"$(PACKAGE_URL)\"" \ -DMOZILLA_VERSION_COLLAPSED="$(MOZILLA_VERSION_COLLAPSED)" \ -DICEDTEA_WEB_JRE="\"$(SYSTEM_JRE_DIR)\"" \ -DPLUGIN_BOOTCLASSPATH=$(PLUGIN_BOOTCLASSPATH) \ -DNETX_JAR="\"$(NETX_JAR)\"" \ -DPLUGIN_JAR="\"$(PLUGIN_JAR)\"" \ -DJSOBJECT_JAR="\"$(JSOBJECT_JAR)\""\ $(GLIB_CFLAGS) \ $(MOZILLA_CFLAGS) \ "-I$(CPP_UNITTEST_FRAMEWORK_SRCDIR)/src" \ "-I$(PLUGIN_SRCDIR)" \ -o $$objfile -c $$cppfile || exit 1 ; \ done ; \ popd ; \ mkdir -p stamps ; \ touch $@ $(CPP_UNITTEST_EXECUTABLE): $(CPP_UNITTEST_FRAMEWORK_LIB) stamps/cpp-unit-tests-compile.stamp cd $(CPP_UNITTEST_DIR) && \ $(CXX) $(CXXFLAGS) \ $(addprefix $(PLUGIN_DIR)/,$(PLUGIN_OBJECTS)) \ $(CPP_UNITTEST_DIR)/*.o \ -lrt \ -lpthread \ $(GLIB_LIBS) \ $(MOZILLA_LIBS) \ $(CPP_UNITTEST_FRAMEWORK_LIB)\ $(BUILT_CPP_UNIT_TEST_FRAMEWORK) -o $@ clean-cpp-unit-tests-impl: rm -f stamps/cpp-unit-tests-compile.stamp rm -f $(CPP_UNITTEST_EXECUTABLE) rm -f $(CPP_UNITTEST_DIR)/*.o run-cpp-unit-tests-impl: $(CPP_UNITTEST_EXECUTABLE) $(CPP_UNITTEST_EXECUTABLE) # End of CPP Unit test targets clean-IcedTeaPlugin: rm -f $(PLUGIN_DIR)/*.o rm -f $(PLUGIN_DIR)/$(BUILT_PLUGIN_LIBRARY) if [ $(TOP_SRC_DIR) != $(TOP_BUILD_DIR) ]; then \ if [ -e $(TOP_BUILD_DIR)/plugin/icedteanp ] ; then \ rmdir $(TOP_BUILD_DIR)/plugin/icedteanp ; \ rmdir $(TOP_BUILD_DIR)/plugin ; \ fi ; \ fi endif clean-cpp-unit-tests-placeholder: echo "plugin disabled" run-cpp-unit-tests-impl-placeholder: echo "plugin disabled" clean-cpp-unit-tests: $(CPPUNIT_CLEAN_IMPL) run-cpp-unit-tests: $(CPPUNIT_IMPL) stamps/plugin.stamp: $(ICEDTEAPLUGIN_TARGET) mkdir -p stamps touch stamps/plugin.stamp clean-plugin: $(ICEDTEAPLUGIN_CLEAN) rm -f stamps/plugin.stamp liveconnect-source-files.txt: if WINDOWS echo "Using WEmbeddedFrame" ; \ sed "s;sun.awt.X11.XEmbeddedFrame;sun.awt.windows.WEmbeddedFrame;" -i $(LIVECONNECT_SRCS)/$(SUN_APPLET_DIRS)/PluginAppletViewer.java ; \ sed "s;XEmbeddedFrame;WEmbeddedFrame;" -i $(LIVECONNECT_SRCS)/$(SUN_APPLET_DIRS)/PluginAppletViewer.java ; \ sed "s;super(handle, true);super(handle);" -i $(LIVECONNECT_SRCS)/$(SUN_APPLET_DIRS)/PluginAppletViewer.java ; else echo "Using XEmbeddedFrame" ; endif if test "x${LIVECONNECT_DIR}" != x; then \ find $(LIVECONNECT_SRCS) -name '*.java' | sort > $@ ; \ fi ; \ touch $@ stamps/liveconnect.stamp: liveconnect-source-files.txt stamps/netx.stamp if test "x${LIVECONNECT_DIR}" != x; then \ mkdir -p $(TOP_BUILD_DIR)/liveconnect && \ $(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(TOP_BUILD_DIR)/liveconnect \ $(call composeclasspath,$(NETX_DIR) $(MSLINKS_JAR) $(TAGSOUP_JAR) $(RHINO_JAR)) \ -sourcepath $(LIVECONNECT_SRCS) \ @liveconnect-source-files.txt ; \ fi mkdir -p stamps touch $@ # although sun and netscape packages were compiled together, we pack and install them as two jars, to follow java.desktop and jdk.jsobject jdk9 modules # the all together jar is kept for usage in tests. Feel free to remove and refactor stamps/liveconnect-dist.stamp: stamps/liveconnect.stamp if test "x${LIVECONNECT_DIR}" != x; then \ (cd $(TOP_BUILD_DIR)/liveconnect ; \ mkdir -p lib ; \ $(SYSTEM_JDK_DIR)/bin/jar cf lib/classes.jar $(LIVECONNECT_DIR) ; \ $(SYSTEM_JDK_DIR)/bin/jar cf lib/classes-applet.jar $(SUN_APPLET_DIRS) ; \ $(SYSTEM_JDK_DIR)/bin/jar cf lib/classes-jsobject.jar $(JSOBJECT_DIRS) ; \ cp -pPR $(SRC_DIR_LINK) $(LIVECONNECT_SRCS) src; \ find src -type f -exec chmod 640 '{}' ';' -o -type d -exec chmod 750 '{}' ';'; \ cd src ; \ $(ZIP) -qr $(TOP_BUILD_DIR)/liveconnect/lib/src.zip $(LIVECONNECT_DIR) ) ; \ fi mkdir -p stamps touch $@ clean-liveconnect: rm -rf $(TOP_BUILD_DIR)/liveconnect rm -f stamps/liveconnect-dist.stamp rm -f liveconnect-source-files.txt rm -f stamps/liveconnect.stamp # NetX netx-source-files.txt: find $(NETX_SRCDIR) -name '*.java' | sort > $@ ; \ for src in $(NETX_EXCLUDE_SRCS) ; \ do \ sed -i "/$${src}/ d" $@ ; \ done if !WITH_RHINO sed -i '/RhinoBasedPacEvaluator/ d' $@ endif # if 'sed' will be missing on machine, use old IFS hack as on other places # the 'sed' cycles is changing some custom version like 1.6.2 fedora23.4 to simple 1.6 # if changed, keep in mind that also 1.7 should bubble to 1.7 # also 1.7pre or 1.7preHASH should end up like 1.7 $(TOP_BUILD_DIR)/metadata: $(top_srcdir)/metadata.in mkdir -p $(TOP_BUILD_DIR)/metadata-work ; \ METAFILES=`ls $(top_srcdir)/metadata.in` ; \ SEDDED_VERSION=`echo "$(FULL_VERSION)" | sed 's/[^0-9]\+/ /g'` ; \ x=0; for i in $$SEDDED_VERSION ; do \ let x++; \ if [ $$x -eq 1 ] ; then V1=$$i; fi; \ if [ $$x -eq 2 ] ; then V2=$$i; fi; \ done; \ XVERSION=$$V1.$$V2; \ for F in $$METAFILES ; do \ cat $(top_srcdir)/metadata.in/$$F | sed "s;%{name};$(PACKAGE_NAME);g" | sed "s;%{version};$$XVERSION;g" > $(TOP_BUILD_DIR)/metadata-work/$$F ; \ done ; \ mv $(TOP_BUILD_DIR)/metadata-work $(TOP_BUILD_DIR)/metadata ; check-metadata: $(TOP_BUILD_DIR)/metadata xmllint --noout $(TOP_BUILD_DIR)/metadata/* ; \ if [ $$? -eq 0 ] ; then \ echo "Passed: well formed" ; \ else \ echo "FAILED: well formed" ; \ fi ; \ xmllint --noout --schema http://maven.apache.org/xsd/maven-4.0.0.xsd $(TOP_BUILD_DIR)/metadata/*.pom ; \ if [ $$? -eq 0 ] ; then \ echo "Passed: valid poms" ; \ else \ echo "FAILED: valid poms" ; \ fi ; \ appstream-util validate $(TOP_BUILD_DIR)/metadata/*.appdata.xml $(TOP_BUILD_DIR)/metadata/*.metainfo.xml ; \ if [ $$? -eq 0 ] ; then \ echo "Passed: valid software descriptors" ; \ else \ echo "FAILED: valid software descriptors" ; \ fi ; # very strange results: # appstreamcli validate $(TOP_BUILD_DIR)/metadata/*.appdata.xml $(TOP_BUILD_DIR)/metadata/*.metainfo.xml $(TOP_BUILD_DIR)/completion/itweb-settings.bash: $(TOP_SRC_DIR)/completion/itweb-settings.bash.in stamps/netx.stamp OPTIONS_COMMAND="$(SYSTEM_JRE_DIR)/bin/java -cp $(NETX_DIR) net.sourceforge.jnlp.OptionsDefinitions" ; \ OPTIONS=`$$OPTIONS_COMMAND itweb-settings`; \ echo $$OPTIONS ; \ cat $(TOP_SRC_DIR)/completion/itweb-settings.bash.in | \ sed "s/@OPTIONS@/$${OPTIONS}/" > $@ ; $(TOP_BUILD_DIR)/completion/javaws.bash: $(TOP_SRC_DIR)/completion/javaws.bash.in stamps/netx.stamp OPTIONS_COMMAND="$(SYSTEM_JRE_DIR)/bin/java -cp $(NETX_DIR) net.sourceforge.jnlp.OptionsDefinitions" ; \ OPTIONS=`$$OPTIONS_COMMAND javaws` ; \ echo $$OPTIONS ; \ cat $(TOP_SRC_DIR)/completion/javaws.bash.in | \ sed "s/@OPTIONS@/$${OPTIONS}/" > $@ ; $(TOP_BUILD_DIR)/completion/policyeditor.bash: $(TOP_SRC_DIR)/completion/policyeditor.bash.in stamps/netx.stamp OPTIONS_COMMAND="$(SYSTEM_JRE_DIR)/bin/java -cp $(NETX_DIR) net.sourceforge.jnlp.OptionsDefinitions" ; \ OPTIONS=`$$OPTIONS_COMMAND policyeditor` ; \ echo $$OPTIONS ; \ cat $(TOP_SRC_DIR)/completion/policyeditor.bash.in | \ sed "s/@OPTIONS@/$${OPTIONS}/" > $@ ; stamps/generate-docs.stamp: stamps/netx.stamp mkdir -p "$(DOCS_DIR)" ; \ HTML_DOCS_TARGET_DIR="$(DOCS_DIR)/html" ; \ PLAIN_DOCS_TARGET_DIR="$(DOCS_DIR)/plain" ; \ MAN_DOCS_TARGET_DIR="$(DOCS_DIR)/man" ; \ AUTHORS_FILE_TARGET="$(TOP_SRC_DIR)/AUTHORS" ; \ mkdir "$$HTML_DOCS_TARGET_DIR" ; \ mkdir "$$PLAIN_DOCS_TARGET_DIR" ; \ mkdir "$$MAN_DOCS_TARGET_DIR" ; \ HTML_DOCS_INDEX="$$HTML_DOCS_TARGET_DIR/index.html" ; \ TP_COMMAND="$(SYSTEM_JRE_DIR)/bin/java -cp $(NETX_DIR) net.sourceforge.jnlp.util.docprovider.TextsProvider" ; \ TP_TAIL="false $(FULL_VERSION)" ; \ LANG_BACKUP=$$LANG ; \ echo "<html><head><title>$(PLUGIN_VERSION)</title></head>" > "$$HTML_DOCS_INDEX" ; \ echo "<body><h3>$(PLUGIN_VERSION) docs:</h3>" >> "$$HTML_DOCS_INDEX" ; \ for LANG_ID in en_US.UTF-8 cs_CZ.UTF-8 pl_PL.UTF-8 de_DE.UTF-8 ; do \ ID=`echo "$$LANG_ID" | head -c 2` ; \ ENCOD=`echo "$$LANG_ID" | tail -c 6 -` ; \ export LANG=$$LANG_ID; \ mkdir "$$HTML_DOCS_TARGET_DIR/$$ID" ; \ echo "<li><a href='$$ID/icedtea-web.html'>$$LANG_ID</a></li>" >> "$$HTML_DOCS_INDEX" ; \ $$TP_COMMAND html "$$HTML_DOCS_TARGET_DIR/$$ID" $$TP_TAIL "-authorFile=$$AUTHORS_FILE_TARGET" ; \ mkdir "$$PLAIN_DOCS_TARGET_DIR/$$ID" ; \ $$TP_COMMAND plain "$$PLAIN_DOCS_TARGET_DIR/$$ID" 160 $$TP_TAIL "-authorFile=$$AUTHORS_FILE_TARGET" ; \ if [ $$ID = "en" ] ; then \ MAN_DESC="$$MAN_DOCS_TARGET_DIR/man1" ; \ else \ MAN_DESC="$$MAN_DOCS_TARGET_DIR/$$ID/man1" ; \ fi ; \ mkdir -p "$$MAN_DESC" ; \ $$TP_COMMAND man $$ENCOD "$$MAN_DESC" $$TP_TAIL "-authorFile=$$AUTHORS_FILE_TARGET" ; \ $$TP_COMMAND htmlIntro "$(NETX_DIR)/net/sourceforge/jnlp/resources/about_$$ID.html" $$TP_TAIL; \ done ; \ export LANG=$$LANG_BACKUP ; \ echo "</body></html>" >> $$HTML_DOCS_INDEX ; \ touch $@ stamps/netx-html-gen.stamp: (cd $$NETX_SRCDIR/..; \ mkdir -p html-gen; \ cp AUTHORS NEWS COPYING ChangeLog html-gen/; \ export HTML_GEN_DEBUG=true; \ ${SHELL} html-gen.sh 236; \ unset HTML_GEN_DEBUG) ${INSTALL_DATA} $(NETX_SRCDIR)/../html-gen/*.html $(NETX_RESOURCE_DIR) rm -r $(NETX_SRCDIR)/../html-gen/ mkdir -p stamps touch $@ stamps/netx.stamp: netx-source-files.txt stamps/netx-html-gen.stamp mkdir -p $(NETX_DIR) $(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(NETX_DIR) \ -sourcepath $(NETX_SRCDIR) \ $(call composeclasspath, $(MSLINKS_JAR) $(TAGSOUP_JAR) $(RHINO_JAR)) \ @netx-source-files.txt (cd $(NETX_RESOURCE_DIR); \ for files in $$(find . -type f); \ do \ ${INSTALL_DATA} -D $${files} \ $(NETX_DIR)/net/sourceforge/jnlp/resources/$${files}; \ done) cp $(CPA) $(NETX_SRCDIR)/net/sourceforge/jnlp/runtime/pac-funcs.js \ $(NETX_DIR)/net/sourceforge/jnlp/runtime cp $(CPA) build.properties $(NETX_DIR)/net/sourceforge/jnlp/ mkdir -p stamps touch $@ stamps/netx-dist.stamp: stamps/netx.stamp $(TOP_BUILD_DIR)/netx.manifest stamps/generate-docs.stamp $(TOP_BUILD_DIR)/completion/itweb-settings.bash $(TOP_BUILD_DIR)/completion/javaws.bash $(TOP_BUILD_DIR)/completion/policyeditor.bash $(TOP_BUILD_DIR)/metadata (cd $(NETX_DIR) ; \ mkdir -p lib ; \ $(SYSTEM_JDK_DIR)/bin/jar cfm lib/classes.jar \ $(TOP_BUILD_DIR)/netx.manifest javax/jnlp net sun; \ cp -pPR $(SRC_DIR_LINK) $(NETX_SRCDIR) src; \ find src -type f -exec chmod 640 '{}' ';' -o -type d -exec chmod 750 '{}' ';'; \ cd src ; \ $(ZIP) -qr $(NETX_DIR)/lib/src.zip javax net sun) mkdir -p stamps touch $@ clean-netx: rm -rf $(NETX_DIR) rm -f stamps/netx-dist.stamp rm -f netx-source-files.txt rm -f stamps/netx.stamp rm -f stamps/netx-html-gen.stamp rm -f $(NETX_RESOURCE_DIR)/{NEWS,AUTHORS,COPYING,ChangeLog}.html clean-desktop-files: rm -f javaws.desktop rm -f itweb-settings.desktop rm -f policyeditor.desktop if ENABLE_NATIVE_LAUNCHERS # todo, handling of suffixes # there is curently harecoded sh, so it can somehow basically work # see the DESKTOP_SUFFIX for final tuning launcher.build/$(javaws) launcher.build/$(itweb_settings) launcher.build/$(policyeditor): rust-launcher/src/main.rs rust-launcher/Cargo.toml export ITW_TMP_REPLACEMENT=$(TESTS_DIR)/rust_tests_tmp ; \ mkdir -p $$ITW_TMP_REPLACEMENT; \ filename=`basename $@` ; \ type=$${filename%.*} ; \ srcs=$(TOP_SRC_DIR)/rust-launcher ; \ outs=$(TOP_BUILD_DIR)/launcher.in.$$type ; \ mkdir -p launcher.build ; \ cp -r $$srcs $$outs ; \ pushd $$outs ; \ export JAVA=$(JAVA) ; \ export JRE=$(SYSTEM_JRE_DIR) ; \ export SPLASH_PNG=$(SPLASH_PNG) ; \ export ITW_LIBS=$(ITW_LIBS) ; \ export PLUGIN_JAR=$(PLUGIN_JAR) ; \ export NETX_JAR=$(NETX_JAR) ; \ export JSOBJECT_JAR=$(JSOBJECT_JAR) ; \ export TAGSOUP_JAR=$(TAGSOUP_JAR) ; \ export RHINO_JAR=$(RHINO_JAR) ; \ unset MAIN_CLASS ; \ unset BIN_LOCATION ; \ unset PROGRAM_NAME ; \ if [ $$filename = $(javaws) ] ; then \ export MAIN_CLASS=net.sourceforge.jnlp.runtime.Boot ; \ export BIN_LOCATION=$(bindir)/$(javaws) ; \ export PROGRAM_NAME=$(javaws) ; \ fi ; \ if [ $$filename = $(itweb_settings) ] ; then \ export MAIN_CLASS=net.sourceforge.jnlp.controlpanel.CommandLine ; \ export BIN_LOCATION=$(bindir)/$(itweb_settings) ; \ export PROGRAM_NAME=$(itweb_settings) ; \ fi ; \ if [ $$filename = $(policyeditor) ] ; then \ export MAIN_CLASS=net.sourceforge.jnlp.security.policyeditor.PolicyEditor ; \ export BIN_LOCATION=$(bindir)/$(policyeditor) ; \ export PROGRAM_NAME=$(policyeditor) ; \ fi ; \ $(CARGO) test ; \ r=$$? ; \ $(CARGO) build --release ; \ popd ;\ cp -v $$outs/target/release/launcher $@ ; \ if [ $$r -ne 0 ] ; then \ mv $@ $@.broken ; \ fi; \ exit $$r # https://github.com/SimonKagstrom/kcov/ # build is not part of upstream, declaring rust-code-coverage: kcov="none" ; \ if [ -f $(KCOV)/kcov ] ; then \ kcov=$(KCOV)/kcov ; \ elif [ -f $(KCOV)/bin/kcov ] ; then \ kcov=$(KCOV)/bin/kcov ; \ elif [ -f $(KCOV)/build/kcov ] ; then \ kcov=$(KCOV)/build/kcov ; \ elif [ -f $(KCOV)/build/src/kcov ] ; then \ kcov=$(KCOV)/build/src/kcov ; \ else \ mkdir $(KCOV)/build ; \ pushd $(KCOV)/build ; \ cmake .. ; \ make ; \ popd ; \ kcov=$(KCOV)/build/src/kcov ; \ fi ; \ export ITW_TMP_REPLACEMENT=$(TESTS_DIR)/rust_tests_tmp ; \ mkdir -p $$ITW_TMP_REPLACEMENT; \ srcs=$(TOP_SRC_DIR)/rust-launcher ; \ outs=$(TOP_BUILD_DIR)/launcher.in.codecoverage ; \ rm -rvf $$outs ; \ cp -r $$srcs $$outs ; \ pushd $$outs ; \ export JAVA=$(JAVA) ; \ export JRE=$(SYSTEM_JRE_DIR) ; \ export SPLASH_PNG=$(SPLASH_PNG) ; \ export ITW_LIBS=$(ITW_LIBS) ; \ export PLUGIN_JAR=$(PLUGIN_JAR) ; \ export NETX_JAR=$(NETX_JAR) ; \ export JSOBJECT_JAR=$(JSOBJECT_JAR) ; \ export TAGSOUP_JAR=$(TAGSOUP_JAR) ; \ export RHINO_JAR=$(RHINO_JAR) ; \ export MAIN_CLASS=net.sourceforge.jnlp.runtime.Boot ; \ export BIN_LOCATION=$(bindir)/none ; \ export PROGRAM_NAME=test ; \ $(CARGO) test --no-run ; \ popd ; \ rm -fv $(TOP_BUILD_DIR)/launcher.in.codecoverage/target/debug/launcher-*.d ; \ $$kcov $$outs $(TOP_BUILD_DIR)/launcher.in.codecoverage/target/debug/launcher-* endif if ENABLE_SHELL_LAUNCHERS launcher.build/$(javaws).sh: shell-launcher/launchers.sh.in mkdir -p launcher.build MAIN_CLASS=net.sourceforge.jnlp.runtime.Boot ;\ BIN_LOCATION=$(bindir)/$(javaws).sh ;\ PROGRAM_NAME=$(javaws) ;\ $(edit_launcher_script) < $< > $@ launcher.build/$(itweb_settings).sh: shell-launcher/launchers.sh.in mkdir -p launcher.build MAIN_CLASS=net.sourceforge.jnlp.controlpanel.CommandLine ;\ BIN_LOCATION=$(bindir)/$(itweb_settings).sh ;\ PROGRAM_NAME=$(itweb_settings) ;\ $(edit_launcher_script) < $< > $@ launcher.build/$(policyeditor).sh: shell-launcher/launchers.sh.in mkdir -p launcher.build MAIN_CLASS=net.sourceforge.jnlp.security.policyeditor.PolicyEditor ;\ BIN_LOCATION=$(bindir)/$(policyeditor).sh ;\ PROGRAM_NAME=$(policyeditor) ;\ $(edit_launcher_script) < $< > $@ if WINDOWS # TODO get rid of this copypaste launcher.build/$(javaws).bat: shell-launcher/launchers.bat.in mkdir -p launcher.build MAIN_CLASS=net.sourceforge.jnlp.runtime.Boot ;\ BIN_LOCATION=$(bindir)/$(javaws) ;\ PROGRAM_NAME=$(javaws) ;\ $(edit_launcher_script) < $< > $@ # TODO get rid of this copypaste launcher.build/$(itweb_settings).bat: shell-launcher/launchers.bat.in mkdir -p launcher.build MAIN_CLASS=net.sourceforge.jnlp.controlpanel.CommandLine ;\ BIN_LOCATION=$(bindir)/$(itweb_settings) ;\ PROGRAM_NAME=$(itweb_settings) ;\ $(edit_launcher_script) < $< > $@ # TODO get rid of this copypaste launcher.build/$(policyeditor).bat: shell-launcher/launchers.bat.in mkdir -p launcher.build MAIN_CLASS=net.sourceforge.jnlp.security.policyeditor.PolicyEditor ;\ BIN_LOCATION=$(bindir)/$(policyeditor) ;\ PROGRAM_NAME=$(policyeditor) ;\ $(edit_launcher_script) < $< > $@ endif endif clean-launchers: if ENABLE_NATIVE_LAUNCHERS rm -f launcher.build/$(javaws) rm -f launcher.build/$(itweb_settings) rm -f launcher.build/$(policyeditor) rm -rf launcher.in* endif if ENABLE_SHELL_LAUNCHERS rm -f launcher.build/$(javaws).sh rm -f launcher.build/$(itweb_settings).sh rm -f launcher.build/$(policyeditor).sh if WINDOWS rm -f launcher.build/$(javaws).bat rm -f launcher.build/$(itweb_settings).bat rm -f launcher.build/$(policyeditor).bat endif endif if [ -e launcher.build ] ; then \ rmdir launcher.build ; \ fi javaws.desktop: javaws.desktop.in sed "s#PATH_TO_JAVAWS#$(bindir)/$(JAVAWS)#" < $(srcdir)/javaws.desktop.in > javaws.desktop itweb-settings.desktop: $(srcdir)/itweb-settings.desktop.in sed "s#PATH_TO_ITWEB_SETTINGS#$(bindir)/$(ITWEB_SETTINGS)#" \ < $(srcdir)/itweb-settings.desktop.in > itweb-settings.desktop policyeditor.desktop: $(srcdir)/policyeditor.desktop.in sed "s#PATH_TO_POLICYEDITOR#$(bindir)/$(POLICYEDITOR)#" \ < $(srcdir)/policyeditor.desktop.in > policyeditor.desktop # documentation stamps/docs.stamp: stamps/netx-docs.stamp stamps/plugin-docs.stamp touch stamps/docs.stamp clean-docs: clean-netx-docs clean-plugin-docs if [ -e ${TOP_BUILD_DIR}/docs ] ; then \ rmdir ${TOP_BUILD_DIR}/docs ; \ fi rm -f stamps/docs.stamp stamps/netx-docs.stamp: if ENABLE_DOCS $(SYSTEM_JDK_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \ -d ${TOP_BUILD_DIR}/docs/netx -sourcepath $(NETX_SRCDIR) \ -doctitle 'IcedTea-Web: NetX API Specification' \ -windowtitle 'IcedTea-Web: NetX ' \ -header '<strong>IcedTea-Web<br/>NetX</strong>' \ $(call composeclasspath, $(MSLINKS_JAR) $(TAGSOUP_JAR) $(RHINO_JAR)) \ $(NETX_PKGS) endif mkdir -p stamps touch stamps/netx-docs.stamp clean-netx-docs: rm -rf ${TOP_BUILD_DIR}/docs/netx rm -f stamps/netx-docs.stamp stamps/plugin-docs.stamp: if ENABLE_DOCS if ENABLE_PLUGINJAR $(SYSTEM_JDK_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \ -d ${TOP_BUILD_DIR}/docs/plugin -sourcepath "$(NETX_SRCDIR)$(CLASSPATH_SEPARATOR)$(LIVECONNECT_SRCS)" \ -doctitle 'IcedTea-Web: Plugin API Specification' \ -windowtitle 'IcedTea-Web: Plugin ' \ -header '<strong>IcedTea-Web<br/>Plugin</strong>' \ $(call composeclasspath, $(MSLINKS_JAR) $(TAGSOUP_JAR) $(RHINO_JAR)) \ $(PLUGIN_PKGS) endif endif mkdir -p stamps touch stamps/plugin-docs.stamp clean-plugin-docs: rm -rf ${TOP_BUILD_DIR}/docs/plugin rm -f stamps/plugin-docs.stamp clean-generated-docs: rm -rf "$(DOCS_DIR)" rm -f stamps/generate-docs.stamp clean-icedteaweb-completion: rm -f $(TOP_BUILD_DIR)/completion/itweb-settings.bash rm -f $(TOP_BUILD_DIR)/completion/javaws.bash rm -f $(TOP_BUILD_DIR)/completion/policyeditor.bash clean-metadata: rm -rf $(TOP_BUILD_DIR)/metadata # check # ========================== clean-tests: clean-netx-tests clean-cpp-unit-tests clean-unittest++ if [ -e $(CPP_UNITTEST_DIR) ] ; then \ rmdir $(CPP_UNITTEST_DIR) ; \ fi if [ -e $(TESTS_DIR) ]; then \ rmdir $(TESTS_DIR) ; \ fi stamps/check-pac-functions.stamp: ./jrunscript $(TOP_SRC_DIR)/tests/netx/pac/pac-funcs-test.js \ $$(readlink -f $(TOP_SRC_DIR)/netx/net/sourceforge/jnlp/runtime/pac-funcs.js) ; \ mkdir -p stamps && \ touch $@ junit-runner-source-files.txt: find $(JUNIT_RUNNER_SRCDIR) -name '*.java' | sort > $@ jacoco-operator-source-files.txt: find $(JACOCO_OPERATOR_SRCDIR) -name '*.java' | sort > $@ $(JUNIT_RUNNER_JAR): junit-runner-source-files.txt stamps/test-extensions-compile.stamp mkdir -p $(JUNIT_RUNNER_DIR) && \ $(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(JUNIT_RUNNER_DIR) \ $(call composeclasspath, $(JUNIT_RUNTIME) $(TEST_EXTENSIONS_DIR)) \ @junit-runner-source-files.txt && \ $(SYSTEM_JDK_DIR)/bin/jar cf $@ -C $(JUNIT_RUNNER_DIR) . stamps/junit-jnlp-dist-dirs: junit-jnlp-dist-simple.txt stamps/junit-jnlp-dist-signed.stamp junit-jnlp-dist-custom.txt mkdir -p $(REPRODUCERS_TESTS_SERVER_DEPLOYDIR) mkdir -p $(REPRODUCERS_BUILD_DIR) touch $@ junit-jnlp-dist-custom.txt: rm -f $(abs_top_builddir)/$@ ; \ cd $(REPRODUCERS_TESTS_SRCDIR)/$(CUSTOM_REPRODUCERS)/ ; \ for x in $(COMPILE_WHITELIST_FILTER) ; do \ find . -maxdepth 1 -mindepth 1 | sed "s/.\/*//" | grep $$x >> $(abs_top_builddir)/$@ || true ; \ done junit-jnlp-dist-simple.txt: rm -f $(abs_top_builddir)/$@ ; \ cd $(REPRODUCERS_TESTS_SRCDIR)/simple/ ; \ for x in $(COMPILE_WHITELIST_FILTER) ; do \ find . -maxdepth 1 -mindepth 1 | sed "s/.\/*//" | grep $$x >> $(abs_top_builddir)/$@ || true ; \ done stamps/junit-jnlp-dist-signed.stamp: types=($(SIGNED_REPRODUCERS)) ; \ for which in "$${types[@]}" ; do \ rm -f $(abs_top_builddir)/junit-jnlp-dist-$$which.txt ; \ pushd $(REPRODUCERS_TESTS_SRCDIR)/$$which/ ; \ for x in $(COMPILE_WHITELIST_FILTER) ; do \ find . -maxdepth 1 -mindepth 1 | sed "s/.\/*//" | grep $$x >> $(abs_top_builddir)/junit-jnlp-dist-$$which.txt ; \ done ; \ popd ; \ done ; \ mkdir -p stamps && \ touch $@ stamps/netx-dist-tests-prepare-reproducers.stamp: stamps/junit-jnlp-dist-dirs stamps/liveconnect-dist.stamp stamps/netx-dist.stamp stamps/plugin.stamp types=($(ALL_NONCUSTOM_REPRODUCERS)); \ for which in "$${types[@]}" ; do \ . $(TOP_SRC_DIR)/NEW_LINE_IFS ; \ simpleReproducers=(`cat $(TOP_BUILD_DIR)/junit-jnlp-dist-$$which.txt `); \ IFS="$$IFS_BACKUP" ; \ for dir in "$${simpleReproducers[@]}" ; do \ echo "processing: $$dir" ; \ mkdir -p "$(REPRODUCERS_BUILD_DIR)/$$dir" ; \ if [ -e "$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/srcs/" ]; then \ d=`pwd` ; \ cd "$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/srcs/" ; \ srcFiles=`find . -mindepth 1 -type f -name "*.java" | sed "s/.\/*//"` ; \ notSrcFiles=`find . -mindepth 1 -type f \! -name "*.java" | sed "s/.\/*//"` ; \ $(SYSTEM_JDK_DIR)/bin/javac -cp $(NETX_DIR)/lib/classes.jar:$(TOP_BUILD_DIR)/liveconnect -d "$(REPRODUCERS_BUILD_DIR)/$$dir/" $$srcFiles ; \ if [ -n "$$notSrcFiles" ] ; then \ cp -R --parents $$notSrcFiles "$(REPRODUCERS_BUILD_DIR)/$$dir/" ; \ fi ; \ cd "$(REPRODUCERS_BUILD_DIR)/$$dir/" ; \ if [ -f $(META_MANIFEST) ]; \ then \ $(SYSTEM_JDK_DIR)/bin/jar cfm "$(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)/$$dir.jar" $(META_MANIFEST) * ; \ else \ $(SYSTEM_JDK_DIR)/bin/jar cf "$(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)/$$dir.jar" * ; \ fi; \ AN="Application-Name:" ; \ grep $$AN $(META_MANIFEST) 2>/dev/null >/dev/null ; \ GREP_R=$$?; \ if [ ! -f $(META_MANIFEST) -o $$GREP_R -ne 0 ]; \ then \ TMP_MANIFEST=`mktemp` ; \ echo "$$AN $$dir" > $$TMP_MANIFEST ; \ $(SYSTEM_JDK_DIR)/bin/jar ufm "$(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)/$$dir.jar" $$TMP_MANIFEST ; \ rm -f $$TMP_MANIFEST ; \ fi ; \ cd "$$d" ; \ fi; \ done ; \ done ; \ mkdir -p stamps && \ touch $@ stamps/netx-dist-tests-sign-some-reproducers.stamp: stamps/netx-dist-tests-prepare-reproducers.stamp keystore=$(TOP_BUILD_DIR)/$(PRIVATE_KEYSTORE_NAME); \ types=($(SIGNED_REPRODUCERS)) ; \ for which in "$${types[@]}" ; do \ tcaw=$(TEST_CERT_ALIAS)_$$which ; \ $(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" ; \ . $(TOP_SRC_DIR)/NEW_LINE_IFS ; \ signedReproducers=(`cat $(TOP_BUILD_DIR)/junit-jnlp-dist-$$which.txt `); \ IFS="$$IFS_BACKUP" ; \ for dir in "$${signedReproducers[@]}" ; do \ $(SYSTEM_JDK_DIR)/bin/jarsigner -keystore $$keystore -storepass $(PRIVATE_KEYSTORE_PASS) -keypass $(PRIVATE_KEYSTORE_PASS) "$(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)/$$dir.jar" $$tcaw ; \ done ; \ done ; \ mkdir -p stamps && \ touch $@ stamps/change-dots-to-paths.stamp: stamps/netx-dist-tests-sign-some-reproducers.stamp pushd $(REPRODUCERS_TESTS_SERVER_DEPLOYDIR); \ types=($(ALL_NONCUSTOM_REPRODUCERS)); \ for which in "$${types[@]}" ; do \ . $(TOP_SRC_DIR)/NEW_LINE_IFS ; \ simpleReproducers=(`cat $(TOP_BUILD_DIR)/junit-jnlp-dist-$$which.txt `); \ IFS="$$IFS_BACKUP" ; \ for dir in "$${simpleReproducers[@]}" ; do \ if test "$${dir:0:1}" = "." ; then \ echo "reproducer $$dir starts with dot. It is forbidden" ; \ exit 5; \ fi; \ if test "$${dir:(-1)}" = "." ; then \ echo "reproducer $$dir ends with dot. It is forbidden" ; \ exit 5; \ fi; \ q=`expr index "$$dir" .`; \ r=$$? ; \ if [ $$r = 0 ]; then \ slashed_dir="./$${dir//.//}" ; \ path="`dirname $$slashed_dir`" ; \ file="`basename $$slashed_dir`.jar" ; \ echo "copying $$dir.jar to $$path as $$file" ; \ mkdir --parents $$path ; \ cp $$dir".jar" "$$path"/"$$file" ; \ fi ; \ done ; \ done ; \ popd ; \ mkdir -p stamps && \ touch $@ #this always tries to remove previous testcert #the code is copypasted from netx-dist-tests-remove-cert-from-public, because #with depending to not stamped target we always have to rerun reproducers targets stamps/exported-test-certs.stamp: stamps/change-dots-to-paths.stamp -types=($(SIGNED_REPRODUCERS)) ; \ PUBLIC_KEYSTORE=$$XDG_CONFIG_HOME ; \ if test "x$$PUBLIC_KEYSTORE" = x; then \ PUBLIC_KEYSTORE=${HOME}/.config ; \ fi ;\ PUBLIC_KEYSTORE=$$PUBLIC_KEYSTORE/$(PUBLIC_KEYSTORE_STUB); \ keystoredir=`dirname $(PUBLIC_KEYSTORE)`; \ [ ! -d $(keystoredir) ] && mkdir -p $(keystoredir); \ for which in "$${types[@]}" ; do \ $(SYSTEM_JDK_DIR)/bin/keytool -delete -alias $(TEST_CERT_ALIAS)_$$which -keystore $$PUBLIC_KEYSTORE -storepass $(PUBLIC_KEYSTORE_PASS) ; \ done ; types=($(SIGNED_REPRODUCERS)) ; \ for which in "$${types[@]}" ; do \ $(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) ; \ done ; mkdir -p stamps && \ touch $@ stamps/netx-dist-tests-import-cert-to-public: stamps/exported-test-certs.stamp types=($(SIGNED_REPRODUCERS)) ; \ PUBLIC_KEYSTORE=$$XDG_CONFIG_HOME ; \ if test "x$$PUBLIC_KEYSTORE" = x; then \ PUBLIC_KEYSTORE=${HOME}/.config ; \ fi ;\ PUBLIC_KEYSTORE=$$PUBLIC_KEYSTORE/$(PUBLIC_KEYSTORE_STUB); \ keystoredir=`dirname $(PUBLIC_KEYSTORE)`; \ [ ! -d $(keystoredir) ] && mkdir -p $(keystoredir); \ for which in "$${types[@]}" ; do \ 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) ;\ done ; mkdir -p stamps && \ touch $@ netx-dist-tests-remove-cert-from-public: -types=($(SIGNED_REPRODUCERS)) ; \ PUBLIC_KEYSTORE=$$XDG_CONFIG_HOME ; \ if test "x$$PUBLIC_KEYSTORE" = x; then \ PUBLIC_KEYSTORE=${HOME}/.config ; \ fi ;\ PUBLIC_KEYSTORE=$$PUBLIC_KEYSTORE/$(PUBLIC_KEYSTORE_STUB); \ keystoredir=`dirname $(PUBLIC_KEYSTORE)`; \ [ ! -d $(keystoredir) ] && mkdir -p $(keystoredir); \ for which in "$${types[@]}" ; do \ $(SYSTEM_JDK_DIR)/bin/keytool -delete -alias $(TEST_CERT_ALIAS)_$$which -keystore $$PUBLIC_KEYSTORE -storepass $(PUBLIC_KEYSTORE_PASS) ; \ done ; -rm -rf stamps/netx-dist-tests-import-cert-to-public test-extensions-source-files.txt: find $(TEST_EXTENSIONS_SRCDIR) -name '*.java' | sort > $@ stamps/test-extensions-compile.stamp: stamps/netx-dist.stamp stamps/plugin.stamp stamps/junit-jnlp-dist-dirs test-extensions-source-files.txt mkdir -p $(TEST_EXTENSIONS_DIR); mkdir -p $(NETX_TEST_DIR); ln -s $(TEST_EXTENSIONS_DIR) $(TEST_EXTENSIONS_COMPATIBILITY_SYMLINK); $(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(TEST_EXTENSIONS_DIR) \ $(call composeclasspath, $(JUNIT_RUNTIME) $(NETX_DIR)/lib/classes.jar $(TOP_BUILD_DIR)/liveconnect/lib/classes.jar) \ @test-extensions-source-files.txt && \ mkdir -p stamps && \ touch $@ test-extensions-tests-source-files.txt: for x in $(COMPILE_WHITELIST_FILTER) ; do \ find $(TEST_EXTENSIONS_TESTS_SRCDIR) -name '*.java' | grep $$x | sort > $@ ; \ done stamps/test-extensions-tests-compile.stamp: stamps/junit-jnlp-dist-dirs test-extensions-tests-source-files.txt stamps/test-extensions-compile.stamp mkdir -p $(TEST_EXTENSIONS_TESTS_DIR); for x in `cat $(TOP_BUILD_DIR)/test-extensions-tests-source-files.txt` ; do \ $(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(TEST_EXTENSIONS_TESTS_DIR) \ $(call composeclasspath, $(JUNIT_RUNTIME) $(NETX_DIR)/lib/classes.jar $(TEST_EXTENSIONS_DIR)) \ $$x ; \ done ; \ mkdir -p stamps && \ touch $@ stamps/compile-reproducers-testcases.stamp: stamps/netx-dist.stamp stamps/plugin.stamp stamps/junit-jnlp-dist-dirs \ test-extensions-source-files.txt stamps/test-extensions-compile.stamp stamps/test-extensions-tests-compile.stamp types=($(ALL_REPRODUCERS)); \ for which in "$${types[@]}" ; do \ . $(TOP_SRC_DIR)/NEW_LINE_IFS ; \ simpleReproducers=(`cat $(TOP_BUILD_DIR)/junit-jnlp-dist-$$which.txt `); \ IFS="$$IFS_BACKUP" ; \ for dir in "$${simpleReproducers[@]}" ; do \ TESTCASEPATH="$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases" ; \ if [ -d "$$TESTCASEPATH" ]; then \ echo "compiling" $$dir ; \ pushd "$$TESTCASEPATH" ; \ REGEX=".*\\.java$$" ; \ JAVAFILES=`find . | grep "$$REGEX"` ; \ NONJAVA_RESOURCES=`find . | grep -v "$$REGEX"` ; \ echo $$JAVAFILES ; \ echo $$NONJAVA_RESOURCES ; \ $(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(TEST_EXTENSIONS_TESTS_DIR) \ $(call composeclasspath, $(JUNIT_RUNTIME) $(NETX_DIR)/lib/classes.jar $(TEST_EXTENSIONS_DIR)) $$JAVAFILES ; \ if [ -n "$$NONJAVA_RESOURCES" ]; then \ cp --parents $$NONJAVA_RESOURCES $(TEST_EXTENSIONS_TESTS_DIR)/ ; \ fi ; \ popd ; \ fi ; \ done ; \ done ; \ mkdir -p stamps && \ touch $@ stamps/copy-reproducers-resources.stamp: stamps/junit-jnlp-dist-dirs types=($(ALL_REPRODUCERS)); \ for which in "$${types[@]}" ; do \ . $(TOP_SRC_DIR)/NEW_LINE_IFS ; \ simpleReproducers=(`cat $(TOP_BUILD_DIR)/junit-jnlp-dist-$$which.txt `); \ IFS="$$IFS_BACKUP" ; \ for dir in "$${simpleReproducers[@]}" ; do \ cp -R "$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/resources/"* $(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)/ ; \ done ; \ done ; \ mkdir -p stamps && \ touch $@ $(REPRODUCERS_CLASS_NAMES): whiteListed=$(RUN_WHITELIST_FILTER); \ cd $(TEST_EXTENSIONS_TESTS_DIR) ; \ class_names= ; \ for test in `find -type f` ; do \ class_name=`echo $$test | sed -e 's|\.class$$||' -e 's|^\./||'` ; \ class_name=`echo $$class_name | sed -e 's|/|.|g' ` ; \ INCLUDE="NO" ; \ for x in $$whiteListed ; do \ q=`expr match "$$class_name" "$$x"`; \ r=$$? ; \ if [ $$r = 0 ]; then \ echo "$$class_name will be included in reproducers testcases because of $$x pattern in $(REPRODUCERS_CLASS_WHITELIST). Matching was $$q"; \ INCLUDE="YES" ; \ fi; \ done; \ if [ "$$INCLUDE" = "YES" ]; then \ class_names="$$class_names $$class_name" ; \ else \ echo "$$class_name had no match in $(REPRODUCERS_CLASS_WHITELIST). Excluding"; \ fi; \ done ; \ echo $$class_names > $(REPRODUCERS_CLASS_NAMES) stamps/run-netx-dist-tests.stamp: stamps/netx-dist.stamp stamps/plugin.stamp stamps/docs.stamp \ $(LAUNCHERS) $(DESKTOP_FILES) \ stamps/netx.stamp stamps/junit-jnlp-dist-dirs stamps/netx-dist-tests-import-cert-to-public \ stamps/test-extensions-compile.stamp stamps/compile-reproducers-testcases.stamp $(JUNIT_RUNNER_JAR) stamps/copy-reproducers-resources.stamp\ $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME) $(REPRODUCERS_CLASS_NAMES) stamps/process-custom-reproducers.stamp cd $(TEST_EXTENSIONS_DIR) ; \ class_names=`cat $(REPRODUCERS_CLASS_NAMES)` ; \ CLASSPATH=$(call joinsegments, $(NETX_DIR)/lib/classes.jar $(JUNIT_RUNTIME) $(JUNIT_RUNNER_JAR) . $(TEST_EXTENSIONS_TESTS_DIR) $(TEST_EXTENSIONS_SRCDIR)) ; \ $(SYSTEM_JRE_DIR)/bin/java $(REPRODUCERS_DPARAMETERS) \ -Xbootclasspath/a:$$CLASSPATH CommandLine $$class_names if WITH_XSLTPROC -$(XSLTPROC) --stringparam logs logs_reproducers.html $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/jreport.xsl $(TEST_EXTENSIONS_DIR)/tests-output.xml > $(TESTS_DIR)/index_reproducers.html -$(XSLTPROC) $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/logs.xsl $(TEST_EXTENSIONS_DIR)/ServerAccess-logs.xml > $(TESTS_DIR)/logs_reproducers.html -$(XSLTPROC) $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/textreport.xsl $(TEST_EXTENSIONS_DIR)/tests-output.xml > $(TESTS_DIR)/summary_reproducers.txt endif touch $@ stamps/process-custom-reproducers.stamp: stamps/junit-jnlp-dist-dirs stamps/netx-dist-tests-import-cert-to-public \ stamps/test-extensions-compile.stamp stamps/compile-reproducers-testcases.stamp $(JUNIT_RUNNER_JAR) stamps/copy-reproducers-resources.stamp\ $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME) $(REPRODUCERS_CLASS_NAMES) . $(TOP_SRC_DIR)/NEW_LINE_IFS ; \ customReproducers=(`cat $(TOP_BUILD_DIR)/junit-jnlp-dist-custom.txt `); \ IFS="$$IFS_BACKUP" ; \ for dir in "$${customReproducers[@]}" ; do \ pushd $(REPRODUCERS_TESTS_SRCDIR)/$(CUSTOM_REPRODUCERS)/$$dir/srcs; \ $(MAKE) prepare-reproducer ; \ popd ; \ done ; \ mkdir -p stamps && \ touch $@ clean-custom-reproducers: junit-jnlp-dist-custom.txt . $(TOP_SRC_DIR)/NEW_LINE_IFS ; \ customReproducers=(`cat $(TOP_BUILD_DIR)/junit-jnlp-dist-custom.txt `); \ IFS="$$IFS_BACKUP" ; \ for dir in "$${customReproducers[@]}" ; do \ pushd $(REPRODUCERS_TESTS_SRCDIR)/custom/$$dir/srcs; \ $(MAKE) clean-reproducer ; \ popd ; \ done ; \ rm -f stamps/process-custom-reproducers.stamp #for global-links you must be root, for opera there do not exists user-links #although this targets will indeed create symbolic links to enable #icedtea-web plugin inside browser it is intended for testing purposes if ENABLE_NATIVE_PLUGIN stamps/user-links.stamp: stamps/netx-dist.stamp stamps/plugin.stamp \ $(LAUNCHERS) stamps/netx.stamp $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) if [ $(MOZILLA_FAMILY_TEST) ] ; then \ if [ -e $(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME) ] ; then \ mv -f $(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME) $(MOZILLA_LOCAL_BACKUP_FILE) ; \ echo "$(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME) backed up as $(MOZILLA_LOCAL_BACKUP_FILE)" ; \ else \ echo "$(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME) doesn't exists, nothing to be backed up to $(MOZILLA_LOCAL_BACKUP_FILE)" ; \ fi ; \ pushd $(MOZILLA_LOCAL_PLUGINDIR) ; \ ln -s $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) $(PLUGIN_LINK_NAME) ; \ echo "$(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) linked as $$PWD/$(PLUGIN_LINK_NAME)" ; \ popd ; \ fi ; \ touch $@ restore-user-links: if [ $(MOZILLA_FAMILY_TEST) ] ; then \ if [ -e $(MOZILLA_LOCAL_BACKUP_FILE) ] ; then \ mv -f $(MOZILLA_LOCAL_BACKUP_FILE) $(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME) ; \ echo "$(MOZILLA_LOCAL_BACKUP_FILE) restored as $(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME)" ; \ else \ rm -f $(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME) ; \ echo "$(MOZILLA_LOCAL_BACKUP_FILE) do not exists, nothing to be restored. $(MOZILLA_LOCAL_PLUGINDIR)/$(PLUGIN_LINK_NAME) removed" ; \ fi ; \ fi ; if [ -e stamps/user-links.stamp ] ; then \ rm -f stamps/user-links.stamp ; \ fi stamps/global-links.stamp: stamps/netx-dist.stamp stamps/plugin.stamp $(LAUNCHERS) \ stamps/netx.stamp $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) if [ $(MOZILLA_FAMILY_TEST) ] ; then \ dir="$(MOZILLA_GLOBAL32_PLUGINDIR)" ; \ arch=`arch` ; \ if [ "$$arch" = "x86_64" ] ; then \ dir="$(MOZILLA_GLOBAL64_PLUGINDIR)" ; \ fi ; \ if [ -e "$$dir"/$(PLUGIN_LINK_NAME) ] ; then \ mv -f "$$dir"/$(PLUGIN_LINK_NAME) $(MOZILLA_GLOBAL_BACKUP_FILE) ; \ echo "$$dir/$(PLUGIN_LINK_NAME) backed up as $(MOZILLA_GLOBAL_BACKUP_FILE)" ; \ else \ echo "$$dir/$(PLUGIN_LINK_NAME) do not exists, nothing to be backed up to $(MOZILLA_GLOBAL_BACKUP_FILE)" ; \ fi ; \ pushd "$$dir" ; \ ln -s $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) $(PLUGIN_LINK_NAME) ; \ echo "$(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) linked as $$PWD/$(PLUGIN_LINK_NAME)" ; \ popd ; \ fi ; if [ "$(OPERA)" != "" ] ; then \ dir="$(OPERA_GLOBAL32_PLUGINDIR)" ; \ arch=`arch` ; \ if [ "$$arch" = "x86_64" ] ; then \ dir="$(OPERA_GLOBAL64_PLUGINDIR)" ; \ fi ; \ if [ -e "$$dir"/$(PLUGIN_LINK_NAME) ] ; then \ mv -f "$$dir"/$(PLUGIN_LINK_NAME) $(OPERA_GLOBAL_BACKUP_FILE) ; \ echo "$$dir/$(PLUGIN_LINK_NAME) backed up as $(OPERA_GLOBAL_BACKUP_FILE) "; \ else \ echo "$$dir/$(PLUGIN_LINK_NAME) do not exists, nothing to be backed up to $(OPERA_GLOBAL_BACKUP_FILE) "; \ fi ; \ pushd "$$dir" ; \ ln -s $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) $(PLUGIN_LINK_NAME) ; \ echo "$(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) linked as $$PWD/$(PLUGIN_LINK_NAME)" ; \ popd ; \ fi ; \ touch $@ restore-global-links: if [ $(MOZILLA_FAMILY_TEST) ] ; then \ dir="$(MOZILLA_GLOBAL32_PLUGINDIR)" ; \ arch=`arch` ; \ if [ "$$arch" = "x86_64" ] ; then \ dir="$(MOZILLA_GLOBAL64_PLUGINDIR)" ; \ fi ; \ if [ -e $(MOZILLA_GLOBAL_BACKUP_FILE) ] ; then \ mv -f $(MOZILLA_GLOBAL_BACKUP_FILE) "$$dir"/$(PLUGIN_LINK_NAME) ; \ echo "$(MOZILLA_GLOBAL_BACKUP_FILE) restored as $$dir/$(PLUGIN_LINK_NAME)" ; \ else \ rm -f "$$dir"/$(PLUGIN_LINK_NAME) ; \ echo "$(MOZILLA_GLOBAL_BACKUP_FILE) do not exists, nothing to be restored. $$dir/$(PLUGIN_LINK_NAME) removed" ; \ fi ; \ fi ; if [ "$(OPERA)" != "" ] ; then \ dir="$(OPERA_GLOBAL32_PLUGINDIR)" ; \ arch=`arch` ; \ if [ "$$arch" = "x86_64" ] ; then \ dir="$(OPERA_GLOBAL64_PLUGINDIR)" ; \ fi ; \ if [ -e $(OPERA_GLOBAL_BACKUP_FILE) ] ; then \ mv -f $(OPERA_GLOBAL_BACKUP_FILE) "$$dir"/$(PLUGIN_LINK_NAME) ; \ echo "$(OPERA_GLOBAL_BACKUP_FILE) restored as $$dir/$(PLUGIN_LINK_NAME)" ; \ else \ rm -f "$$dir"/$(PLUGIN_LINK_NAME) ; \ echo "$(OPERA_GLOBAL_BACKUP_FILE) do not exist, nothing to be restored. $$dir/$(PLUGIN_LINK_NAME) removed" ; \ fi ; \ fi ; if [ -e stamps/global-links.stamp ] ; then \ rm -f stamps/global-links.stamp ; \ fi endif netx-unit-tests-source-files.txt: find $(NETX_UNIT_TEST_SRCDIR) -name '*.java' | sort > $@ stamps/netx-unit-tests-compile.stamp: stamps/netx.stamp \ netx-unit-tests-source-files.txt stamps/test-extensions-compile.stamp mkdir -p $(NETX_UNIT_TEST_DIR) && \ $(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(NETX_UNIT_TEST_DIR) \ $(call composeclasspath, $(JUNIT_RUNTIME) $(TOP_BUILD_DIR)/liveconnect/lib/classes.jar $(NETX_DIR)/lib/classes.jar $(MSLINKS_JAR) $(TEST_EXTENSIONS_DIR) $(TAGSOUP_JAR)) \ @netx-unit-tests-source-files.txt && \ mkdir -p stamps && \ touch $@ $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME): mkdir $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME) cp $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/*.css $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME)/ cp $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/*.js $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME)/ $(UNIT_CLASS_NAMES): cd $(NETX_UNIT_TEST_DIR) ; \ class_names= ; \ for test in `find -type f` ; do \ class_name=`echo $$test | sed -e 's|\.class$$||' -e 's|^\./||'` ; \ class_name=`echo $$class_name | sed -e 's|/|.|g' ` ; \ class_names="$$class_names $$class_name" ; \ done ; \ echo $$class_names > $(UNIT_CLASS_NAMES); stamps/run-netx-unit-tests.stamp: stamps/netx-unit-tests-compile.stamp $(JUNIT_RUNNER_JAR) \ $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME) $(UNIT_CLASS_NAMES) filename=" " ; \ cd $(NETX_UNIT_TEST_SRCDIR) ; \ for file in `find . -type f \! -iname "*.java"`; do\ filename=`echo $$file `; \ cp --parents $$filename $(NETX_UNIT_TEST_DIR) ; \ done ; \ cd $(NETX_UNIT_TEST_DIR) ; \ class_names=`cat $(UNIT_CLASS_NAMES)` ; \ CLASSPATH="$(call joinsegments, $(NETX_DIR)/lib/classes.jar $(TOP_BUILD_DIR)/liveconnect/lib/classes.jar $(JUNIT_RUNTIME) $(MSLINKS_JAR) $(JUNIT_RUNNER_JAR) $(TEST_EXTENSIONS_DIR) . $(TEST_EXTENSIONS_SRCDIR) $(TAGSOUP_JAR))" ; \ $(SYSTEM_JRE_DIR)/bin/java "-Xbootclasspath/a:$$CLASSPATH" CommandLine $$class_names if WITH_XSLTPROC -$(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 -$(XSLTPROC) $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/logs.xsl $(NETX_UNIT_TEST_DIR)/ServerAccess-logs.xml > $(TESTS_DIR)/logs_unit.html -$(XSLTPROC) $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/textreport.xsl $(NETX_UNIT_TEST_DIR)/tests-output.xml > $(TESTS_DIR)/summary_unit.txt endif mkdir -p stamps && \ touch $@ stamps/compile-jacoco-operator.stamp: jacoco-operator-source-files.txt if WITH_JACOCO mkdir -p $(JACOCO_OPERATOR_DIR) && \ $(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(JACOCO_OPERATOR_DIR) \ $(call composeclasspath, $(JACOCO_CLASSPATH)) \ @jacoco-operator-source-files.txt ; else echo "Sorry, jacoco coverage report generator cant be compiled without jacoco installed. Try installing jacoco or specify with-jacoco value" ; exit 5 endif touch $@ #warning, during this target tests.build/netx/unit/tests-output.xml is backup and rewriten (but not coresponding html file) #xml results run with jacoco agent however, can be wrong, co the new tests-output.xml is then renamed and orginal one restored stamps/run-unit-test-code-coverage-jacoco.stamp: stamps/netx-unit-tests-compile.stamp $(JUNIT_RUNNER_JAR) \ $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME) $(UNIT_CLASS_NAMES) stamps/compile-jacoco-operator.stamp if WITH_JACOCO filename=" " ; \ cd $(NETX_UNIT_TEST_SRCDIR) ; \ for file in `find . -type f \! -iname "*.java"`; do\ filename=`echo $$file `; \ cp --parents $$filename $(NETX_UNIT_TEST_DIR) ; \ done ; \ cd $(NETX_UNIT_TEST_DIR) ; \ for file in $(COVERAGE_MODIFIED_FILES) ; do \ mv $(NETX_UNIT_TEST_DIR)/$$file $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" ; \ done ;\ class_names=`cat $(UNIT_CLASS_NAMES)` ; \ CLASSPATH=$(call joinsegments, $(NETX_DIR)/lib/classes.jar $(TOP_BUILD_DIR)/liveconnect/lib/classes.jar $(JUNIT_RUNTIME) $(JUNIT_RUNNER_JAR) $(TEST_EXTENSIONS_DIR) $(JACOCO_CLASSPATH) . $(TEST_EXTENSIONS_SRCDIR) $(MSLINKS_JAR) $(TAGSOUP_JAR)) ; \ $(SYSTEM_JRE_DIR)/bin/java $(JACOCO_AGENT_SWITCH) -Xbootclasspath/a:$$CLASSPATH CommandLine $$class_names ; \ for file in $(COVERAGE_MODIFIED_FILES) ; do \ mv $(NETX_UNIT_TEST_DIR)/$$file $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_SUFFIX)" ; \ mv $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" $(NETX_UNIT_TEST_DIR)/$$file ; \ done ; \ $(JACOCO_OPERATOR_EXEC) \ report --die-soon --html-output coverage --xml-output coverage.xml --input-file jacoco.exec \ --input-srcs $(NETX_SRCDIR) $(PLUGIN_SRCDIR)/java $(NETX_UNIT_TEST_SRCDIR) $(JUNIT_RUNNER_SRCDIR) $(TEST_EXTENSIONS_SRCDIR) \ --input-builds $(NETX_DIR)/lib/classes.jar $(TOP_BUILD_DIR)/liveconnect/lib/classes.jar $(NETX_UNIT_TEST_DIR) $(JUNIT_RUNNER_JAR) $(TEST_EXTENSIONS_DIR) \ --title "IcedTea-Web unit-tests codecoverage" ; else echo "Sorry, coverage report cant be run without jacoco installed. Try installing jacoco or specify with-jacoco value" ; exit 5 endif touch $@ $(COVERABLE_PLUGIN_DIR): mkdir -p $(COVERABLE_PLUGIN_DIR); $(COVERABLE_PLUGIN_DIR)/%.o: $(PLUGIN_SRCDIR)/%.cc cd $(COVERABLE_PLUGIN_DIR) && \ $(CXX) $(CXXFLAGS) \ $(DEFS) $(VERSION_DEFS) \ -DJDK_UPDATE_VERSION="\"$(JDK_UPDATE_VERSION)\"" \ -DPLUGIN_NAME="\"IcedTea-Web Plugin with jacoco coverage agent\"" \ -DJAVAWS_BIN="\"$(bindir)/$(JAVAWS)\"" \ -DJAVAWS_NAME="\"$(javaws)\"" \ -DPLUGIN_VERSION="\"$(PLUGIN_VERSION)\"" \ -DPACKAGE_URL="\"$(PACKAGE_URL)\"" \ -DMOZILLA_VERSION_COLLAPSED="$(MOZILLA_VERSION_COLLAPSED)" \ -DICEDTEA_WEB_JRE="\"$(SYSTEM_JRE_DIR)\"" \ -DPLUGIN_BOOTCLASSPATH=$(PLUGIN_COVERAGE_BOOTCLASSPATH) \ -DCOVERAGE_AGENT=$(JACOCO_AGENT_PLUGIN_SWITCH) \ -DNETX_JAR="\"$(NETX_JAR)\"" \ -DPLUGIN_JAR="\"$(PLUGIN_JAR)\"" \ -DJSOBJECT_JAR="\"$(JSOBJECT_JAR)\""\ $(GLIB_CFLAGS) \ $(MOZILLA_CFLAGS) \ -fvisibility=hidden \ -fPIC -o $@ -c $< $(COVERABLE_PLUGIN_DIR)/$(BUILT_PLUGIN_LIBRARY): $(addprefix $(COVERABLE_PLUGIN_DIR)/,$(PLUGIN_OBJECTS)) cd $(COVERABLE_PLUGIN_DIR) && \ $(CXX) $(CXXFLAGS) \ $(PLUGIN_OBJECTS) \ $(GLIB_LIBS) \ $(MOZILLA_LIBS) \ -shared -o $@ stamps/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) touch $@ #warning, during this target tests.build/netx/jnlp_testsengine/tests-output.xml is backup and rewriten (but not coresponding html file) #xml results run with jacoco agent, however, can be wrong, co the new tests-output.xml is then renamed and orginal one restored stamps/run-reproducers-test-code-coverage-jacoco.stamp: stamps/run-netx-dist-tests.stamp $(REPRODUCERS_CLASS_NAMES) \ stamps/compile-jacoco-operator.stamp stamps/build-fake-plugin.stamp if WITH_JACOCO cd $(TESTS_DIR) ; \ for file in $(COVERAGE_MODIFIED_FILES) ; do \ mv $(TEST_EXTENSIONS_DIR)/$$file $(TEST_EXTENSIONS_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" ; \ done ;\ echo "backuping $(JAVAWS) in $(DESTDIR)$(bindir)" ; \ javaws_backup=$(DESTDIR)$(bindir)/javaws_backup ; \ mv $(DESTDIR)$(bindir)/$(JAVAWS) $$javaws_backup ; \ echo "patching $(JAVAWS)" ; \ nw_bootclasspath="-Xbootclasspath/a:$(UNIFIED_JACOCO_CLASSPATH)" ; \ 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) ; \ chmod 777 $(DESTDIR)$(bindir)/$(JAVAWS) ; \ echo "backuping plugin in $(DESTDIR)/$(libdir)$(BUILT_PLUGIN_LIBRARY)" ; \ plugin_backup=$(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY)_backup ; \ mv $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) $$plugin_backup ; \ echo "fakeing plugin" ; \ cp $(COVERABLE_PLUGIN_DIR)/$(BUILT_PLUGIN_LIBRARY) $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) ; \ testcases_srcs=( ) ; \ k=0 ; \ types=($(ALL_REPRODUCERS)); \ for which in "$${types[@]}" ; do \ . $(TOP_SRC_DIR)/NEW_LINE_IFS ; \ simpleReproducers=(`cat $(TOP_BUILD_DIR)/junit-jnlp-dist-$$which.txt `); \ IFS="$$IFS_BACKUP" ; \ for dir in "$${simpleReproducers[@]}" ; do \ testcases_srcs[k]="$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases/" ; \ k=$$((k+1)) ; \ done ; \ done ; \ cd $(TEST_EXTENSIONS_DIR) ; \ class_names=`cat $(REPRODUCERS_CLASS_NAMES)` ; \ 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)) ; \ $(SYSTEM_JRE_DIR)/bin/java $(JACOCO_AGENT_SWITCH) $(REPRODUCERS_DPARAMETERS) \ -Xbootclasspath/a:$$CLASSPATH CommandLine $$class_names ; \ if [ -f $(JACOCO_JAVAWS_RESULTS) ] ; then \ jacoco_javaws_results=$(JACOCO_JAVAWS_RESULTS) ; \ $(JACOCO_OPERATOR_EXEC) \ report --die-soon --html-output coverage-javaws --xml-output coverage-javaws.xml --input-file $(JACOCO_JAVAWS_RESULTS) \ --input-srcs $(NETX_SRCDIR) \ --input-builds $(NETX_DIR)/lib/classes.jar \ --title "IcedTea-Web javaws reproducers codecoverage" ; \ fi; \ if [ -f $(JACOCO_PLUGIN_RESULTS) ] ; then \ jacoco_plugin_results=$(JACOCO_PLUGIN_RESULTS) ; \ $(JACOCO_OPERATOR_EXEC) \ report --die-soon --html-output coverage-plugin --xml-output coverage-plugin.xml --input-file $(JACOCO_PLUGIN_RESULTS) \ --input-srcs $(NETX_SRCDIR) $(PLUGIN_SRCDIR)/java \ --input-builds $(NETX_DIR)/lib/classes.jar $(TOP_BUILD_DIR)/liveconnect/lib/classes.jar \ --title "IcedTea-Web plugin reproducers codecoverage" ; \ fi; \ $(JACOCO_OPERATOR_EXEC) \ merge --die-soon --input-files jacoco.exec $$jacoco_javaws_results $$jacoco_plugin_results --output-file jacoco-merged-reproducers.exec ; \ $(JACOCO_OPERATOR_EXEC) \ report --html-output coverage --xml-output coverage.xml --input-file jacoco-merged-reproducers.exec \ --input-srcs $(NETX_SRCDIR) $(PLUGIN_SRCDIR)/java $(JUNIT_RUNNER_SRCDIR) $(TEST_EXTENSIONS_SRCDIR) $(TEST_EXTENSIONS_TESTS_SRCDIR) "$${testcases_srcs[@]}" \ --input-builds $(NETX_DIR)/lib/classes.jar $(TOP_BUILD_DIR)/liveconnect/lib/classes.jar $(JUNIT_RUNNER_JAR) $(TEST_EXTENSIONS_DIR) $(TEST_EXTENSIONS_TESTS_DIR) \ --title "IcedTea-Web reproducers-tests codecoverage" ; \ echo "restoring $(JAVAWS) in $(DESTDIR)$(bindir)" ; \ rm -f $(DESTDIR)$(bindir)/$(javaws); \ mv $$javaws_backup $(DESTDIR)$(bindir)/$(JAVAWS); \ echo "restoring plugin in $(DESTDIR)/$(libdir)$(BUILT_PLUGIN_LIBRARY)" ; \ mv $$plugin_backup $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) ; \ for file in $(COVERAGE_MODIFIED_FILES) ; do \ mv $(TEST_EXTENSIONS_DIR)/$$file $(TEST_EXTENSIONS_DIR)/"$$file""$(EMMA_SUFFIX)" ; \ mv $(TEST_EXTENSIONS_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" $(TEST_EXTENSIONS_DIR)/$$file ; \ done ; else echo "Sorry, coverage report cant be run without jacoco installed. Try installing jacoco or specify with-jacoco value" ; exit 5 endif touch $@ run-test-code-coverage-jacoco: stamps/run-unit-test-code-coverage-jacoco.stamp stamps/run-reproducers-test-code-coverage-jacoco.stamp if WITH_JACOCO cd $(TESTS_DIR) ; \ k=0 ; \ types=($(ALL_REPRODUCERS)); \ for which in "$${types[@]}" ; do \ . $(TOP_SRC_DIR)/NEW_LINE_IFS ; \ simpleReproducers=(`cat $(TOP_BUILD_DIR)/junit-jnlp-dist-$$which.txt `); \ IFS="$$IFS_BACKUP" ; \ for dir in "$${simpleReproducers[@]}" ; do \ testcases_srcs[k]="$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases/" ; \ k=$$((k+1)) ; \ done ; \ done ; \ class_names=`cat $(REPRODUCERS_CLASS_NAMES)` ; \ $(JACOCO_OPERATOR_EXEC) \ merge --die-soon --input-files $(TEST_EXTENSIONS_DIR)/jacoco-merged-reproducers.exec $(NETX_UNIT_TEST_DIR)/jacoco.exec --output-file jacoco-merged.exec; \ $(JACOCO_OPERATOR_EXEC) \ report --html-output coverage --xml-output coverage.xml --input-file jacoco-merged.exec \ --input-srcs $(NETX_SRCDIR) $(PLUGIN_SRCDIR)/java $(JUNIT_RUNNER_SRCDIR) $(TEST_EXTENSIONS_SRCDIR) $(TEST_EXTENSIONS_TESTS_SRCDIR) "$${testcases_srcs[@]}" \ --input-builds $(NETX_DIR)/lib/classes.jar $(TOP_BUILD_DIR)/liveconnect/lib/classes.jar $(JUNIT_RUNNER_JAR) $(TEST_EXTENSIONS_DIR) $(TEST_EXTENSIONS_TESTS_DIR) \ --input-srcs $(NETX_UNIT_TEST_SRCDIR) \ --input-builds $(NETX_UNIT_TEST_DIR) \ --title "IcedTea-Web complete codecoverage" ; else echo "Sorry, coverage report cant be run without jacoco installed. Try installing jacoco or specify with-jacoco value" ; exit 5 endif run-test-server-on-44321: stamps/netx.stamp stamps/junit-jnlp-dist-dirs stamps/netx-dist-tests-import-cert-to-public \ stamps/test-extensions-compile.stamp stamps/compile-reproducers-testcases.stamp $(JUNIT_RUNNER_JAR) stamps/copy-reproducers-resources.stamp cd $(TEST_EXTENSIONS_DIR) ; \ CLASSPATH=$(call joinsegments, $(NETX_DIR)/lib/classes.jar $(JUNIT_RUNTIME) $(JUNIT_RUNNER_JAR) . $(TEST_EXTENSIONS_TESTS_DIR)) ; \ $(SYSTEM_JRE_DIR)/bin/java $(REPRODUCERS_DPARAMETERS) \ -Xbootclasspath/a:$$CLASSPATH net.sourceforge.jnlp.ServerAccess run-test-server-on-random-port: stamps/netx.stamp stamps/junit-jnlp-dist-dirs stamps/netx-dist-tests-import-cert-to-public \ stamps/test-extensions-compile.stamp stamps/compile-reproducers-testcases.stamp $(JUNIT_RUNNER_JAR) stamps/copy-reproducers-resources.stamp cd $(TEST_EXTENSIONS_DIR) ; \ CLASSPATH=$(call joinsegments, $(NETX_DIR)/lib/classes.jar $(JUNIT_RUNTIME) $(JUNIT_RUNNER_JAR) . $(TEST_EXTENSIONS_TESTS_DIR)) ; \ $(SYSTEM_JRE_DIR)/bin/java $(REPRODUCERS_DPARAMETERS) \ -Xbootclasspath/a:$$CLASSPATH net.sourceforge.jnlp.ServerAccess randomport run-test-server-on-itwtestsport: stamps/netx.stamp stamps/junit-jnlp-dist-dirs stamps/netx-dist-tests-import-cert-to-public \ stamps/test-extensions-compile.stamp stamps/compile-reproducers-testcases.stamp $(JUNIT_RUNNER_JAR) stamps/copy-reproducers-resources.stamp cd $(TEST_EXTENSIONS_DIR) ; \ CLASSPATH=$(call joinsegments, $(NETX_DIR)/lib/classes.jar $(JUNIT_RUNTIME) $(JUNIT_RUNNER_JAR) . $(TEST_EXTENSIONS_TESTS_DIR)) ; \ $(SYSTEM_JRE_DIR)/bin/java $(REPRODUCERS_DPARAMETERS) \ -Xbootclasspath/a:$$CLASSPATH net.sourceforge.jnlp.ServerAccess $$ITWTESTSPORT clean-netx-tests: clean-netx-unit-tests clean-junit-runner clean-netx-dist-tests clean-test-code-coverage-jacoco if [ -e $(TESTS_DIR)/netx ]; then \ rmdir $(TESTS_DIR)/netx ; \ fi clean-junit-runner: rm -f junit-runner-source-files.txt rm -rf $(JUNIT_RUNNER_DIR) rm -f $(JUNIT_RUNNER_JAR) clean-netx-unit-tests: clean_tests_reports rm -f netx-unit-tests-source-files.txt rm -rf $(NETX_UNIT_TEST_DIR) rm -f $(UNIT_CLASS_NAMES) rm -f stamps/check-pac-functions.stamp rm -f stamps/run-netx-unit-tests.stamp rm -f stamps/netx-unit-tests-compile.stamp clean_tests_reports: rm -rf $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME)/ rm -f $(TESTS_DIR)/*.html rm -f $(TESTS_DIR)/summary_unit.txt rm -f $(TESTS_DIR)/summary_reproducers.txt clean-netx-dist-tests: clean_tests_reports netx-dist-tests-remove-cert-from-public clean-custom-reproducers rm -f test-extensions-source-files.txt rm -f test-extensions-tests-source-files.txt rm -f $(TEST_EXTENSIONS_COMPATIBILITY_SYMLINK) rm -rf $(TEST_EXTENSIONS_TESTS_DIR) rm -rf $(REPRODUCERS_BUILD_DIR) rm -rf $(REPRODUCERS_TESTS_SERVER_DEPLOYDIR) rm -rf $(TEST_EXTENSIONS_DIR) rm -f stamps/junit-jnlp-dist-dirs rm -f stamps/test-extensions-compile.stamp rm -f stamps/test-extensions-tests-compile.stamp rm -f stamps/netx-dist-tests-prepare-reproducers.stamp rm -f stamps/compile-reproducers-testcases.stamp rm -f stamps/copy-reproducers-resources.stamp rm -f stamps/netx-dist-tests-sign-some-reproducers.stamp rm -f stamps/change-dots-to-paths.stamp rm -f junit-jnlp-dist-simple.txt rm -f junit-jnlp-dist-custom.txt rm -f netx-dist-tests-tests-source-files.txt types=($(SIGNED_REPRODUCERS)) ; \ for which in "$${types[@]}" ; do \ rm -f junit-jnlp-dist-$$which.txt ; \ rm -f $(EXPORTED_TEST_CERT_PREFIX)_$$which.$(EXPORTED_TEST_CERT_SUFFIX) ; \ done ; rm -f stamps/exported-test-certs.stamp rm -f stamps/junit-jnlp-dist-signed.stamp rm -f $(REPRODUCERS_CLASS_NAMES) rm -f $(TOP_BUILD_DIR)/$(PRIVATE_KEYSTORE_NAME) rm -f stamps/run-netx-dist-tests.stamp clean-unit-test-code-coverage-jacoco: if [ -e stamps/run-unit-test-code-coverage-jacoco.stamp ]; then \ rm -rf $(NETX_UNIT_TEST_DIR)/coverage ; \ rm -f $(NETX_UNIT_TEST_DIR)/coverage.xml ; \ rm -f $(NETX_UNIT_TEST_DIR)/jacoco.exec ; \ rm -f $(NETX_UNIT_TEST_DIR)/tests-output_withEmma.xml ; \ rm -f stamps/run-unit-test-code-coverage-jacoco.stamp ; \ fi clean-reproducers-test-code-coverage-jacoco: if [ -e stamps/run-reproducers-test-code-coverage-jacoco.stamp ]; then \ rm -rf $(TEST_EXTENSIONS_DIR)/coverage-javaws ; \ rm -f $(TEST_EXTENSIONS_DIR)/coverage-javaws.xml ; \ rm -f $(TEST_EXTENSIONS_DIR)/jacoco_javaws.exec ; \ rm -rf $(TEST_EXTENSIONS_DIR)/coverage-plugin ; \ rm -f $(TEST_EXTENSIONS_DIR)/coverage-plugin.xml ; \ rm -f $(TEST_EXTENSIONS_DIR)/jacoco_plugin.exec ; \ rm -rf $(TEST_EXTENSIONS_DIR)/coverage ; \ rm -f $(TEST_EXTENSIONS_DIR)/coverage.xml ; \ rm -f $(TEST_EXTENSIONS_DIR)/jacoco-merged-reproducers.exec ; \ rm -f $(TEST_EXTENSIONS_DIR)/tests-output_withEmma.xml ; \ rm -f stamps/run-reproducers-test-code-coverage-jacoco.stamp ; \ fi clean-test-code-coverage-jacoco: clean-unit-test-code-coverage-jacoco clean-reproducers-test-code-coverage-jacoco clean-test-code-coverage-tools-jacoco if [ -e $(TESTS_DIR)/coverage.xml ]; then \ rm -rf $(TESTS_DIR)/coverage ; \ rm -f $(TESTS_DIR)/jacoco-merged.exec; \ fi clean-test-code-coverage-tools-jacoco: rm -rf $(JACOCO_OPERATOR_DIR) rm -rf $(COVERABLE_PLUGIN_DIR) rm -f stamps/compile-jacoco-operator.stamp; rm -f jacoco-operator-source-files.txt rm -f stamps/build-fake-plugin.stamp # plugin tests if ENABLE_NATIVE_PLUGIN stamps/plugin-tests.stamp: $(PLUGIN_TEST_SRCS) stamps/plugin.stamp mkdir -p plugin/tests/LiveConnect $(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d plugin/tests/LiveConnect \ -classpath liveconnect/lib/classes.jar \ $(PLUGIN_TEST_SRCS) ; $(SYSTEM_JDK_DIR)/bin/jar cf plugin/tests/LiveConnect/PluginTest.jar \ plugin/tests/LiveConnect/*.class ; cp -pPR $(SRC_DIR_LINK) $(TOP_SRC_DIR)/plugin/tests/LiveConnect/*.{js,html} \ plugin/tests/LiveConnect ; echo "Done. Now launch \"firefox file://`pwd`/index.html\"" ; mkdir -p stamps touch stamps/plugin-tests.stamp endif printvarsfile: $(MAKE) printvars > $@ printvars: $(foreach v, $(.VARIABLES), $(info $(v)=$($(v)))) # Target Aliases # =============== add-netx: stamps/add-netx.stamp add-netx-debug: stamps/add-netx-debug.stamp netx: stamps/netx.stamp netx-dist: stamps/netx-dist.stamp plugin: stamps/plugin.stamp plugin-tests: stamps/plugin-tests.stamp check-pac-functions: stamps/check-pac-functions.stamp run-netx-unit-tests: stamps/run-netx-unit-tests.stamp links: stamps/global-links.stamp user-links: stamps/user-links.stamp run-netx-dist-tests: stamps/run-netx-dist-tests.stamp run-unit-test-code-coverage-jacoco: stamps/run-unit-test-code-coverage-jacoco.stamp run-reproducers-test-code-coverage-jacoco: stamps/run-reproducers-test-code-coverage-jacoco.stamp