# Ptolemy II to build Web Start JNLP files # # @Author: Christopher Brooks # @Version: $Id: jnlp.mk 59522 2010-10-14 07:23:42Z cxh $ # # Copyright (c) 2001-2010 The Regents of the University of California. # All rights reserved. # # Permission is hereby granted, without written agreement and without # license or royalty fees, to use, copy, modify, and distribute this # software and its documentation for any purpose, provided that the above # copyright notice and the following two paragraphs appear in all copies # of this software. # # IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY # FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES # ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF # THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE # PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF # CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, # ENHANCEMENTS, OR MODIFICATIONS. # # PT_COPYRIGHT_VERSION_2 # COPYRIGHTENDKEY ########################################################################## # Java Network Launch Protocol aka Web Start # # This makefile should be included from the bottom of $PTII/makefile # It is a separate file so as to not clutter up $PTII/makefile # We usually build installers using jnlp first because it is # easier to update jar files and test. # # To build with a self signed certificate, use: # make jnlp_all # The usual procedure is to build the jnlp files, access them via # a browser and then use the Ptolemy "about" facilty (part of the copyright # links) to expand the configuration and view all the demos. # In this way, we can be sure that we have all the files in the jar # files _before_ building installers. # To test a file, run: make jnlp_run # To display our key: # make key_list STOREPASSWORD="-storepass xxx" KEYSTORE=/users/ptII/adm/certs/ptkeystore # make key_list STOREPASSWORD="-storepass xxx" KEYSTORE=c:/cygwin/users/ptII/adm/certs/ptkeystore # To sign using our key and update the website: # make KEYSTORE=/users/ptII/adm/certs/ptkeystore KEYALIAS=ptolemy STOREPASSWORD="-storepass xxx" KEYPASSWORD="-keypass xxx" jnlp_dist # To update the website: make jnlp_dist_update ################################ # Large jar file containing all the codedoc documentation. # Comment this out for testing DOC_CODEDOC_JAR = \ doc/codeDoc.jar #DOC_CODEDOC_JAR = # We put the signed jar files in a separate subdirectory # for two reasons # 1) If a jar file is checked in to cvs, and we sign it, then # cvs update will think that we need to update it. # So, we copy the jar files to a different directory and then sign # them. # # 2) If we run applets with jar files that have been signed, then the # user gets a confusing message asking if they want to run the signed # applets. Since the Ptolemy II applets do not require signed jar # files, this is unnecessary SIGNED_DIR = signed lib/bcvtbMacOSX.jar: if [ -f lib/libbcvtb.jnilib ]; then \ (cd lib; \ "$(JAR)" -cvf bcvtbMacOSX.jar libbcvtb.jnilib); \ else \ echo "$$PTII/libbcvtb.jnilib does not exist creating dummy jar"; \ echo "$$PTII/lib/libbcvtb.jnilib not found, see PTII/mk/jnlp.mk" \ > lib/README_bcvtb.txt; \ (cd lib; \ "$(JAR)" -cvf bcvtbMacOSX.jar \ README_bcvtb.txt); \ rm -f lib/README_bcvtb.txt; \ fi lib/rxtxMacOSX.jar: if [ -f /Library/Java/Extensions/RXTXcomm.jar ]; then \ (cd /Library/Java/Extensions; \ "$(JAR)" -cvf $(PTII)/lib/rxtxMacOSX.jar librxtxSerial.jnilib RXTXcomm.jar); \ else \ echo "/Library/Java/Extensions/RXTXcomm.jar, creating dummy jar"; \ echo "/Library/Java/Extension/RXTXcomm.jar, not found, see PTII/mk/jnlp.mk" \ > README_rxtx.txt; \ (cd lib; \ "$(JAR)" -cvf lib/rxtxMacOSX.jar \ README_rxtx.txt); \ rm -f README_rxtx.txt; \ fi # Jar file that contains win32com.dll for the Java Serial Communications API lib/rxtxWindows.jar: if [ -f vendors/sun/commapi/win32com.dll ]; then \ (cd vendors/sun/commapi; \ "$(JAR)" -cvf ../../../lib/rxtxWindows.jar win32com.dll); \ else \ echo "vendors/sun/commapi not found, creating dummy jar"; \ echo "vendors/sun/commapi not found, see PTII/mk/jnlp.mk" \ > README_comm.txt; \ "$(JAR)" -cvf ../../../lib/rxtxindows.jar \ README_comm.txt; \ rm -f README_comm.txt; \ fi lib/joystickWindows.jar: if [ -d vendors/misc/joystick/lib/ ]; then \ (cd vendors/misc/joystick/lib/; \ "$(JAR)" -cvf "$(PTII)/lib/joystickWindows.jar" jjstick.dll); \ else \ echo "vendors/misc/joystick not found, creating dummy jar"; \ echo "vendors/misc/joystick/lib not found" \ > README_joystick.txt; \ "$(JAR)" -cvf "$(PTII)/lib/joystickWindows.jar" \ README_joystick.txt; \ rm -f README_joystick.txt; \ fi # NATIVE_SIGNED_LIB_JARS is a separate vaiable so that we can # include it in ALL_JNLP_JARS NATIVE_SIGNED_LIB_JARS = \ lib/bcvtbMacOSX.jar \ lib/joystickWindows.jar \ lib/matlabMacOSX.jar \ lib/matlabSunOS.jar \ lib/matlabWindows.jar \ lib/rxtxMacOSX.jar \ lib/rxtxWindows.jar SIGNED_LIB_JARS = $(NATIVE_SIGNED_LIB_JARS) \ lib/diva.jar \ lib/kieler.jar \ lib/jasminclasses.jar \ lib/jython.jar \ lib/ptCal.jar \ lib/sootclasses.jar # Web Start can load jars either eagerly or lazily. # This makefile variable gets passed to $PTII/bin/mkjnlp and determines # the number of jars that are loaded eagerly. Of course, for this to # work, the jars you want to load eagerly need to be at the front of the # list. In general, large jars such as diva.jar and ptsupport.jar # should be loaded eagerly. #NUMBER_OF_JARS_TO_LOAD_EAGERLY = 11 NUMBER_OF_JARS_TO_LOAD_EAGERLY = 999 # Jar files that will appear in most Ptolemy II JNLP files. # HyVisual has its own set of core jars # Order matters here, include the most important jars first # PTMATLAB_JARS is set by configure in $PTII/mk/ptII.mk CORE_JNLP_JARS = \ doc/docConfig.jar \ lib/diva.jar \ lib/kieler.jar \ ptolemy/ptsupport.jar \ ptolemy/vergil/vergil.jar \ ptolemy/domains/domains.jar \ ptolemy/actor/parameters/demo/demo.jar \ $(PTMATLAB_JARS) ####### # DSP - The smallest runtime # # Jar files that will appear in a DSP only JNLP Ptolemy II Runtime. # # doc/design/usingVergil/usingVergil.jar is used in dsp, ptiny and full, # but not hyvisual. DSP_ONLY_JNLP_JARS = \ doc/design/usingVergil/usingVergil.jar DSP_MAIN_JAR = \ ptolemy/actor/gui/jnlp/DSPApplication.jar DSP_JNLP_JARS = \ $(DSP_MAIN_JAR) \ $(CORE_JNLP_JARS) \ $(DOC_CODEDOC_JAR) ####### # Building Controls Virtual Test Bed (https://gaia.lbl.gov/bcvtb) # BCVTB_ONLY_JNLP_JARS = \ doc/design/usingVergil/usingVergil.jar BCVTB_MAIN_JAR = \ ptolemy/actor/gui/jnlp/BCVTBApplication.jar # PTMATLAB_JARS is set by configure in $PTII/mk/ptII.mk BCVTB_JNLP_JARS = \ doc/docConfig.jar \ lib/diva.jar \ lib/kieler.jar \ ptolemy/ptsupport.jar \ ptolemy/vergil/vergil.jar \ ptolemy/domains/sdf.jar \ ptolemy/domains/modal.jar \ ptolemy/actor/parameters/demo/demo.jar \ $(PTMATLAB_JARS) \ ptolemy/ptsupport.jar \ $(DOC_CODEDOC_JAR) ####### # HyVisual - HybridSystenms # # Jar files that will appear in a HyVisual only JNLP Ptolemy II Runtime. # This list is used to create the ptII/signed directory, so each # jar file should be named once in one of the *ONLY_JNLP_JARS # - rather than including domains.jar, we include only ct.jar, fsm.jar # - hybrid/configure.xml includes actor/lib/math.xml which includes # sdf.lib.DotProduct # - hybrid/configure.xml includes # actor/lib/conversions/conversions.xml # which includes # sdf.lib.BitsToInt # sdf.lib.IntToBits # # The full version of Vergil should not include any of the jar files below # because the hsif conversion does not work here HYBRID_SYSTEMS_ONLY0_JNLP_JARS = \ doc/design/hyvisual.jar \ doc/codeDocHyVisual.jar \ ptolemy/hsif/hsif.jar \ ptolemy/hsif/demo/demo.jar \ ptolemy/domains/continuous/continuous.jar \ ptolemy/domains/ct/ct.jar \ ptolemy/domains/de/de.jar \ ptolemy/domains/fsm/fsm.jar \ ptolemy/domains/gr/gr.jar \ ptolemy/domains/gr/demo/demo.jar \ ptolemy/domains/modal/modal.jar \ ptolemy/domains/sdf/lib/lib.jar \ ptolemy/domains/sdf/kernel/kernel.jar \ ptolemy/domains/sr/sr.jar HYBRID_SYSTEMS_ONLY_JNLP_JARS = \ $(HYBRID_SYSTEMS_ONLY0_JNLP_JARS) \ lib/saxon8.jar \ lib/saxon8-dom.jar HYBRID_SYSTEMS_MAIN_JAR = \ ptolemy/actor/gui/jnlp/HyVisualApplication.jar HYBRID_SYSTEMS_DEMO_AND_DOC_JARS = \ ptolemy/domains/continuous/demo/demo.jar \ ptolemy/domains/continuous/doc/doc.jar \ ptolemy/domains/ct/demo/demo.jar \ ptolemy/domains/ct/doc/doc.jar \ ptolemy/domains/fsm/doc/doc.jar \ ptolemy/domains/fsm/demo/demo.jar \ ptolemy/domains/modal/doc/doc.jar \ ptolemy/domains/modal/demo/demo.jar \ ptolemy/domains/sdf/demo/demo.jar \ ptolemy/domains/sdf/doc/doc.jar # PTMATLAB_JARS is set by configure in $PTII/mk/ptII.mk HYBRID_SYSTEMS_JNLP_JARS = \ $(HYBRID_SYSTEMS_MAIN_JAR) \ $(HYBRID_SYSTEMS_ONLY_JNLP_JARS) \ $(HYBRID_SYSTEMS_DEMO_AND_DOC_JARS) \ doc/docConfig.jar \ lib/diva.jar \ lib/kieler.jar \ ptolemy/ptsupport.jar \ ptolemy/vergil/vergil.jar \ ptolemy/domains/gr/lib/quicktime/quicktime.jar \ $(PTMATLAB_JARS) PTALON_JARS = \ ptolemy/actor/ptalon/antlr/antlr.jar \ ptolemy/actor/ptalon/demo/demo.jar \ ptolemy/actor/ptalon/ptalon.jar ####### # Ptiny # # Jar files that will appear in a smaller (Ptiny) JNLP Ptolemy II Runtime. PTINY_ONLY_JNLP_JARS = \ lib/jython.jar \ lib/ptcolt.jar \ ptolemy/actor/lib/colt/colt.jar \ ptolemy/actor/lib/colt/demo/demo.jar \ ptolemy/actor/lib/comm/demo/demo.jar \ ptolemy/actor/lib/hoc/demo/demo.jar \ ptolemy/actor/lib/javasound/demo/demo.jar \ ptolemy/actor/lib/jni/demo/demo.jar \ ptolemy/actor/lib/python/python.jar \ ptolemy/actor/lib/python/demo/demo.jar \ ptolemy/actor/lib/security/demo/demo.jar \ $(PTALON_JARS) \ $(HYBRID_SYSTEMS_DEMO_AND_DOC_JARS) \ ptolemy/data/type/demo/demo.jar \ ptolemy/data/unit/demo/demo.jar \ ptolemy/domains/ddf/demo/demo.jar \ ptolemy/domains/ddf/doc/doc.jar \ ptolemy/domains/de/demo/demo.jar \ ptolemy/domains/de/doc/doc.jar \ ptolemy/domains/hdf/demo/demo.jar \ ptolemy/domains/hdf/doc/doc.jar \ ptolemy/domains/pn/demo/demo.jar \ ptolemy/domains/pn/doc/doc.jar \ ptolemy/domains/rendezvous/demo/demo.jar \ ptolemy/domains/rendezvous/doc/doc.jar \ ptolemy/domains/sr/demo/demo.jar \ ptolemy/domains/sr/doc/doc.jar \ ptolemy/moml/demo/demo.jar \ ptolemy/vergil/kernel/attributes/demo/demo.jar PTINY_MAIN_JAR = \ ptolemy/actor/gui/jnlp/PtinyApplication.jar PTINY_JNLP_JARS = \ $(PTINY_MAIN_JAR) \ $(CORE_JNLP_JARS) \ $(DOC_CODEDOC_JAR) \ $(DSP_ONLY_JNLP_JARS) \ $(PTINY_ONLY_JNLP_JARS) PTINY_SANDBOX_MAIN_JAR = \ ptolemy/actor/gui/jnlp/PtinySandboxApplication.jar PTINY_SANDBOX_JNLP_JARS = \ $(PTINY_SANDBOX_MAIN_JAR) \ $(CORE_JNLP_JARS) \ $(DOC_CODEDOC_JAR) \ $(DSP_ONLY_JNLP_JARS) \ $(PTINY_ONLY_JNLP_JARS) ####### # Full # CODEGEN_JARS = \ ptolemy/codegen/codegen.jar \ ptolemy/codegen/c/vergil/vergil.jar \ ptolemy/codegen/demo/demo.jar \ ptolemy/codegen/c/domains/fsm/demo/demo.jar \ ptolemy/codegen/c/domains/modal/demo/demo.jar \ ptolemy/codegen/c/domains/pn/demo/demo.jar \ ptolemy/codegen/java/actor/lib/embeddedJava/demo/demo.jar \ ptolemy/codegen/rtmaude/rtmaude.jar COPERNICUS_JARS = \ lib/jasminclasses.jar \ lib/sootclasses.jar \ ptolemy/copernicus/copernicus.jar BACKTRACK_JARS = #BACKTRACK_JARS = \ # ptolemy/backtrack/backtrack.jar \ # ptolemy/backtrack/demo/demo.jar EXEC_JARS = ptolemy/actor/gui/exec/exec.jar # We are not shipping the fuzzy logic actor because it is GPL'd FUZZY_JARS = DEVEL_FUZZY_JARS = \ ptolemy/actor/lib/logic/fuzzy/fuzzy.jar \ ptolemy/actor/lib/logic/fuzzy/demo/demo.jar \ PDFRENDERER_JARS = ptolemy/vergil/pdfrenderer/pdfrenderer.jar \ lib/PDFRenderer.jar PTERA_JARS = \ ptolemy/domains/ptera/ptera.jar \ ptolemy/domains/ptera/demo/demo.jar \ ptolemy/domains/ptera/doc/doc.jar \ ptolemy/vergil/ptera/ptera.jar PTJACL_JARS = ptolemy/actor/gui/ptjacl/ptjacl.jar \ lib/ptjacl.jar # Do not include PTJACL for size reasons PTJACL_JARS = # Jars for configurable run control panel RUN_JARS = \ com/jgoodies/jgoodies.jar \ lib/bsh-2.0b4.jar \ org/mlc/mlc.jar \ ptolemy/actor/gui/run/run.jar WIRELESS_JARS = \ ptolemy/domains/wireless/wireless.jar \ ptolemy/domains/wireless/demo/demo.jar \ ptolemy/domains/wireless/doc/doc.jar FULL_8_1_JARS = DEVEL_FULL_8_1_JARS = \ ptolemy/cg/cg.jar \ ptolemy/data/properties/properties.jar \ ptolemy/data/properties/lattice/imageOntology/demo/demo.jar \ ptolemy/data/properties/demo/demo.jar \ ptolemy/vergil/properties/properties.jar \ ptolemy/data/ontologies/ontologies.jar \ ptolemy/vergil/ontologies/ontologies.jar \ ptolemy/domains/sequence/sequence.jar \ ptolemy/domains/sequence/demo/demo.jar \ ptolemy/domains/pthales/pthales.jar \ ptolemy/domains/pthales/demo/demo.jar # Jar files that will appear in a full JNLP Ptolemy II Runtime # ptolemy/domains/sdf/lib/vq/data/data.jar contains images for HTVQ demo FULL_ONLY_JNLP_JARS = \ $(CODEGEN_JARS) \ $(COPERNICUS_JARS) \ doc/design/design.jar \ doc/img/img.jar \ $(PTJACL_JARS) \ lbnl/lbnl.jar \ ptolemy/actor/gt/gt.jar \ ptolemy/actor/gt/demo/demo.jar \ ptolemy/actor/lib/io/comm/comm.jar \ ptolemy/actor/lib/io/comm/demo/demo.jar \ vendors/misc/rxtx/RXTXcomm.jar \ ptolemy/actor/lib/jai/jai.jar \ ptolemy/actor/lib/jai/demo/demo.jar \ ptolemy/actor/lib/jmf/jmf.jar \ ptolemy/actor/lib/jmf/demo/demo.jar \ ptolemy/actor/lib/joystick/joystick.jar \ vendors/misc/joystick/Joystick.jar \ ptolemy/actor/lib/jxta/jxta.jar \ $(FUZZY_JARS) \ ptolemy/actor/lib/x10/x10.jar \ ptolemy/actor/lib/x10/demo/demo.jar \ ptolemy/actor/ptalon/gt/gt.jar \ ptolemy/actor/ptalon/gt/demo/demo.jar \ vendors/misc/x10/tjx10p-13/lib/x10.jar \ lib/ptCal.jar \ lib/saxon8.jar \ lib/saxon8-dom.jar \ lib/java_cup.jar \ ptolemy/backtrack/backtrack.jar \ ptolemy/backtrack/demo/demo.jar \ ptolemy/caltrop/caltrop.jar \ ptolemy/caltrop/demo/demo.jar \ ptolemy/distributed/distributed.jar \ ptolemy/distributed/demo/demo.jar \ ptolemy/demo/demo.jar \ ptolemy/domains/experimentalDomains.jar \ ptolemy/domains/ci/demo/demo.jar \ ptolemy/domains/ci/doc/doc.jar \ ptolemy/domains/csp/demo/demo.jar \ ptolemy/domains/csp/doc/doc.jar \ ptolemy/domains/curriculum/curriculum.jar \ ptolemy/domains/dde/demo/demo.jar \ ptolemy/domains/dde/doc/doc.jar \ ptolemy/domains/dt/demo/demo.jar \ ptolemy/domains/dt/doc/doc.jar \ ptolemy/domains/giotto/demo/demo.jar \ ptolemy/domains/giotto/doc/doc.jar \ ptolemy/domains/gr/demo/demo.jar \ ptolemy/domains/gr/doc/doc.jar \ ptolemy/domains/gr/lib/quicktime/quicktime.jar \ ptolemy/domains/psdf/psdf.jar \ ptolemy/domains/psdf/demo/demo.jar \ ptolemy/domains/psdf/doc/doc.jar \ lib/mapss.jar \ ptolemy/domains/sdf/lib/vq/vq.jar \ ptolemy/domains/sdf/lib/vq/data/data.jar \ ptolemy/domains/tester/tester.jar \ ptolemy/domains/tm/demo/demo.jar \ ptolemy/domains/tm/doc/doc.jar \ ptolemy/verification/verification.jar \ ptolemy/verification/demo/demo.jar \ $(PTERA_JARS) \ $(PDFRENDERER_JARS) \ ptolemy/vergil/fsm/fmv/fmv.jar \ ptolemy/vergil/modal/fmv/fmv.jar \ ptolemy/vergil/gt/gt.jar \ ptolemy/vergil/tdl/tdl.jar \ $(FULL_8_1_JARS) \ $(PTDATABASE_JNLP_JARS) \ $(RUN_JARS) \ $(WIRELESS_JARS) FULL_MAIN_JAR = \ ptolemy/actor/gui/jnlp/FullApplication.jar FULL_JNLP_JARS = \ $(FULL_MAIN_JAR) \ $(CORE_JNLP_JARS) \ $(DOC_CODEDOC_JAR) \ $(DSP_ONLY_JNLP_JARS) \ $(PTINY_ONLY_JNLP_JARS) \ $(FULL_ONLY_JNLP_JARS) ####### # Space # # DOP Center Seating Chart exe # See http://embedded.eecs.berkeley.edu/dopcenter/roster/index.htm # To build dopseating.ex, run: # cd $PTII; # make install # make jnlp_all # # Install launch4j from http://launch4j.sourceforge.net/ # # set L4J_DIR above if you install Launch4j anywhere other than # # ptII/vendors/launch4j # make dopseating.exe # Jar files specific to the space domain SPACE_ONLY_JNLP_JARS = \ $(PTDATABASE_JNLP_JARS) SPACE_MAIN_JAR = \ ptolemy/actor/gui/jnlp/SpaceApplication.jar # Jar files used by the DOP Center Seating Chart exe SPACE_JNLP_JARS = \ $(SPACE_MAIN_JAR) \ $(SPACE_ONLY_JNLP_JARS) \ $(CORE_JNLP_JARS) \ $(DOC_CODEDOC_JAR) ####### # Viptos # # Jar files that will appear in a Viptos only JNLP Ptolemy II Runtime. # ct, fsm, de, sdf # FIXME: experimentalDomains.jar also includes wireless.jar # Jar files that are only used in JNLP VIPTOS_ONLY_JNLP_JARS = \ doc/codeDocViptos.jar \ ptolemy/domains/ptinyos/ptinyos.jar \ ptolemy/domains/ptinyos/demo/demo.jar \ ptolemy/domains/ptinyos/doc/doc.jar # doc/design/viptos.jar VIPTOS_MAIN_JAR = \ ptolemy/actor/gui/jnlp/ViptosApplication.jar VIPTOS_JNLP_JARS = \ $(VIPTOS_MAIN_JAR) \ $(CORE_JNLP_JARS) \ $(WIRELESS_JARS) \ $(PTINY_ONLY_JNLP_JARS) \ $(VIPTOS_ONLY_JNLP_JARS) ####### # VisualSense # # Jar files that will appear in a VisualSense only JNLP Ptolemy II Runtime. # ct, fsm, de, sdf # FIXME: experimentalDomains.jar also includes wireless.jar # Jar files that are only used in JNLP VISUAL_SENSE_ONLY_JNLP_JARS = \ doc/design/visualsense.jar \ doc/codeDocVisualSense.jar VISUAL_SENSE_MAIN_JAR = \ ptolemy/actor/gui/jnlp/VisualSenseApplication.jar # wireless/demo/Intersections/Intersections.xml uses Ptera VISUAL_SENSE_JNLP_JARS = \ $(VISUAL_SENSE_MAIN_JAR) \ $(CORE_JNLP_JARS) \ $(WIRELESS_JARS) \ $(PTERA_JARS) \ $(PTINY_ONLY_JNLP_JARS) \ $(VISUAL_SENSE_ONLY_JNLP_JARS) ######### # All the JNLP Jar files except the application jars, # hopefully without duplicates so that we don't sign jars twice. # We include plotapplication.jar so that the ptplot and histogram # commands will work. # Include ddf.jar because codegen needs it ALL_NON_APPLICATION_JNLP_JARS = \ $(NATIVE_SIGNED_LIB_JARS) \ $(CORE_JNLP_JARS) \ $(DOC_CODEDOC_JAR) \ $(FULL_ONLY_JNLP_JARS) \ $(HYBRID_SYSTEMS_ONLY_JNLP_JARS) \ $(HYBRID_SYSTEMS_DEMO_AND_DOC_JARS) \ $(SPACE_ONLY_JNLP_JARS) \ $(VIPTOS_ONLY_JNLP_JARS) \ $(VISUAL_SENSE_ONLY_JNLP_JARS) \ $(PTINY_ONLY_JNLP_JARS) \ $(DSP_ONLY_JNLP_JARS) \ $(CODEGEN_DOMAIN_JARS) \ ptolemy/domains/ddf/ddf.jar \ ptolemy/plot/plotapplication.jar # All the jar files, include the application jars ALL_JNLP_JARS = \ $(ALL_NON_APPLICATION_JNLP_JARS) \ $(DSP_MAIN_JAR) \ $(HYBRID_SYSTEMS_JNLP_JARS) \ $(PTINY_MAIN_JAR) \ $(PTINY_MAIN_JAR) \ $(PTINY_SANDBOX_MAIN_JAR) \ $(FULL_MAIN_JAR) \ $(SPACE_MAIN_JAR) # Makefile variables used to set up keys for jar signing. # To use Web Start, we have to sign the jars. KEYDNAME = "CN=Claudius Ptolemaus, OU=Your Project, O=Your University, L=Your Town, S=Your State, C=US " KEYSTORE = ptKeystore KEYALIAS = ptolemy # The password should not be stored in a makefile, for production # purposes, run something like: # # make KEYSTORE=/users/ptII/adm/certs/ptkeystore KEYALIAS=ptolemy STOREPASSWORD="-storepass xxx" KEYPASSWORD="-keypass xxx" jnlp_all # # Note that there is chaos with using full paths like # "/users/ptII/adm/certs/ptkeystore" # Cygwin and make think this file is c:/cygwin/users/ptII/adm/certs/ptkeystore # Java thinks it is c:/users/ptII/adm/certs/ptkeystore # Thus, you should copy the same file to both locations. # Then try viewing the keystore: # make key_list STOREPASSWORD="-storepass xxx" KEYSTORE=/users/ptII/adm/certs/ptkeystore # make key_list STOREPASSWORD="-storepass xxx" KEYSTORE=c:/cygwin/users/ptII/adm/certs/ptkeystore # STOREPASSWORD = -storepass this.is.the.storePassword,change.it KEYPASSWORD = -keypass this.is.the.keyPassword,change.it # The keytool binary is found by configure, it will be in $(PTJAVA_DIR)/bin/keytool # or $(PTJAVA_DIR)/Commands/keytool #KEYTOOL = $(PTJAVA_DIR)/bin/keytool # Script to update a *.jnlp file with the proper jar files MKJNLP = $(PTII)/bin/mkjnlp # JNLP files that do the actual installation JNLPS = vergilDSP.jnlp \ vergilHyVisual.jnlp \ vergilPtiny.jnlp \ vergilPtinySandbox.jnlp \ vergilVisualSense.jnlp \ vergilSpace.jnlp \ vergil.jnlp ############################## # "make jnlp_all" - Main entry point for building with a self-signed certificate # Create $PTII/ptKeystore, copy jar files to $PTII/signed # and create the .jnlp files # jnlp_all: $(KEYSTORE) $(SIGNED_LIB_JARS) jnlp_sign $(JNLPS) @echo "To run the jnlp file, run \"make jnlp_run\"" jnlps: $(SIGNED_LIB_JARS) $(JNLPS) jnlp_clean: rm -rf $(JNLPS) $(SIGNED_DIR) jnlp_distclean: jnlp_clean rm -f $(ALL_JNLP_JARS) # Rule to run the jnlp file PTJNLP = vergil.jnlp jnlp_run: "$(PTJAVA_HOME)/bin/javaws" -wait $(PTJNLP) $(SIGNED_DIR): if [ ! -d $(SIGNED_DIR) ]; then \ mkdir -p $(SIGNED_DIR); \ fi $(KEYSTORE): if [ ! -f "$(KEYSTORE)" ]; then \ "$(KEYTOOL)" -genkey \ -dname $(KEYDNAME) \ -keystore "$(KEYSTORE)" \ -alias "$(KEYALIAS)" \ $(STOREPASSWORD) \ $(KEYPASSWORD); \ "$(KEYTOOL)" -selfcert \ -keystore "$(KEYSTORE)" \ -alias "$(KEYALIAS)" \ $(STOREPASSWORD) \ $(KEYPASSWORD); \ "$(KEYTOOL)" -list \ -keystore "$(KEYSTORE)" \ $(STOREPASSWORD); \ fi # Web Start: DSP version of Vergil - No sources or build env. # In the sed statement, we use # instead of % as a delimiter in case # PTII_LOCALURL has spaces in it that get converted to %20 vergilDSP.jnlp: vergilDSP.jnlp.in $(SIGNED_DIR) $(KEYSTORE) sed -e 's#@PTII_LOCALURL@#$(PTII_LOCALURL)#' \ -e 's#@PTVERSION@#$(PTVERSION)#' \ vergilDSP.jnlp.in > $@ if [ ! -f $(SIGNED_DIR)/$(DSP_MAIN_JAR) ]; then \ echo "$(SIGNED_DIR)$(DSP_MAIN_JAR) does not"; \ echo " exist yet, but we need the size"; \ echo " so copy it now and sign it later"; \ mkdir -p $(SIGNED_DIR)/`dirname $(DSP_MAIN_JAR)`; \ cp -p $(DSP_MAIN_JAR) `dirname $(SIGNED_DIR)/$(DSP_MAIN_JAR)`;\ fi @echo "# Adding jar files to $@" -chmod a+x "$(MKJNLP)" "$(MKJNLP)" $@ \ $(NUMBER_OF_JARS_TO_LOAD_EAGERLY) \ $(SIGNED_DIR) \ $(DSP_MAIN_JAR) \ $(DSP_JNLP_JARS) @echo "# Updating JNLP-INF/APPLICATION.JNLP with $@" rm -rf JNLP-INF mkdir JNLP-INF cp $@ JNLP-INF/APPLICATION.JNLP @echo "# $(DSP_MAIN_JAR) contains the main class" "$(JAR)" -uf $(DSP_MAIN_JAR) JNLP-INF/APPLICATION.JNLP rm -rf JNLP-INF mkdir -p $(SIGNED_DIR)/`dirname $(DSP_MAIN_JAR)`; \ cp -p $(DSP_MAIN_JAR) `dirname $(SIGNED_DIR)/$(DSP_MAIN_JAR)`; \ "$(JARSIGNER)" \ -keystore "$(KEYSTORE)" \ $(STOREPASSWORD) \ $(KEYPASSWORD) \ "$(SIGNED_DIR)/$(DSP_MAIN_JAR)" "$(KEYALIAS)" # Web Start: HyVisual version of Vergil - No sources or build env. # In the sed statement, we use # instead of % as a delimiter in case # PTII_LOCALURL has spaces in it that get converted to %20 vergilHyVisual.jnlp: vergilHyVisual.jnlp.in $(SIGNED_DIR) $(KEYSTORE) sed -e 's#@PTII_LOCALURL@#$(PTII_LOCALURL)#' \ -e 's#@PTVERSION@#$(PTVERSION)#' \ vergilHyVisual.jnlp.in > $@ if [ ! -f $(SIGNED_DIR)/$(HYBRID_SYSTEMS_MAIN_JAR) ]; then \ echo "$(SIGNED_DIR)$(HYBRID_SYSTEMS_MAIN_JAR) does not"; \ echo " exist yet, but we need the size"; \ echo " so we copy it now and sign it later"; \ mkdir -p $(SIGNED_DIR)/`dirname $(HYBRID_SYSTEMS_MAIN_JAR)`; \ cp -p $(HYBRID_SYSTEMS_MAIN_JAR) \ `dirname $(SIGNED_DIR)/$(HYBRID_SYSTEMS_MAIN_JAR)`; \ fi @echo "# Adding jar files to $@" -chmod a+x "$(MKJNLP)" "$(MKJNLP)" $@ \ $(NUMBER_OF_JARS_TO_LOAD_EAGERLY) \ $(SIGNED_DIR) \ $(HYBRID_SYSTEMS_MAIN_JAR) \ $(HYBRID_SYSTEMS_JNLP_JARS) @echo "# Updating JNLP-INF/APPLICATION.JNLP with $@" rm -rf JNLP-INF mkdir JNLP-INF cp $@ JNLP-INF/APPLICATION.JNLP @echo "# $(HYBRID_SYSTEMS_MAIN_JAR) contains the main class" "$(JAR)" -uf $(HYBRID_SYSTEMS_MAIN_JAR) JNLP-INF/APPLICATION.JNLP rm -rf JNLP-INF mkdir -p $(SIGNED_DIR)/`dirname $(HYBRID_SYSTEMS_MAIN_JAR)`; \ cp -p $(HYBRID_SYSTEMS_MAIN_JAR) `dirname $(SIGNED_DIR)/$(HYBRID_SYSTEMS_MAIN_JAR)`; \ "$(JARSIGNER)" \ -keystore "$(KEYSTORE)" \ $(STOREPASSWORD) \ $(KEYPASSWORD) \ "$(SIGNED_DIR)/$(HYBRID_SYSTEMS_MAIN_JAR)" "$(KEYALIAS)" # Web Start: Ptiny version of Vergil - No sources or build env. vergilPtiny.jnlp: vergilPtiny.jnlp.in $(SIGNED_DIR) $(KEYSTORE) sed -e 's#@PTII_LOCALURL@#$(PTII_LOCALURL)#' \ -e 's#@PTVERSION@#$(PTVERSION)#' \ vergilPtiny.jnlp.in > $@ if [ ! -f $(SIGNED_DIR)/$(PTINY_MAIN_JAR) ]; then \ echo "$(SIGNED_DIR)$(PTINY_MAIN_JAR) does not"; \ echo " exist yet, but we need the size"; \ echo " so we copy it now and sign it later"; \ mkdir -p $(SIGNED_DIR)/`dirname $(PTINY_MAIN_JAR)`; \ cp -p $(PTINY_MAIN_JAR) `dirname $(SIGNED_DIR)/$(PTINY_MAIN_JAR)`; \ fi @echo "# Adding jar files to $@" -chmod a+x "$(MKJNLP)" "$(MKJNLP)" $@ \ $(NUMBER_OF_JARS_TO_LOAD_EAGERLY) \ $(SIGNED_DIR) \ $(PTINY_MAIN_JAR) \ $(PTINY_JNLP_JARS) @echo "# Updating JNLP-INF/APPLICATION.JNLP with $@" rm -rf JNLP-INF mkdir JNLP-INF cp $@ JNLP-INF/APPLICATION.JNLP @echo "# $(PTINY_MAIN_JAR) contains the main class" "$(JAR)" -uf $(PTINY_MAIN_JAR) JNLP-INF/APPLICATION.JNLP rm -rf JNLP-INF mkdir -p $(SIGNED_DIR)/`dirname $(PTINY_MAIN_JAR)`; \ cp -p $(PTINY_MAIN_JAR) `dirname $(SIGNED_DIR)/$(PTINY_MAIN_JAR)`; \ "$(JARSIGNER)" \ -keystore "$(KEYSTORE)" \ $(STOREPASSWORD) \ $(KEYPASSWORD) \ "$(SIGNED_DIR)/$(PTINY_MAIN_JAR)" "$(KEYALIAS)" # Web Start: Ptiny version of Vergil - No sources or build env., in a sandbox vergilPtinySandbox.jnlp: vergilPtinySandbox.jnlp.in $(SIGNED_DIR) $(KEYSTORE) sed -e 's#@PTII_LOCALURL@#$(PTII_LOCALURL)#' \ -e 's#@PTVERSION@#$(PTVERSION)#' \ vergilPtinySandbox.jnlp.in > $@ if [ ! -f $(SIGNED_DIR)/$(PTINY_SANDBOX_MAIN_JAR) ]; then \ echo "$(SIGNED_DIR)$(PTINY_SANDBOX_MAIN_JAR) does not"; \ echo " exist yet, but we need the size"; \ echo " so we copy it now and sign it later"; \ mkdir -p $(SIGNED_DIR)/`dirname $(PTINY_SANDBOX_MAIN_JAR)`; \ cp -p $(PTINY_SANDBOX_MAIN_JAR) `dirname $(SIGNED_DIR)/$(PTINY_SANDBOX_MAIN_JAR)`; \ fi @echo "# Adding jar files to $@" -chmod a+x "$(MKJNLP)" "$(MKJNLP)" $@ \ $(NUMBER_OF_JARS_TO_LOAD_EAGERLY) \ $(SIGNED_DIR) \ $(PTINY_SANDBOX_MAIN_JAR) \ $(PTINY_SANDBOX_JNLP_JARS) @echo "# Updating JNLP-INF/APPLICATION.JNLP with $@" rm -rf JNLP-INF mkdir JNLP-INF cp $@ JNLP-INF/APPLICATION.JNLP @echo "# $(PTINY_SANDBOX_MAIN_JAR) contains the main class" "$(JAR)" -uf $(PTINY_SANDBOX_MAIN_JAR) JNLP-INF/APPLICATION.JNLP rm -rf JNLP-INF mkdir -p $(SIGNED_DIR)/`dirname $(PTINY_SANDBOX_MAIN_JAR)`; \ cp -p $(PTINY_SANDBOX_MAIN_JAR) `dirname $(SIGNED_DIR)/$(PTINY_SANDBOX_MAIN_JAR)`; \ "$(JARSIGNER)" \ -keystore "$(KEYSTORE)" \ $(STOREPASSWORD) \ $(KEYPASSWORD) \ "$(SIGNED_DIR)/$(PTINY_SANDBOX_MAIN_JAR)" "$(KEYALIAS)" # Web Start: Space version of Vergil - No sources or build env. # In the sed statement, we use # instead of % as a delimiter in case # PTII_LOCALURL has spaces in it that get converted to %20 vergilSpace.jnlp: vergilSpace.jnlp.in $(SIGNED_DIR) $(KEYSTORE) sed -e 's#@PTII_LOCALURL@#$(PTII_LOCALURL)#' \ -e 's#@PTVERSION@#$(PTVERSION)#' \ vergilSpace.jnlp.in > $@ if [ ! -f $(SIGNED_DIR)/$(SPACE_MAIN_JAR) ]; then \ echo "$(SIGNED_DIR)$(SPACE_MAIN_JAR) does not"; \ echo " exist yet, but we need the size"; \ echo " so we copy it now and sign it later"; \ mkdir -p $(SIGNED_DIR)/`dirname $(SPACE_MAIN_JAR)`; \ cp -p $(SPACE_MAIN_JAR) \ `dirname $(SIGNED_DIR)/$(SPACE_MAIN_JAR)`; \ fi @echo "# Adding jar files to $@" -chmod a+x "$(MKJNLP)" "$(MKJNLP)" $@ \ $(NUMBER_OF_JARS_TO_LOAD_EAGERLY) \ $(SIGNED_DIR) \ $(SPACE_MAIN_JAR) \ $(SPACE_JNLP_JARS) @echo "# Updating JNLP-INF/APPLICATION.JNLP with $@" rm -rf JNLP-INF mkdir JNLP-INF cp $@ JNLP-INF/APPLICATION.JNLP @echo "# $(SPACE_MAIN_JAR) contains the main class" "$(JAR)" -uf $(SPACE_MAIN_JAR) JNLP-INF/APPLICATION.JNLP rm -rf JNLP-INF mkdir -p $(SIGNED_DIR)/`dirname $(SPACE_MAIN_JAR)`; \ cp -p $(SPACE_MAIN_JAR) `dirname $(SIGNED_DIR)/$(SPACE_MAIN_JAR)`; \ "$(JARSIGNER)" \ -keystore "$(KEYSTORE)" \ $(STOREPASSWORD) \ $(KEYPASSWORD) \ "$(SIGNED_DIR)/$(SPACE_MAIN_JAR)" "$(KEYALIAS)" # Web Start: VisualSense version of Vergil - No sources or build env. # In the sed statement, we use # instead of % as a delimiter in case # PTII_LOCALURL has spaces in it that get converted to %20 vergilVisualSense.jnlp: vergilVisualSense.jnlp.in $(SIGNED_DIR) $(KEYSTORE) sed -e 's#@PTII_LOCALURL@#$(PTII_LOCALURL)#' \ -e 's#@PTVERSION@#$(PTVERSION)#' \ vergilVisualSense.jnlp.in > $@ if [ ! -f $(SIGNED_DIR)/$(VISUAL_SENSE_MAIN_JAR) ]; then \ echo "$(SIGNED_DIR)$(VISUAL_SENSE_MAIN_JAR) does not"; \ echo " exist yet, but we need the size"; \ echo " so we copy it now and sign it later"; \ mkdir -p $(SIGNED_DIR)/`dirname $(VISUAL_SENSE_MAIN_JAR)`; \ cp -p $(VISUAL_SENSE_MAIN_JAR) \ `dirname $(SIGNED_DIR)/$(VISUAL_SENSE_MAIN_JAR)`; \ fi @echo "# Adding jar files to $@" -chmod a+x "$(MKJNLP)" "$(MKJNLP)" $@ \ $(NUMBER_OF_JARS_TO_LOAD_EAGERLY) \ $(SIGNED_DIR) \ $(VISUAL_SENSE_MAIN_JAR) \ $(VISUAL_SENSE_JNLP_JARS) @echo "# Updating JNLP-INF/APPLICATION.JNLP with $@" rm -rf JNLP-INF mkdir JNLP-INF cp $@ JNLP-INF/APPLICATION.JNLP @echo "# $(VISUAL_SENSE_MAIN_JAR) contains the main class" "$(JAR)" -uf $(VISUAL_SENSE_MAIN_JAR) JNLP-INF/APPLICATION.JNLP rm -rf JNLP-INF mkdir -p $(SIGNED_DIR)/`dirname $(VISUAL_SENSE_MAIN_JAR)`; \ cp -p $(VISUAL_SENSE_MAIN_JAR) `dirname $(SIGNED_DIR)/$(VISUAL_SENSE_MAIN_JAR)`; \ "$(JARSIGNER)" \ -keystore "$(KEYSTORE)" \ $(STOREPASSWORD) \ $(KEYPASSWORD) \ "$(SIGNED_DIR)/$(VISUAL_SENSE_MAIN_JAR)" "$(KEYALIAS)" # Web Start: Full Runtime version of Vergil - No sources or build env. vergil.jnlp: vergil.jnlp.in $(SIGNED_DIR) $(KEYSTORE) sed -e 's#@PTII_LOCALURL@#$(PTII_LOCALURL)#' \ -e 's#@PTVERSION@#$(PTVERSION)#' \ vergil.jnlp.in > $@ ls -l $@ if [ ! -f $(SIGNED_DIR)/$(FULL_MAIN_JAR) ]; then \ echo "$(SIGNED_DIR)$(FULL_MAIN_JAR) does not"; \ echo " exist yet, but we need the size"; \ echo " so we copy it now and sign it later"; \ mkdir -p $(SIGNED_DIR)/`dirname $(FULL_MAIN_JAR)`; \ cp -p $(FULL_MAIN_JAR) `dirname $(SIGNED_DIR)/$(FULL_MAIN_JAR)`;\ fi @echo "# Adding jar files to $@" -chmod a+x "$(MKJNLP)" ls -l $@ "$(MKJNLP)" $@ \ $(NUMBER_OF_JARS_TO_LOAD_EAGERLY) \ $(SIGNED_DIR) \ $(FULL_MAIN_JAR) \ $(FULL_JNLP_JARS) ls -l $@ @echo "# Updating JNLP-INF/APPLICATION.JNLP with $@" rm -rf JNLP-INF mkdir JNLP-INF cp $@ JNLP-INF/APPLICATION.JNLP @echo "# $(FULL_MAIN_JAR) contains the main class" "$(JAR)" -uf $(FULL_MAIN_JAR) JNLP-INF/APPLICATION.JNLP rm -rf JNLP-INF mkdir -p $(SIGNED_DIR)/`dirname $(FULL_MAIN_JAR)`; \ cp -p $(FULL_MAIN_JAR) `dirname $(SIGNED_DIR)/$(FULL_MAIN_JAR)`; \ ls -l $@ "$(JARSIGNER)" \ -keystore "$(KEYSTORE)" \ $(STOREPASSWORD) \ $(KEYPASSWORD) \ "$(SIGNED_DIR)/$(FULL_MAIN_JAR)" "$(KEYALIAS)" ls -l $@ # We first copy the jars, then sign them so as to avoid # problems with cvs and applets. jnlp_sign: jnlp_sign1 $(JNLPS) $(KEYSTORE) jnlp_sign1: $(SIGNED_DIR) $(NATIVE_SIGNED_LIB_JARS) set $(ALL_NON_APPLICATION_JNLP_JARS); \ for x do \ if [ ! -f $$x ]; then \ echo "Warning: $$x does not exist, skipping."; \ continue; \ fi; \ if [ ! -f $(SIGNED_DIR)/$$x ]; then \ echo "# Copying $$x to $(SIGNED_DIR)/"; \ mkdir -p $(SIGNED_DIR)/`dirname $$x`; \ cp -p $$x `dirname $(SIGNED_DIR)/$$x`; \ fi; \ echo "# Signing $(SIGNED_DIR)/$$x"; \ "$(JARSIGNER)" \ -keystore "$(KEYSTORE)" \ $(STOREPASSWORD) \ $(KEYPASSWORD) \ $(SIGNED_DIR)/$$x $(KEYALIAS); \ done; sign_jar: "$(JARSIGNER)" \ -keystore "$(KEYSTORE)" \ $(STOREPASSWORD) \ $(KEYPASSWORD) \ "$(JARFILE)" "$(KEYALIAS)" # The jnlp_test rule can be used to build, copy, and sign a jar file. # For example: # make jnlp_test JARSRC=ptolemy/actor/ptalon/ptalon.jar jnlp_test: (cd `dirname $(JARSRC)`; make `basename $(JARSRC)`) cp $(JARSRC) signed/$(JARSRC) $(MAKE) sign_jar JARFILE=signed/$(JARSRC) $(MAKE) jnlp_run JAR_DIST_DIR = jar_dist $(JAR_DIST_DIR): $(NATIVE_SIGNED_LIB_JARS) if [ ! -d $(JAR_DIST_DIR) ]; then \ mkdir -p $(JAR_DIST_DIR); \ fi set $(ALL_NON_APPLICATION_JNLP_JARS); \ for x do \ if [ ! -f $(JAR_DIST_DIR)/$$x ]; then \ echo "# Copying $$x to $(JAR_DIST_DIR)/"; \ mkdir -p $(JAR_DIST_DIR)/`dirname $$x`; \ cp -p $$x `dirname $(JAR_DIST_DIR)/$$x`; \ fi; \ done; # Jarfiles used by applet code generation CODEGEN_DOMAIN_JARS = \ ptolemy/domains/ci/ci.jar \ ptolemy/domains/continuous/continuous.jar \ ptolemy/domains/ct/ct.jar \ ptolemy/domains/ddf/ddf.jar \ ptolemy/domains/de/de.jar \ ptolemy/domains/fsm/fsm.jar \ ptolemy/domains/gr/gr.jar \ ptolemy/domains/hdf/hdf.jar \ ptolemy/domains/modal/modal.jar \ ptolemy/domains/pn/pn.jar \ ptolemy/domains/sdf/sdf.jar \ ptolemy/domains/sr/sr.jar \ ptolemy/domains/wireless/wireless.jar \ ptolemy/vergil/vergilApplet.jar UNJAR_JARS = \ ptolemy/actor/gui/jnlp/jnlp.jar \ $(CODEGEN_DOMAIN_JARS) \ $(ALL_NON_APPLICATION_JNLP_JARS) UNJAR_DIST_DIR = unjar_dist $(UNJAR_DIST_DIR): if [ ! -d $(UNJAR_DIST_DIR) ]; then \ mkdir -p $(UNJAR_DIST_DIR); \ mkdir -p $(UNJAR_DIST_DIR)/lib; \ mkdir -p $(UNJAR_DIST_DIR)/doc; \ fi mkdir -p $(UNJAR_DIST_DIR)/ptolemy/vergil cp ptolemy/vergil/vergilApplet.jar $(UNJAR_DIST_DIR)/ptolemy/vergil set $(UNJAR_JARS); \ for x do \ echo $$x; \ case "$$x" in \ lib/*) \ echo " Copying to lib"; \ cp $$x $(UNJAR_DIST_DIR)/lib;; \ doc/codeDoc*) \ echo " Copying to doc"; \ cp $$x $(UNJAR_DIST_DIR)/doc;; \ ptolemy/actor/gui/jnlp/jnlp.jar) \ echo " Copying jar to ptolemy/actor/gui/jnlp"; \ mkdir -p $(UNJAR_DIST_DIR)/ptolemy/actor/gui/jnlp; \ cp $$x $(UNJAR_DIST_DIR)/ptolemy/actor/gui/jnlp; \ (cd $(UNJAR_DIST_DIR); "$(JAR)" -xf ../$$x);; \ ptolemy/hsif/hsif.jar) \ echo " Copying jar to ptolemy/hsif"; \ mkdir -p $(UNJAR_DIST_DIR)/ptolemy/hsif; \ cp $$x $(UNJAR_DIST_DIR)/ptolemy/hsif; \ (cd $(UNJAR_DIST_DIR); "$(JAR)" -xf ../$$x);; \ ptolemy/hsif/demo/demo.jar) \ echo " Copying jar to ptolemy/hsif/demo"; \ mkdir -p $(UNJAR_DIST_DIR)/ptolemy/hsif/demo; \ cp $$x $(UNJAR_DIST_DIR)/ptolemy/hsif/demo; \ (cd $(UNJAR_DIST_DIR); "$(JAR)" -xf ../$$x);; \ ptolemy/ptsupport.jar) \ echo " Copying to ptolemy"; \ cp $$x $(UNJAR_DIST_DIR)/ptolemy;; \ ptolemy/domains/*/*.jar) \ echo "Copying to domains specific jars for cg "; \ mkdir -p $(UNJAR_DIST_DIR)/`dirname $$x`; \ cp $$x `dirname $(UNJAR_DIST_DIR)/$$x`; \ (cd $(UNJAR_DIST_DIR); "$(JAR)" -xf ../$$x);; \ *)(cd $(UNJAR_DIST_DIR); "$(JAR)" -xf ../$$x);; \ esac; \ done; # Remove jars lie pn/demo/demo.jar, but leave pn/pn.jar rm $(UNJAR_DIST_DIR)/ptolemy/domains/*/*/*.jar # Fix for quicktime.jar rm $(UNJAR_DIST_DIR)/ptolemy/domains/*/*/*/*.jar # Verify the jar files. This is useful for debugging if you are # getting errors about unsigned applications jnlp_verify: (cd signed; set $(ALL_JNLP_JARS); \ for x do \ echo "$$x"; \ "$(JARSIGNER)" -verify -verbose -certs $$x; \ done;) # Use this to verify that the key is ok key_list: "$(KEYTOOL)" -list -v \ -keystore "$(KEYSTORE)" \ $(STOREPASSWORD) # Update a location with the files necessary to download DIST_BASE = ptolemyII/ptII8.0/jnlp-$(PTVERSION) DIST_DIR = /export/home/pt0/ptweb/$(DIST_BASE) DIST_URL = http://ptolemy.eecs.berkeley.edu/$(DIST_BASE) OTHER_FILES_TO_BE_DISTED = doc/img/PtolemyIISmall.gif \ ptolemy/configs/hyvisual/hyvisualPlanet.gif \ KEYSTORE2=/users/ptII/adm/certs/ptkeystore KEYALIAS2=ptolemy # make jnlp_dist STOREPASSWORD="-storepass xxx" KEYPASSWORD="-keypass xxx" # make DIST_DIR=c:/cxh/hyv DIST_URL=file:///c:/cxh/hyv jnlp_dist KEYSTORE2=ptKeystore KEYALIAS2=claudius jnlp_dist: jnlp_dist_clean jnlp_dist_1 jnlp_dist_update jnlp_dist_clean: rm -rf $(JNLPS) $(SIGNED_DIR) jnlp_dist_1: $(MAKE) KEYSTORE="$(KEYSTORE2)" \ KEYALIAS="$(KEYALIAS2)" \ PTII_LOCALURL="$(DIST_URL)" jnlp_sign WEBSERVER=bennett jnlp_dist_update: tar -cf - $(SIGNED_DIR) $(JNLPS) \ $(OTHER_FILES_TO_BE_DISTED) | \ ssh $(WEBSERVER) "cd $(DIST_DIR); gtar -xvpf -" scp doc/webStartHelp.htm $(WEBSERVER):$(DIST_DIR) jnlp_dist_nightly: gmake STOREPASSWORD="-storepass `cat $(HOME)/.certpw`" KEYSTORE=/users/ptII/adm/certs/ptkeystore KEYPASSWORD="-keypass `cat $(HOME)/.certpw`" KEYSTORE2=/users/ptII/adm/certs/ptkeystore jnlp_dist # Used to update gr and codeDoc.jar DIST_JAR=/export/home/pt0/ptweb/ptolemyII/ptII8.0/$(PTVERSION) update_gr_codeDoc: scp ptolemy/domains/gr/gr.jar $(WEBSERVER):$(DIST_JAR)/ptolemy/domains/gr ssh $(WEBSERVER) "cd $(DIST_JAR)/doc; jar -xf ../../jnlp-$(PTVERSION)/signed/doc/codeDoc.jar" APPLET_FILES_TO_BE_UPDATED = \ $(CODEGEN_DOMAIN_JARS) \ ptolemy/vergil/vergilApplet.jar \ ptolemy/gui/demo/*.class update_applet_files: tar -cf - $(APPLET_FILES_TO_BE_UPDATED) | ssh $(WEBSERVER) "cd $(DIST_JAR); gtar -xvf -" ssh $(WEBSERVER) "cd $(DIST_JAR)/doc; jar -xf codeDoc.jar; mv doc/codeDoc .; rmdir doc" #make KEYALIAS=ptolemy STOREPASSWORD="-storepass xxx" KEYPASSWORD="-keypass xxx" KEYSTORE=ptkeystore PTII_LOCALURL=http://ptolemy.eecs.berkeley.edu/ptolemyII/ptII4.0/jnlp-4.0 jnlp_sign jnlp_dist_update_remote: scp doc/webStartHelp.htm $(WEBSERVER):$(DIST_DIR) tar -cf - $(SIGNED_DIR) $(JNLPS) \ $(OTHER_FILES_TO_BE_DISTED) | \ ssh $(WEBSERVER) "cd $(DIST_DIR); tar -xpf -" sign_jar_dist: "$(JARSIGNER)" \ -keystore "$(KEYSTORE2)" \ "$(JARFILE)" "$(KEYALIAS2)" sign_jar_dist_update_remote: sign_jar_dist scp $(JARFILE) $(WEBSERVER):$(DIST_DIR)/$(JARFILE) ################################################################ ################################################################ ################################################################ # Launch4j rules # We use Launch4j http://launch4j.sourceforge.net/ to create # .exe files that run Vergil etc. and then use # IzPack (http://www.izforge.com/izpack/) to set up the start menu. # mkl4j is a script that generates an xml file that is then read by Launch4j MKL4J = $(ROOT)/bin/mkl4j # Location of Launch4J, see http://launch4j.sourceforge.net/ #L4J_DIR=c:/Program Files/Launch4j L4J_DIR=$(PTII)/vendors/launch4j # Cygpath command #PTCYGPATH=cygpath --windows -a PTCYGPATH=$(ROOT)/bin/ptcygpath # Launch4J console application that reads in .xml files and creates .exe files. #L4JC=$(L4J_DIR)/launch4jc.exe L4JC=$(L4J_DIR)/launch4j # .exe files to be created by Launch4J L4J_DOC_EXES = designdocv1.exe designdocv2.exe designdocv3.exe \ hyvisualdoc.exe ptinydoc.exe visualsensedoc.exe L4J_PTOLEMY_EXES = hyvisual.exe ptiny.exe vergil.exe \ visualsense.exe L4J_PTPLOT_EXES = histogram.exe ptplot.exe L4J_EXES = $(L4J_DOC_EXES) $(L4J_PTOLEMY_EXES) $(L4J_PTPLOT_EXES) # .xml files used to create .exe files. # These files are created by $(MKL4J) L4J_CONFIGS = $(L4J_EXES:%.exe=%_l4j.xml) # Create all the .exe files exes: $(L4J_CONFIGS) $(L4J_EXES) # Remove the .exe files and the .xml files used to create the .exe files clean_exes: rm -f $(L4J_EXES) rm -f $(L4J_CONFIGS) DOC_JNLP_JARS = \ ptolemy/ptsupport.jar designdocv1_l4j.xml: $(MKL4J) designdocv1 ptolemy.actor.gui.BrowserLauncher \ doc/img/pdf.ico \ doc/design/ptIIdesign1-intro.pdf $(DOC_JNLP_JARS) > $@ chmod a+x doc/design/ptIIdesign1-intro.pdf designdocv1.exe: designdocv1_l4j.xml "$(L4JC)" `$(PTCYGPATH) designdocv1_l4j.xml` designdocv2_l4j.xml: $(MKL4J) designdocv2 ptolemy.actor.gui.BrowserLauncher \ doc/img/pdf.ico \ doc/design/ptIIdesign2-software.pdf $(DOC_JNLP_JARS) > $@ chmod a+x doc/design/ptIIdesign2-software.pdf designdocv2.exe: designdocv2_l4j.xml "$(L4JC)" `$(PTCYGPATH) designdocv2_l4j.xml` designdocv3_l4j.xml: $(MKL4J) designdocv3 ptolemy.actor.gui.BrowserLauncher \ doc/img/pdf.ico \ doc/design/ptIIdesign3-domains.pdf $(DOC_JNLP_JARS) > $@ chmod a+x doc/design/ptIIdesign3-domains.pdf designdocv3.exe: designdocv3_l4j.xml "$(L4JC)" `$(PTCYGPATH) designdocv3_l4j.xml` DOPCenterModel=ptolemy/domains/space/demo/DOPCenter/DOPCenter.xml dopseating_l4j.xml: $(MKL4J) dopseating ptolemy.vergil.VergilApplication \ doc/img/vergil.ico \ "-space $(DOPCenterModel)" $(SPACE_JNLP_JARS) > $@ dopseating.exe: dopseating_l4j.xml "$(L4JC)" `$(PTCYGPATH) dopseating_l4j.xml` histogram_l4j.xml: $(MKL4J) histogram ptolemy.plot.plotml.HistogramMLApplication \ doc/img/histogram.ico \ "" ptolemy/plot/plotapplication.jar > $@ histogram.exe: histogram_l4j.xml "$(L4JC)" `$(PTCYGPATH) histogram_l4j.xml` hyvisual_l4j.xml: $(MKL4J) hyvisual ptolemy.vergil.VergilApplication \ doc/img/hyvisual.ico \ -hyvisual $(HYBRID_SYSTEMS_JNLP_JARS) > $@> $@ hyvisual.exe: hyvisual_l4j.xml "$(L4JC)" `$(PTCYGPATH) $^` hyvisualdoc_l4j.xml: $(MKL4J) hyvisualdoc ptolemy.actor.gui.BrowserLauncher \ doc/img/pdf.ico \ doc/design/hyvisual.pdf $(DOC_JNLP_JARS) > $@ chmod a+x doc/design/hyvisual.pdf hyvisualdoc.exe: hyvisualdoc_l4j.xml "$(L4JC)" `$(PTCYGPATH) hyvisualdoc_l4j.xml` ptinydoc_l4j.xml: $(MKL4J) ptinydoc ptolemy.actor.gui.BrowserLauncher \ doc/img/pdf.ico \ doc/design/ptiny.pdf $(DOC_JNLP_JARS) > $@ chmod a+x doc/design/ptiny.pdf ptinydoc.exe: ptinydoc_l4j.xml "$(L4JC)" `$(PTCYGPATH) ptinydoc_l4j.xml` ptiny_l4j.xml: $(MKL4J) $(MKL4J) ptiny ptolemy.vergil.VergilApplication \ doc/img/ptiny.ico \ -ptiny $(PTINY_JNLP_JARS) > $@ ptiny.exe: ptiny_l4j.xml "$(L4JC)" `$(PTCYGPATH) ptiny_l4j.xml` ptplot_l4j.xml: $(MKL4J) ptplot ptolemy.plot.plotml.EditablePlotMLApplication \ doc/img/ptplot.ico \ "" ptolemy/plot/plotapplication.jar > $@ ptplot.exe: ptplot_l4j.xml "$(L4JC)" `$(PTCYGPATH) ptplot_l4j.xml` vergil_l4j.xml: $(MKL4J) vergil ptolemy.vergil.VergilApplication \ doc/img/vergil.ico \ "" $(FULL_JNLP_JARS) > $@ vergil.exe: vergil_l4j.xml "$(L4JC)" `$(PTCYGPATH) vergil_l4j.xml` viptos_l4j.xml: $(MKL4J) viptos ptolemy.vergil.VergilApplication \ doc/img/viptos.ico \ -viptos $(VIPTOS_JNLP_JARS) > $@ viptos.exe: viptos_l4j.xml "$(L4JC)" `$(PTCYGPATH) viptos_l4j.xml` visualsense_l4j.xml: $(MKL4J) visualsense ptolemy.vergil.VergilApplication \ doc/img/visualsense.ico \ -visualsense $(VISUAL_SENSE_JNLP_JARS) > $@ visualsense.exe: visualsense_l4j.xml "$(L4JC)" `$(PTCYGPATH) visualsense_l4j.xml` visualsensedoc_l4j.xml: $(MKL4J) visualsensedoc ptolemy.actor.gui.BrowserLauncher \ doc/img/pdf.ico $(DOC_JNLP_JARS) > $@ chmod a+x doc/design/visualsense.pdf visualsensedoc.exe: visualsensedoc_l4j.xml "$(L4JC)" `$(PTCYGPATH) visualsensedoc_l4j.xml` ################################################################ ################################################################ ################################################################ # We use IzPack (http://www.izforge.com/izpack/) to set up the start menu. # Used to build installers in adm/gen-X.Y # Echo the jar files in a format suitable for izpack. # Certain jar files from the doc/ directory are not echoed. # For example: make echo_jars JARS=PTINY_JNLP_JARS echo_jars: @echo $($(JARS)) | grep -v "(doc/codeDoc|doc/design/hyvisual.jar|doc/design/design.jar|doc/design/visualsense.jar)" | awk '{for(i=1;i<=NF;i++){ print " " } }' echo_plist_jars: @echo $($(JARS)) | grep -v "(doc/codeDoc|doc/design/hyvisual.jar|doc/design/design.jar|doc/design/visualsense.jar)" ################################################################ ################################################################ ################################################################ # Bootstrapping OSGi bundles MKOSGI=$(ROOT)/bin/mkosgi OSGI_TARGET_DIRECTORY=~/tmp/triq KORE_JARS = \ ptolemy/data/data.jar \ ptolemy/graph/graph.jar \ ptolemy/kernel/kernel.jar \ ptolemy/math/math.jar \ ptolemy/util/util.jar \ ACTOR_KORE_JARS = \ ptolemy/actor/actor.jar ACTOR_LIB_KORE_JARS = \ ptolemy/actor/lib/libKore.jar ACTOR_LIB_GUI_KORE_JARS = \ ptolemy/actor/lib/gui/gui.jar MOML_JARS = \ ptolemy/moml/moml.jar # Microstar is used by moml and ptplot, but ptplot does not use moml MICROSTAR_JARS = \ com/microstar/xml/xml.jar # Simple MoML App with no gui OSGI_PTOLEMY_JARS = \ $(KORE_JARS) \ $(ACTOR_KORE_JARS) \ $(ACTOR_LIB_KORE_JARS) \ $(MOML_JARS) \ $(MICROSTAR_JARS) OSGI_SR_TEST_JARS = \ $(OSGI_PTOLEMY_JARS) \ ptolemy/domains/sr/sr.jar osgi_sr_test: rm -rf $(OSGI_TARGET_DIRECTORY)/* $(MKOSGI) $(PTII) $(OSGI_TARGET_DIRECTORY) ptolemy.sr.example $(OSGI_SR_TEST_JARS) OSGI_CT_TEST_JARS = \ $(OSGI_PTOLEMY_JARS) \ ptolemy/domains/ct/ct.jar \ ptolemy/domains/fsm/fsm.jar osgi_ct_test: rm -rf $(OSGI_TARGET_DIRECTORY)/* $(MKOSGI) $(PTII) $(OSGI_TARGET_DIRECTORY) ptolemy.ct.example $(OSGI_CT_TEST_JARS) OSGI_ACTOR_GUI_JARS = \ ptolemy/actor/gui/gui.jar OSGI_ACTOR_LIB_GUI_JARS = \ ptolemy/actor/lib/gui/gui.jar \ ptolemy/actor/lib/image/image.jar \ ptolemy/actor/lib/javasound/javasound.jar \ ptolemy/domains/sdf/lib/vq/vq.jar \ ptolemy/media/media.jar OSGI_GUI_JARS = \ ptolemy/gui/gui.jar OSGI_PLOT_JARS = \ ptolemy/plot/plot.jar OSGI_PTINY_DOMAINS_JARS = \ ptolemy/domains/domains.jar \ ptolemy/domains/demo.jar OSGI_VERGIL_JARS = \ diva/diva.jar \ ptolemy/vergil/vergil.jar OSGI_PTINY_JARS = \ $(OSGI_ACTOR_GUI_JARS) \ ptolemy/configs/configs.jar \ ptolemy/doc/docConfig.jar \ $(OSGI_ACTOR_LIB_GUI_JARS) \ $(OSGI_GUI_JARS) \ $(OSGI_PLOT_JARS) \ $(OSGI_PTOLEMY_JARS) \ $(OSGI_PTINY_DOMAINS_JARS) \ $(OSGI_VERGIL_JARS) \ $(PTINY_ONLY_JNLP_JARS) \ ptolemy/actor/lib/jni/jni.jar osgi_ptiny_test: rm -rf $(OSGI_TARGET_DIRECTORY)/* $(MKOSGI) $(PTII) $(OSGI_TARGET_DIRECTORY) ptolemy.ptiny $(OSGI_PTINY_JARS) osgi_gui_test: rm -rf $(OSGI_TARGET_DIRECTORY)/* $(MKOSGI) $(PTII) $(OSGI_TARGET_DIRECTORY) ptolemy.guiKore \ diva/diva.jar \ ptolemy/actor/actor.jar \ ptolemy/actor/gui.jar \ ptolemy/data/data.jar \ ptolemy/gui/gui.jar \ ptolemy/kernel/kernel.jar \ ptolemy/plot/plot.jar osgi_image_test: rm -rf $(OSGI_TARGET_DIRECTORY)/* $(MKOSGI) $(PTII) $(OSGI_TARGET_DIRECTORY) ptolemy.actorImageKore \ ptolemy/actor/gui/gui.jar \ ptolemy/actor/lib/lib.jar \ ptolemy/data/data.jar \ ptolemy/gui/gui.jar \ ptolemy/kernel/kernel.jar \ ptolemy/media/media.jar \ ptolemy/moml/moml.jar \ ptolemy/actor/lib/image/image.jar osgi_colt_test: rm -rf $(OSGI_TARGET_DIRECTORY)/* $(MKOSGI) $(PTII) $(OSGI_TARGET_DIRECTORY) ptolemy.actorLibColtKore \ com/microstar/xml/xml.jar \ ptolemy/actor/actor.jar \ ptolemy/actor/lib/colt/colt.jar \ ptolemy/actor/lib/libKore.jar \ ptolemy/data/data.jar \ ptolemy/graph/graph.jar \ ptolemy/kernel/kernel.jar \ ptolemy/math/math.jar \ ptolemy/moml/moml.jar \ ptolemy/util/util.jar osgi_codegen_test: rm -rf $(OSGI_TARGET_DIRECTORY)/* $(MKOSGI) $(PTII) $(OSGI_TARGET_DIRECTORY) ptolemy.codgenKore \ com/microstar/xml/xml.jar \ ptolemy/actor/actor.jar \ ptolemy/actor/gui/gui.jar \ ptolemy/actor/lib/colt/colt.jar \ ptolemy/actor/lib/gui/gui.jar \ ptolemy/actor/lib/libKore.jar \ ptolemy/actor/lib/javasound/javasound.jar \ ptolemy/actor/lib/jni/jni.jar \ ptolemy/data/data.jar \ ptolemy/domains/ct/ct.jar \ ptolemy/domains/hdf/hdf.jar \ ptolemy/domains/fsm/fsm.jar \ ptolemy/domains/pn/pn.jar \ ptolemy/domains/sdf/sdf.jar \ ptolemy/graph/graph.jar \ ptolemy/gui/gui.jar \ ptolemy/kernel/kernel.jar \ ptolemy/math/math.jar \ ptolemy/media/media.jar \ ptolemy/moml/moml.jar \ ptolemy/plot/plot.jar \ ptolemy/util/util.jar \ ptolemy/codegen/codegen.jar \ osgi_demo_test: rm -rf $(OSGI_TARGET_DIRECTORY)/* $(MKOSGI) $(PTII) $(OSGI_TARGET_DIRECTORY) ptolemy.domains.demo \ com/microstar/xml/xml.jar \ ptolemy/actor/actor.jar \ ptolemy/actor/lib/colt/colt.jar \ ptolemy/actor/lib/libKore.jar \ ptolemy/data/data.jar \ ptolemy/graph/graph.jar \ ptolemy/kernel/kernel.jar \ ptolemy/math/math.jar \ ptolemy/moml/moml.jar \ ptolemy/util/util.jar \ ptolemy/domains/demo/demo.jar \ ptolemy/domains/domains.jar ################################################################################ # Rules used to to create jnlp files for doc/books # # To build the complete set of signed jars, you will need access to # our key, which is in /users/ptII/adm/certs/ptkeystore on $(WEBSERVER) # 1. To build all the jars and copy them to the webserver: # cd $PTII # rm -rf signed # make KEYSTORE=/users/ptII/adm/certs/ptkeystore KEYALIAS=ptolemy STOREPASSWORD="-storepass xxxxxx" KEYPASSWORD="-keypass xxxxxx" DIST_BASE=ptolemyII/ptII8.0/jnlp-books jnlp_dist # This will create /export/home/pt0/ptweb/ptolemyII/ptII8.0/jnlp-books # # 2. Set up ptII/ptKeystore.properties to contain the path to the keystore, # the passwords and the alias. This file is used by copernicus to create signed jars. # # 3. Clean up any previous work for a model # make book_real_clean JNLP_MODEL=ExtendedFSM # # 4. To create a JNLP file for one model and upload it # make JNLP_MODEL=ExtendedFSM JNLP_MODEL_DIRECTORY=doc/books/design/modal KEYSTORE=/users/ptII/adm/certs/ptkeystore KEYALIAS=ptolemy STOREPASSWORD="-storepass xxxxxx" KEYPASSWORD="-keypass xxxxx" DIST_BASE=ptolemyII/ptII8.0/jnlp-books book_dist_update # # 5. To create JNLP files for all the models listed in the $(EXAMPLE_MODELS) makefile variable: # cd $PTII/doc/books/design/modal # make JNLP_MODEL=ExtendedFSM JNLP_MODEL_DIRECTORY=doc/books/design/modal KEYSTORE=/users/ptII/adm/certs/ptkeystore KEYALIAS=ptolemy STOREPASSWORD="-storepass xxxxxx" KEYPASSWORD="-keypass xxxxx" DIST_BASE=ptolemyII/ptII8.0/jnlp-books jnlps # The name of the model, without the .xml extension. JNLP_MODEL = CapriciousThermostat # The path, relative from ptII that contains the model. #JNLP_MODEL_DIRECTORY = doc/books/design/modal JNLP_MODEL_DIRECTORY = doc/books/embedded/concurrent/ ################################################################### # For jnlp files, you should not need to modify anything below here ################################################################### # The .xml file that contains the model, relative to $PTII. JNLP_MODEL_FILE = $(JNLP_MODEL_DIRECTORY)/$(JNLP_MODEL).xml # The .jnlp file that is produced by $PTII/bin/copernicus. JNLP_FILE = $(JNLP_MODEL_DIRECTORY)/$(JNLP_MODEL).jnlp # The main .htm file that is produced by $PTII/bin/copernicus JNLP_HTM = $(JNLP_MODEL_DIRECTORY)/$(JNLP_MODEL).htm # The main .htm file that is produced by $PTII/bin/copernicus JNLP_VERGIL_HTM = $(JNLP_MODEL_DIRECTORY)/$(JNLP_MODEL)Vergil.htm # A fixed version of the .jnlp file that has the URL updated. JNLP_FILE_FIXED = $(JNLP_FILE).fixed # The signed jar file to be created that contains a copy of the .jnlp file JNLP_JAR = $(JNLP_MODEL_DIRECTORY)/signed_$(JNLP_MODEL).jar # Create the .jnlp file by running copernicus on the .xml file that contains the model. $(JNLP_FILE): $(JNLP_MODEL_FILE) (cd $(JNLP_MODEL_DIRECTORY); $(PTII)/bin/copernicus -codeGenerator applet -run false -targetPath $(JNLP_MODEL_DIRECTORY) $(JNLP_MODEL).xml) # Shortcut to create the jnlp file. Try "make book" book: $(JNLP_FILE_FIXED) book_clean: rm -f $(JNLP_FILE_FIXED) book_real_clean: rm -f $(JNLP_FILE_FIXED) $(JNLP_FILE) # Fix the jnlp file by substituting in the proper URL $(JNLP_FILE_FIXED): $(JNLP_FILE) # Fix the JNLP File sed -e "s@ $(JNLP_FILE_FIXED) -diff $(JNLP_FILE) $(JNLP_FILE_FIXED) # Updating the jar file with the fixed JNLP file rm -rf tmpjar mkdir tmpjar (cd tmpjar; \ "$(JAR)" -xvf ../$(JNLP_JAR); \ rm -rf JNLP-INF META-INF; \ mkdir JNLP-INF; \ cp ../$@ JNLP-INF/APPLICATION.JNLP; \ "$(JAR)" -cvf ../$(JNLP_JAR) .) rm -rf tmpjar # Signing the jar file "$(JARSIGNER)" \ -keystore "$(KEYSTORE)" \ $(STOREPASSWORD) \ $(KEYPASSWORD) \ $(JNLP_JAR) "$(KEYALIAS)" "$(JARSIGNER)" -verify -verbose -certs $(JNLP_JAR) # We have two sets (!) of jar files: unsigned for applets and signed for JNLP Web Start # # Set #1: Update applet jar files book_dist_applet_update: $(JNLP_FILE_FIXED) APPLET_JARS=`grep jar $(JNLP_FILE_FIXED) | awk -F \" '{print $$2}' | grep -v signed_ | sed 's@signed/@@'`; \ tar -cf - $$APPLET_JARS | \ ssh $(WEBSERVER) "cd $(DIST_DIR); gtar -xvpf -" # Set #2: Update jnlp jar files. Usually don't need to run this as make ... jnlp_dist will do it. book_dist_jnlp_update: $(JNLP_FILE_FIXED) JNLP_JARS=`grep jar $(JNLP_FILE_FIXED) | awk -F \" '{print $$2}' | grep -v signed_`; \ tar -cf - $$JNLP_JARS | \ ssh $(WEBSERVER) "cd $(DIST_DIR); gtar -xvpf -" # Update the website. # Files to be updated, including the .htm files JNLP_FILES_TO_BE_UPDATED = $(JNLP_MODEL_FILE) $(JNLP_JAR) $(JNLP_FILE_FIXED) $(JNLP_HTM) $(JNLP_VERGIL_HTM) doc/deployJava.js doc/deployJava.txt # Files to be updated, not including the .htm files #JNLP_FILES_TO_BE_UPDATED = $(JNLP_MODEL_FILE) $(JNLP_JAR) $(JNLP_FILE_FIXED) doc/deployJava.js doc/deployJava.txt book_dist_update: $(JNLP_FILE_FIXED) pwd tar -cf - $(JNLP_FILES_TO_BE_UPDATED) | \ ssh $(WEBSERVER) "cd $(DIST_DIR); gtar -xvpf -" ssh $(WEBSERVER) "cd $(DIST_DIR); mv $(JNLP_FILE_FIXED) $(JNLP_FILE)" ssh $(WEBSERVER) "chmod a+x $(DIST_DIR)/$(JNLP_HTM) $(DIST_DIR)/$(JNLP_VERGIL_HTM)"