# Makefile template # # for using WABA and SUPERWABA on Linux systems # # Doug Lawson (dlawson@cablespeed.com) # Modified for use with KDevelop by Ian Reinhart Geiser # Copyright (c) Doug Lawson 2003 # developed for classes I teach. # # may be distributed under GPL # (http://www.gnu.org/licenses/gpl.html) # or any other license that allows it to be freely used. # # please let me know about any improvements you make VERSION = %{VERSION} # What are we building? We put the names here at the # top to make it easy to change MAINCLASSNAME = %{APPNAME} # ExtraClassList will be blank if the app consists of # only one class EXTRACLASSLIST = # Is there an icon for this program? If there # is, create an icon argument for exegen # # Exegen will automatically look for icons # so this may not be needed. Run # java Exegen /? # for help on Exegen # # If you use this line, make sure to un-comment it! # # ICONFLAG = /I Icon # Like ICONFLAG, height and width may be specified, or # you may accept the default. On PalmOS, the app will run # full-screen by default, which is usually what you want. # # If you want the same look on PalmOS as on # Windows CE, you should specify height and width # # run # java Exegen /? # for more information, or see the docs. # # HEIGHT = /h 160 # WIDTH = /w 160 # CAB Options # The /Z parameter is used to create eight cab files so your application can # easily be installed in all compatible Windows CE platforms. You may pass, # optionally, a .swz file with some global and local libraries used by your # app. For example, if you need to install the TinyLarge.pdb font and also a # custom database, E.g. mydata.pdb, you must copy all files to the current # directory, then create a myapp.swz file with the following contents: # # [G]TinyLarge.pdb # [L]mydata.pdb # # The [G] denotes a global library (fonts are always global libraries), and the # [L] denotes a local library. # The user will then have two options to start the installation process: # 1. Run the created xxx_install.bat file, or # 2. If the cab files are available in the internet, the user may launch the # browser from inside the device, connect to the site and choose the appropriate # cab file. The browser will then download and install the file. # The /Z parameter works on in the Windows platform. SWZFILE = CABFLAGS = /Z $(SWZFILE) # ------------------------------------------------------ # Most of the stuff below this line will not change # very often. If you change Java SDKs or re-install # waba or superwaba, you may need to change it. # first, the locations of the various java components. # On a *NIX system, they will usually be in something # like the directories listed here. # The flags and arguments here have been developed for use with # the SUN jdk v1.3. Read your java documentation carefully, # don't just blindly assume that what I have here will work # with your setup. JAVADIR = %{JAVADIR} JAVABINDIR = $(JAVADIR)/bin JAVAC = $(JAVABINDIR)/javac JAR = $(JAVABINDIR)/jar # Java Compiler flags and arguments. For these makefiles, # it is easiest if we include the CLASSPATH in the command # line. JCFLAGS = -classpath $(CLASSPATH) JAVA = $(JAVABINDIR)/java JAVAFLAGS = -classpath $(CLASSPATH) APPLETVIEWER = $(JAVABINDIR)/appletviewer AVFLAGS = -J-classpath -J$(CLASSPATH) # next, where are all the WABA bits and pieces? WABADIR = %{WABADIR} WABABINDIR = $(WABADIR)/superwaba/bin WABAEXTRADIR = $(WABADIR)/superwaba ################################################################################ # You should not have to change anything below this line. ################################################################################ # the classpath will have to tell java where to find the waba stuff. # # the CLASSPATH here is set to let java tqfind # - the classes it needs to produce the executable class files # - the waba.applet class, Warp.class, and Exegen.class # # This strategy works so far, but it may (conceivably) produce a # conflict at some point. Be warned. You may want to use a CLASSPATH # that leaves out waba.applet, Warp and/or Exegen. # CLASSPATH = $(WABADIR):$(WABAEXTRADIR):$(WABAEXTRADIR)/classes:$(WABABINDIR):. # exegen and warp # # exegen is the EXEcutable GENerator. It takes the # main waba/java class (which usually extends MainWindow) # and makes it into a program that will automagically run # itself under waba or superwaba on a PalmOS gadget. # # Since the palm program has a .prc extension, it is called # PRCFILE here. # # Exegen also creates a .exe file for Window CE # # warp is the Waba Application Resource Packager. # It bundles the classes and other resources into # a single PALM database file (which is also used # by the Win CE executable). This file has a .pdb # extension. In this makefile it is called PDBFILE # # The standard waba SDK has only the MS-Windows *.exe files. # for exegen and warp # # Although there are exegen and warp native binaries for Linux, # they don't seem to work very well. The solution has been to # write those programs in Java. # # for waba, use the java apps # from http://www.wn.com.au/rnielsen/wextras/ # (Rob Nielsen). Getting all the paths to fall into the right # place takes a little tuning, though (which is why this makefile # is here, I suppose) # # For superwaba, the same programs are included in the # distribution EXEGEN = $(JAVA) $(JAVAFLAGS) Exegen EXEGENFLAGS = $(HEIGHT) $(WIDTH) $(ICONFLAG) /L /V $(VERSION) $(CABFLAGS) WARP = $(JAVA) $(JAVAFLAGS) Warp WARPFLAGS = c MAINCLASS = $(MAINCLASSNAME).class EXTRACLASSES = $(EXTRACLASSLIST) WEBPAGE = $(MAINCLASSNAME).html PRCBASENAME = $(MAINCLASSNAME) PDBBASENAME = $(MAINCLASSNAME) PDBFILE = $(PDBBASENAME).pdb PRCFILE = $(PRCBASENAME).prc all: $(PDBFILE) $(PRCFILE) $(PRCFILE): $(PDBFILE) $(EXEGEN) $(EXEGENFLAGS) $(PRCBASENAME) $(MAINCLASSNAME) $(PDBBASENAME) # you may want to change this one so that Warp only handles # the classes you tell it to (instead of using the wildcard '*.class') # Use the second pair of lines below, which are commented out. # # Note that there is a potential problem if your program generates # inner classes (which have names like # 'ClockPanel$SettingsWindow.class'. # If that is the case, the wildcard *.class filespec is guaranteed to # include them in the make dependency. $(PDBFILE): $(MAINCLASS) $(EXTRACLASSES) $(WARP) $(WARPFLAGS) $(PDBBASENAME) *.class # $(PDBFILE): $(MAINCLASS) $(EXTRACLASSES) # $(WARP) $(WARPFLAGS) $(PDBBASENAME) $(MAINCLASS) $(EXTRACLASSES) # Below, we just tell make how to create foo.class if it can tqfind # foo.java %.class: %.java $(JAVAC) $(JCFLAGS) $< # note that the 'test' target DOES NOT INCLUDE A DEPENDENCY # for the java classes. This way, you can keep doing tests of the old # class while you rewrite the source (foo.java). test: echo "running this test does not rebuild any of the targets" ;\ $(JAVA) $(JAVAFLAGS) waba.applet.Applet $(MAINCLASSNAME) # Since I haven't (yet) got the code written to generate the # web page, target 'applettest' is commented out. If you want # to create the web page by hand and test it, be my guest. # applettest: $(WEBPAGE) # $(APPLETVIEWER) $(AVFLAGS) $(webpage) clean: rm -f *.class *.pdb *.prc *.lnk jar: $(MAINCLASS) $(EXTRACLASSES) $(JAR) -cvfm $(MAINCLASSNAME).jar $(MAINCLASSNAME).mft $(MAINCLASS) $(EXTRACLASSES)