AppleCommander/NATIVE-COMPILE
2003-03-06 03:38:38 +00:00

68 lines
3.4 KiB
Plaintext

Notes on attempts to compile AppleCommander natively... ultimately should
be directions!
Issues (general):
1) Unable to handle graphics (images) in native mode. Need to patch code in
compile process manually to get a clean compile.
*********************
** LINUX **
*********************
See build/build-applecommander-linux-gtk for the script which builds
an executable of AppleCommander. The build/build-swt-linux-gtk script
builds the SWT swt.so file.
**********************
** WINDOWS **
**********************
Building AppleCommander for Windows using MinGW (2.0.3 with GCJ update).
See build/build-applecommander-mingw for the current script.
1. Using MinGW, date related support classes are not compiled in. This is a known
issue 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. I am currently pasting this into AppleCommander.java itself.
2. GraphicsFilter still cannot contain references to the JDK 1.4 ImageIO libraries,
nor the SUN-specific JPEG classes. References to these classes need to be commented
out -- essentially rendering the graphics filter useless. The user-interface should
auto-detect this and give no options for image codecs.
This also suggests that the GraphicsFilter needs to be re-engineered to be less rigid.
The filter itself should accept (or detect, I don't know yet) via Reflection what
classes are available and choose an appropriate filter. This would/could change
the compile process to just delete the inappropriate filters and the GrapicsFilter
class would auto-adjust to the loss by choosing a more appropraite (if less capable)
filter.
3. Resources can be compiled/atteched to a specific Java class. AppleCommander has
a number of resources that should be built into the exe class. This will simplify
the distribution to be the AppleCommander executable and the SWT support DLL.
** DONE ** See the AppleCommander build script.
4. UPX appears to be a very good compression tool for executables. It should be
standard practice (and part of the automated build process) to run the final EXE
and DLL files through UPX to ensure a small filesize.
** DONE ** See the AppleCommander build script.
5. There are speed issues with the compiled version of AppleCommander. They do not
appear to be present when run as a normal Java/SWT application. It has not been
determined if this is AppleCommander or SWT-related yet.