[c5c522c] | 1 | # --------------------------------------------------------------------------- |
---|
| 2 | # This script creates a directory structure below /usr/lib/jvm and populates |
---|
| 3 | # it with symlinks to GCC binaries. |
---|
| 4 | # This will work as a compatibility layer to emulate an Oracle JDK/JRE. |
---|
| 5 | # This emulation is required in order to compile OpenJDK using GNU java. |
---|
| 6 | # |
---|
| 7 | # The same can automatically be achieved in Slackware's gcc packages if |
---|
| 8 | # the 'configure' command is called with the following additional parameters: |
---|
| 9 | # --enable-java-home \ |
---|
| 10 | # --with-java-home=/usr/lib$LIBDIRSUFFIX/jvm/jre \ |
---|
| 11 | # --with-jvm-root-dir=/usr/lib$LIBDIRSUFFIX/jvm \ |
---|
| 12 | # --with-jvm-jar-dir=/usr/lib$LIBDIRSUFFIX/jvm/jvm-exports \ |
---|
| 13 | # --with-arch-directory=$LIB_ARCH \ |
---|
| 14 | # |
---|
| 15 | # Author: Eric Hameleers <alien@slackware.com> December 2011 |
---|
| 16 | # --------------------------------------------------------------------------- |
---|
| 17 | |
---|
| 18 | # Automatically determine the architecture we're building on: |
---|
| 19 | if [ -z "$ARCH" ]; then |
---|
| 20 | case "$( uname -m )" in |
---|
| 21 | i?86) export ARCH=i486 ;; |
---|
| 22 | arm*) export ARCH=arm ;; |
---|
| 23 | # Unless $ARCH is already set, use uname -m for all other archs: |
---|
| 24 | *) export ARCH=$( uname -m ) ;; |
---|
| 25 | esac |
---|
| 26 | fi |
---|
| 27 | |
---|
| 28 | if [ "$ARCH" = "i486" ]; then |
---|
| 29 | SLKCFLAGS="-O2 -march=i486 -mtune=i686" |
---|
| 30 | LIBDIRSUFFIX="" |
---|
| 31 | LIB_ARCH=i386 |
---|
| 32 | elif [ "$ARCH" = "i686" ]; then |
---|
| 33 | SLKCFLAGS="-O2 -march=i686 -mtune=i686" |
---|
| 34 | LIBDIRSUFFIX="" |
---|
| 35 | LIB_ARCH=i386 |
---|
| 36 | elif [ "$ARCH" = "x86_64" ]; then |
---|
| 37 | SLKCFLAGS="-O2 -fPIC" |
---|
| 38 | LIBDIRSUFFIX="64" |
---|
| 39 | LIB_ARCH=amd64 |
---|
| 40 | else |
---|
| 41 | SLKCFLAGS="-O2" |
---|
| 42 | LIBDIRSUFFIX="" |
---|
| 43 | LIB_ARCH=$ARCH |
---|
| 44 | fi |
---|
| 45 | |
---|
| 46 | # Where does the OpenJDK SlackBuild expect the GNU java compatibility symlinks: |
---|
| 47 | JVM=${1:-/usr/lib${LIBDIRSUFFIX}/jvm} |
---|
| 48 | BINDIR=/usr/bin |
---|
| 49 | |
---|
| 50 | # What version of GCC do we have installed: |
---|
| 51 | GCJVER=$(gcj -dumpversion) |
---|
| 52 | |
---|
| 53 | # First, remove the old set of symlinks if they should exist: |
---|
| 54 | rm -fr $JVM |
---|
| 55 | |
---|
| 56 | # Create a JDK compatible directory structure for GNU java: |
---|
| 57 | mkdir -p $JVM |
---|
| 58 | mkdir -p $JVM/bin |
---|
| 59 | mkdir -p $JVM/jre/bin |
---|
| 60 | mkdir -p $JVM/jre/lib/${LIB_ARCH}/client |
---|
| 61 | mkdir -p $JVM/jre/lib/${LIB_ARCH}/server |
---|
| 62 | mkdir -p $JVM/lib |
---|
| 63 | |
---|
| 64 | ln -sf $BINDIR/gjar $JVM/bin/jar |
---|
| 65 | ln -sf $BINDIR/grmic $JVM/bin/rmic |
---|
| 66 | ln -sf $BINDIR/gjavah $JVM/bin/javah |
---|
| 67 | ln -sf $BINDIR/jcf-dump $JVM/bin/javap |
---|
| 68 | ln -sf $BINDIR/gappletviewer $JVM/bin/appletviewer |
---|
| 69 | ln -sf $BINDIR/grmiregistry $JVM/bin/rmiregistry |
---|
| 70 | ln -sf $BINDIR/grmiregistry $JVM/jre/bin/rmiregistry |
---|
| 71 | ln -sf $BINDIR/gkeytool $JVM/bin/keytool |
---|
| 72 | ln -sf $BINDIR/gkeytool $JVM/jre/bin/keytool |
---|
| 73 | ln -sf $BINDIR/gij $JVM/bin/java |
---|
| 74 | ln -sf $BINDIR/ecj $JVM/bin/javac |
---|
| 75 | ln -sf /usr/lib/gcj-${GCJVER}-11/libjvm.so $JVM/jre/lib/${LIB_ARCH}/client/libjvm.so |
---|
| 76 | ln -sf /usr/lib/gcj-${GCJVER}-11/libjvm.so $JVM/jre/lib/${LIB_ARCH}/server/libjvm.so |
---|
| 77 | ln -sf /usr/lib/gcj-${GCJVER}-11/libjawt.so $JVM/jre/lib/${LIB_ARCH}/libjawt.so |
---|
| 78 | ln -sf /usr/share/java/libgcj-${GCJVER}.jar $JVM/jre/lib/rt.jar |
---|
| 79 | ln -sf /usr/share/java/libgcj-tools-${GCJVER}.jar $JVM/lib/tools.jar |
---|
| 80 | ln -sf /usr/include/c++/${GCJVER}/gnu/java $JVM/include |
---|
| 81 | |
---|
| 82 | # Add a Eclipse Java Compiler wrapper which is required |
---|
| 83 | # for bootstrapping OpenJDK using GNU java: |
---|
| 84 | cat <<EOT > /usr/bin/ecj |
---|
| 85 | #!/bin/sh |
---|
| 86 | |
---|
| 87 | CLASSPATH=/usr/share/java/ecj.jar\${CLASSPATH:+:}\$CLASSPATH \ |
---|
| 88 | java org.eclipse.jdt.internal.compiler.batch.Main "\$@" |
---|
| 89 | |
---|
| 90 | EOT |
---|
| 91 | chmod 755 /usr/bin/ecj |
---|
| 92 | |
---|
| 93 | |
---|