-------------------------------------------- muCommander compilation instructions -------------------------------------------- 1. Configuration The first step to compiling muCommander is making sure all the proper libraries and tools are installed. Pre-requesites are: - JDK 1.6 or greater Event though muCommander runs on Java 1.4 or later, it takes advantage of the 1.6 API and needs it in order to compile. This can be retrieved from http://java.sun.com/ - Ant 1.6.5 or greater This can be retrieved from http://ant.apache.org/ Optional tools are: - FindBugs 1.3.1 or greater. This is used to generate bytecode analysis reports. It can be retrieved from http://findbugs.sourceforge.net/ - NSIS 2.20 or greater This is used to generate Win32 setup files. It can be retrieved from http://nsis.sourceforge.net/ - Launch4J 3.0.0 or greater This is used to generate Win32 executable files. It can be retrieved from http://launch4j.sourceforge.net/ - p7zip 4.43 or greater This is used to compress JAR files further than the Sun tools can. It can be retrieved from http://p7zip.sourceforge.net/ Once these tools have been installed, you might want / need to configure the muCommander build process. This is done by copying ./build/local_template.xml to ./local.xml and editing it. The values that need to be set are: - java.lib (defaults to a system-dependant best guess) Path to the Java 1.6's classes JAR. This is usually found in /path/to/jre/lib/rt.jar Apple, however, decided to use non-standard paths for reasons of their own. Under Mac OS X, you'll find the classes JAR file in: /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/classes.jar - jsse.lib (defaults to a system-dependant best guess) Path to the JSSE JAR file. This is usually found in /path/to/jre/lib/jsse.jar Apple, however, decided to use non-standard paths for reasons of their own. Under Mac OS X, you'll find the classes JAR file in: /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/jsse.jar - ant.lib (defaults to /path/to/ant/lib/ant.jar) Path to the Ant JAR file. This is necessary in order to compile the various Ant tasks used by muCommander. This value only needs to be set if the Ant JAR file is not in its standard location. - proguard.lib (defaults to ./tools/proguard.jar) Path to the ProGuard JAR file. The one used by muCommander can be found in ./tools/proguard.jar, but you can modify that if you wish to try out other versions. - antcontrib.lib (defaults to ./tools/ant-contrib.jar) Path to the Ant Contrib JAR file. The one used by muCommander can be found in ./tools/ant-contrib.jar, but you can modify that if you wish to try out other versions. - doccheck.lib (defaults to ./tools/doccheck.jar) Path to the Doccheck JAR file. The one used by muCommander can be found in ./tools/doccheck.jar, but you can modify that if you wish to try out other versions. - 7za.executable (non-required) Path to the 7za executable. This is used to compress muCommander's JAR file better than Java's ZIP implementation. If this property is not set, standard ZIP compression will be used. - antdoclet.lib (defaults to ./tools/antdoclet.jar) Path to the AntDoclet JAR file. This is used to generate the Ant tools documentation. The one used by muCommander can be found in ./tools/antdoclet.jar, but you can modify that if you wish to try out other versions. - velocity.lib (defaults to ./tools/velocity.jar) Path to the Velocity JAR file. This is used to generate the Ant tools documentation. The one used by muCommander can be found in ./tools/velocity.jar, but you can modify that if you wish to try out other versions. - store.path (non-required) Password of the keystore file used to generate a signed muCommander JAR file. If this property is not set, you won't be able to generate signed JAR files. If you're not Maxence, you can safely ignore this property. - jdeb.lib (defaults to ./tools/jdeb.jar) Path to the JDeb JAR file. This is used to generate the muCommander Debian package. The one used by muCommander can be found in ./tools/jdeb.jar, but you can modify that if you wish to try out other versions. - nsis.executable (non-required) Path to the NSIS executable. This is used to generate a muCommander Win32 native setup. If this property is not set, you won't be able to generate Win32 setups. - launch4j.dir (non-required) Path to the Launch4J installation directory. This is used to generate a muCommander Win32 executable. If this property is not set, you won't be able to generate Win32 or portable releases. - case-sensitive-fs (defaults to false) Whether the file system is case sensitive. Case sensitive systems allow ProGuard to perform slightly more agressive obfuscation of the bytecode. If unsure, leave this value to false. - findbugs.home (non-required). Path to the FindBugs installation directory. Thi sis used to generate bytecode analysis reports. If this property is not set, bytecode analysis reports won't be generated. - simian.lib (Defaults to ./tools/simian.jar) Path to the Simian JAR file. The one used by muCommander can be found in ./tools/simian.jar, but you can modify that if you wish to try out other versions. - javancss.lib (Defaults to ./tools/javancss.jar) Path to the JavaNCSS JAR file. The one used by muCommander can be found in ./tools/javancss.jar, but you can modify that if you wish to try out other versions. Some external tools need additional configuration to work properly: - JUnit To ensure that unit testing can be performed, the ./lib/noinclude/junit.jar file must be copied to $ANT_HOME/lib. If this isn't done, unit testing will most likely be skipped. - JDepend To ensure that dependency analysis can be performed, the ./tools/jdepend.jar file must be copied to $ANT_HOME/lib. If this isn't done, dependency analysis will most likely be skipped. 2. Compiling muCommander There are various ways of compiling muCommander. The most immediately useful are: - ant This will compile all the modified Java files and run the resulting application. - ant jar This will compile all the modified Java files and store the binaries in ./dist/mucommander_unobf.jar. This jar file is meant for debug, and running it will output a fair amount of tracing information. - ant obfuscate This will compile and obfuscate all the Java files and store the binaries in ./dist/mucommander_obf.jar. - ant compress This is identical to ant obfuscate, but will use 7za if it's available to produce an even slimmer version of the JAR file in ./dist/mucommander.jar. This JAR file is the one we use for release. - ant clean Deletes all temporary files. - ant compile Compiles all the modified Java files and stores the output in ./tmp/compile/classes - ant source Packages the sources and stores them in ./dist/mucommander--src.tar.gz - ant deb Generates a Debian package in ./dist/mucommander__all.deb - ant exe Generates a Win32 executable version of muCommander in ./dist/muCommander.exe. - ant portable Generates the portable version of muCommander in ./dist/mucommander--portable.tar.gz. The portable version is meant for 'roaming' usage, typically from a USB key. - ant setup-exe Generates a Win32 executable setup in ./dist/mucommander-setup.exe - ant tgz Generates a Unix release file and stores it in ./dist/mucommander.tar.gz - ant jnlp Generates a Webstart description file in ./dist/mucommander.jnlp - ant sign Generates a signed JAR file in ./dist/mucommander_signed.jar - ant app Generates a Mac OS X application bundle in ./dist/muCommander.app. Note that the application will only work if ran on an OS that has a chmod command. - ant nightly Generates all know distribution files in 'nightly' mode. Nightly builds will have slightly different names. - ant release Generates all known release files. - ant reports Generates reports about various aspects of muCommander.