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