Files
i2p.i2p/core/c/jcpuid/build.sh

97 lines
3.5 KiB
Bash
Executable File

#!/bin/sh
cd `dirname $0`
case `uname -s` in
MINGW*|CYGWIN*)
echo "Building windows .dlls";;
SunOS*)
echo "Building solaris .sos";;
Darwin*)
echo "Building Darwin jnilibs";;
Linux*|NetBSD*|OpenBSD*|*FreeBSD*)
echo "Building `uname -s |tr [A-Z] [a-z]` .sos";;
*)
echo "Unsupported build environment"
exit;;
esac
rm -rf lib
mkdir -p lib/freenet/support/CPUInformation
CC="gcc"
case `uname -s` in
MINGW*|CYGWIN*)
JAVA_HOME="/c/software/j2sdk1.4.2_05"
COMPILEFLAGS="-Wall"
INCLUDES="-I. -Iinclude -I${JAVA_HOME}/include/ -I${JAVA_HOME}/include/win32/"
LINKFLAGS="-shared -static -static-libgcc -Wl,--kill-at"
LIBFILE="lib/freenet/support/CPUInformation/jcpuid-x86-windows.dll";;
Darwin*)
JAVA_HOME=$(/usr/libexec/java_home)
COMPILEFLAGS="-fPIC -Wall -arch x86_64 -arch i386"
INCLUDES="-I. -Iinclude -I${JAVA_HOME}/include/"
LINKFLAGS="-dynamiclib -framework JavaVM"
LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-x86-darwin.jnilib";;
Linux*|OpenBSD*|NetBSD*|*FreeBSD*|SunOS*)
UNIXTYPE="`uname -s | tr [A-Z] [a-z]`"
if [ ${UNIXTYPE} = "sunos" ]; then
UNIXTYPE="solaris"
elif [ ${UNIXTYPE} = "kfreebsd" ]; then
UNIXTYPE="linux"
fi
# If JAVA_HOME is set elsewhere, obey it. Otherwise we'll try to
# deduce its location ourselves.
if [ -z "${JAVA_HOME}" ]; then
if [ ${UNIXTYPE} = "freebsd" ]; then
if [ -d /usr/local/openjdk6 ]; then
JAVA_HOME="/usr/local/openjdk6"
elif [ -d /usr/local/openjdk7 ]; then
JAVA_HOME="/usr/local/openjdk7"
fi
elif [ ${UNIXTYPE} = "openbsd" ]; then # The default in 4.9
if [ -d /usr/local/jdk-1.7.0 ]; then
JAVA_HOME="/usr/local/jdk-1.7.0"
fi
elif [ ${UNIXTYPE} = "netbsd" ]; then
if [ -d /usr/pkg/java/openjdk7 ]; then
JAVA_HOME="/usr/pkg/java/openjdk7"
fi
elif [ ${UNIXTYPE} = "linux" -a -e /etc/debian_version ]; then
if [ -d /usr/lib/jvm/default-java ]; then
JAVA_HOME="/usr/lib/jvm/default-java"
fi
fi
fi
case `uname -m` in
x86_64*|amd64)
ARCH="x86_64";;
ia64*)
ARCH="ia64";;
i?86*)
ARCH="x86";;
*)
echo "Unsupported build environment. jcpuid is only used on x86 systems."
exit 1;;
esac
# JAVA_HOME being set doesn't guarantee that it's usable
if [ ! -r ${JAVA_HOME}/include/jni.h ]; then
echo "Please ensure you have a Java SDK installed"
echo "and/or set JAVA_HOME then re-run this script."
exit 1
fi
LINKFLAGS="-shared -Wl,-soname,libjcpuid-${ARCH}-${UNIXTYPE}.so"
LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-${ARCH}-${UNIXTYPE}.so"
COMPILEFLAGS="-fPIC -Wall"
INCLUDES="-I. -Iinclude -I${JAVA_HOME}/include -I${JAVA_HOME}/include/${UNIXTYPE}";;
esac
echo "Compiling C code..."
rm -f ${LIBFILE}
${CC} ${COMPILEFLAGS} ${LINKFLAGS} ${INCLUDES} src/*.c -o ${LIBFILE} || (echo "Failed to compile ${LIBFILE}"; exit 1)
strip ${LIBFILE} || (echo "Failed to strip ${LIBFILE}" ; exit 1)
echo Built `dirname $0`/${LIBFILE}