Notes on attempts to compile AppleCommander natively... ultimately should be directions! Issues: 1) Need SWT code and need to compile it for all interested platforms. 2) Unable to handle graphics (images) in native mode. Need to patch code in compile process for this. ********************* ** LINUX ** ********************* com.webcodepro.applecommander.storage: ===================================== These are generated in when trying to compile test and storage package. The JAR file must be valid (used by GCJ itself) and the classpath cannot use any shortcuts (like "~" in Linux). Commands: gcj --classpath=AppleCommander-1.1.1b.jar -c *.java gcj -shared -o storage.so *.o Note that graphics will be an issue. GraphicsFileFilter needed to be patched to be (essentially) useless. The SUN JPEGCodec is not available, nor is the ImageIO library. GCJ uses something less than JDK 1.4, presumably as the supported JDK level. com.webcodepro.applecommander.test: ================================== If JUnit is not available (or wanted), remove any references to JUnit. (Make sure the assert statements have been removed also.) The main method should execute tests directly. The full package must be specified, else GCJ will not be happy with it. Commands used to compile: gcj --classpath=AppleCommander-1.1.1b.jar -c DoIt.java gcj --main=com.webcodepro.applecommander.test.DoIt -o DoIt DoIt.o storage.so "DoIt" was a highly modified version of DiskHelperTest. Have not tested with real data as of yet - may have same problems as the Windows code. ********************** ** WINDOWS ** ********************** Using MinGW, am able to compile AppleCommander tests. The date issue is known, and there is a suggested work-around posted here: http://gcc.gnu.org/ml/java/2002-04/msg00180.html Basically, force a reference to the classes which cause the error - the problem lies in classes loaded by reflection, so this forces these classes to be compiled in. The suggested prelude is: // static references to these classes ensure that the linker will include them private static Class c1 = gnu.java.locale.Calendar.class; private static Class c2 = java.util.GregorianCalendar.class; private static Class c3 = gnu.gcj.convert.Input_ASCII.class; private static Class c4 = gnu.gcj.convert.Input_UTF8.class; private static Class c5 = gnu.gcj.convert.Input_8859_1.class; private static Class c6 = gnu.java.locale.LocaleInformation.class; private static Class c7 = gnu.gcj.convert.Output_ASCII.class; Presumably, this is just needed in one class - probably the class which contains the main method. MinGW seems to run (at least in text mode) faster than Cygwin. It also appears to be related to date type stuff (just an observation, no real meat here). Command sequence is similar to this. 1) Compile storage package: cd <...>\storage gcj --classpath=AppleCommander-1.1.1b.jar -c *.java Unable to build a *.so file as on Linux with MinGW - but Cygwin does work. 2) Compile DoIt in test: cd ..\test gcj --classpath=AppleCommander-1.1.1b.jar -c DoIt.java gcj --main=com.webcodepro.applecommander.test.DoIt -o DoIt DoIt.o ..\storage\*.o strip -x DoIt.exe The executable is 2.7MB and runs to completion!