1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-05 01:55:52 +00:00
freebsd-ports/java/ecj-bootstrap/files/build.sh
Maho Nakata c237f6edac Add sun.boot.class.path as default bootclasspath for gcj,
so that we don't need to specify the bootclasspath.
Bump portrevision.
2006-08-04 10:34:49 +00:00

80 lines
2.8 KiB
Bash

#!/bin/sh
# taken from eclipse.spec of
# <fedora mirror>/fedora/core/5/source/SRPMS/eclipse-3.1.2-1jpp_13fc.src.rpm
# for fedora mirror, please consult following site.
# http://fedora.redhat.com/download/mirrors.html
# Bootstrapping is 3 parts:
# 0. Patch ecj.zip
# 1. Build ecj with gcj -C
# 2. Build ecj with gcj-built ecj ("javac")
# 3. Re-build ecj with output of 2.
# Patch ecj.zip first
rm -rf tmp
mkdir tmp
unzip -qq -d tmp jdtcoresrc/src/ecj.zip
cd tmp
patch < ../../files/ecj-patch-Main.java
zip -r ../jdtcoresrc/src/ecj.zip *
cd ..
# Unzip the "stable compiler" source into a temp dir and build it.
# Note: we don't want to build the CompilerAdapter.
rm -rf ecj-bootstrap-tmp
mkdir ecj-bootstrap-tmp
unzip -qq -d ecj-bootstrap-tmp jdtcoresrc/src/ecj.zip
rm -f ecj-bootstrap-tmp/org/eclipse/jdt/core/JDTCompilerAdapter.java
# 1a. Build ecj with gcj -C
cd ecj-bootstrap-tmp
for f in `find . -name '*.java' | cut -c 3-`; do
${GCJ} -Wno-deprecated -C $f
done
find . -name '*.class' -or -name '*.properties' -or -name '*.rsc' |\
xargs ${JAR} cf ../ecj-bootstrap.jar
cd ..
# Delete our modified ecj and restore the backup
rm -rf ecj-bootstrap-tmp
# 1b. Natively-compile it
${GCJ} -fPIC -fjni -findirect-dispatch -shared -Wl,-Bsymbolic -o ecj-bootstrap.jar.so ecj-bootstrap.jar
${GCJDBTOOL} -n ecj-bootstrap.db 30000
${GCJDBTOOL} -a ecj-bootstrap.db ecj-bootstrap.jar ecj-bootstrap.jar.so
# 2a. Build ecj
export CLASSPATH=ecj-bootstrap.jar:$ORIGCLASSPATH
export ANT_OPTS="-Dgnu.gcj.precompiled.db.path=`pwd`/ecj-bootstrap.db"
${ANT} -Dbuild.compiler=gcj -buildfile jdtcoresrc/compilejdtcorewithjavac.xml
${GCJ} -fPIC -fjni -findirect-dispatch -shared -Wl,-Bsymbolic \
-o jdtcoresrc/ecj.jar.so jdtcoresrc/ecj.jar
${GCJDBTOOL} -n jdtcoresrc/ecj.db 30000
${GCJDBTOOL} -a jdtcoresrc/ecj.db jdtcoresrc/ecj.jar jdtcoresrc/ecj.jar.so
# Remove our gcj-built ecj
rm ecj-bootstrap.db ecj-bootstrap.jar ecj-bootstrap.jar.so
# To enSURE we're not using any pre-compiled ecj on the build system, set this
export ANT_OPTS="-Dgnu.gcj.precompiled.db.path=`pwd`/jdtcoresrc/ecj.db"
# 3. Use this ecj to rebuild itself
export CLASSPATH=`pwd`/jdtcoresrc/ecj.jar:$ORIGCLASSPATH
${ANT} -Dbuild.compiler=gcj -buildfile jdtcoresrc/compilejdtcore.xml
# Natively-compile it
${GCJ} -fPIC -fjni -findirect-dispatch -shared -Wl,-Bsymbolic \
-o ecj.jar.so ecj.jar
${GCJDBTOOL} -n ecj.db 30000
${GCJDBTOOL} -a ecj.db ecj.jar ecj.jar.so
export ANT_OPTS="-Dgnu.gcj.precompiled.db.path=`pwd`/ecj.db"
rm jdtcoresrc/ecj.db jdtcoresrc/ecj.jar.so
# Creating native executable
${GCJ} -O2 -g -Wl,-Bsymbolic -fPIC -fjni -findirect-dispatch --main=org.eclipse.jdt.internal.compiler.batch.Main -o ecj-bootstrap-gcj ecj.jar