#!/bin/sh

# Extract the source and compiled version of SWT
mkdir swt_temp
cd swt_temp
jar -xvf ../swtsrc.zip
jar -xvf ../swt.jar

# Remove some java files we don't even want to try and compile
rm org/eclipse/swt/custom/TableCursor.java
rm org/eclipse/swt/custom/DisplayRenderer.java
rm org/eclipse/swt/widgets/Decorations.java
rm org/eclipse/swt/widgets/Control.java
rm org/eclipse/swt/internal/awt/win32/SWT_AWT.java

# Patch FileFormat so it doesn't crash with the "Class.forName()" problem
patch -d org/eclipse/swt/internal/image < ../FileFormat.patch

# Compile all the Java files
SWT_CLASSES=`find . -name "*.java" -print |sed 's/^\.\///'`

for i in $SWT_CLASSES
do
	OBJ_FILE=`echo $i |sed 's/\//_/g' |sed 's/\.java$/\.o/'`
	echo Compiling $i to $OBJ_FILE
	gcj --classpath=. -fjni -g0 -c -o $OBJ_FILE $i
done

# Compile the classes for the java we can't build from source
echo Compiling non-compilable source from classes

gcj --classpath=. -fjni -g0 -c -o TableCursor.o \
	org/eclipse/swt/custom/TableCursor.*
	
gcj --classpath=. -fjni -g0 -c -o DisplayRenderer.o \
	org/eclipse/swt/custom/DisplayRenderer.*
	
gcj --classpath=. -fjni -g0 -c -o Decorations.o \
	org/eclipse/swt/widgets/Decorations.*
	
gcj --classpath=. -fjni -g0 -c -o Control.o \
	org/eclipse/swt/widgets/Control.*
	
gcj -c --resource=org.eclipse.swt.internal.SWTMessages \
	-o SWTMessages.o org/eclipse/swt/internal/SWTMessages.properties

echo Creating lib-org-eclipse-swt.a
ar -rcs lib-org-eclipse-swt.a *.o
ranlib lib-org-eclipse-swt.a

echo Cleaning up
cd ..
mv swt_temp/lib-org-eclipse-swt.a .
rm -r swt_temp

echo Done

