| [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 | |
|---|