From 6760d2a5f4b586429df27cfdc9a1254262b9bbfe Mon Sep 17 00:00:00 2001
From: kytv <kytv@mail.i2p>
Date: Mon, 19 Sep 2011 12:23:43 +0000
Subject: [PATCH] Add (Net|Open)BSD support, clean-ups

---
 core/c/jbigi/mbuild-all.sh   | 54 ++++++++++++++++++++-------
 core/c/jbigi/mbuild_jbigi.sh | 35 ++++++++++++++----
 core/c/jcpuid/mbuild.sh      | 72 ++++++++++++++++--------------------
 3 files changed, 99 insertions(+), 62 deletions(-)

diff --git a/core/c/jbigi/mbuild-all.sh b/core/c/jbigi/mbuild-all.sh
index 40ef324893..00beaccdb4 100755
--- a/core/c/jbigi/mbuild-all.sh
+++ b/core/c/jbigi/mbuild-all.sh
@@ -1,7 +1,7 @@
 #!/usr/bin/env bash
 
 #FIXME What platforms for MacOS?
-MISC_DARWIN_PLATFORMS=""
+MISC_DARWIN_PLATFORMS="powerpc powerpc64 powerpc64le powerpcle"
 
 # Note: You will have to add the CPU ID for the platform in the CPU ID code
 # for a new CPU. Just adding them here won't let I2P use the code!
@@ -14,12 +14,13 @@ MISC_DARWIN_PLATFORMS=""
 MISC_LINUX_PLATFORMS="hppa2.0 alphaev56 armv5tel mips64el itanium itanium2 ultrasparc2 ultrasparc2i alphaev6 powerpc970 powerpc7455 powerpc7447"
 
 #
-# If you know of other platforms i2p on FREEBSD works on,
+# If you know of other platforms i2p on *BSD works on,
 # please add them here.
 # Do NOT add any X86 platforms, do that below in the x86 platform list.
 #
 MISC_FREEBSD_PLATFORMS="alphaev56 ultrasparc2i"
-MISC_NETBSD_PLATFORMS="powerpc powerpc64 powerpc64le powerpcle atari amiga m68knommu"
+MISC_NETBSD_PLATFORMS="powerpc powerpc64 powerpc64le powerpcle atari amiga m68knommu" # and many, many more
+MISC_OPENBSD_PLATFORMS=""
 
 #
 # MINGW/Windows??
@@ -44,7 +45,10 @@ X86_PLATFORMS="pentium pentiummmx pentium2 pentium3 pentiumm k6 k62 k63 athlon g
 MINGW_PLATFORMS="${X86_PLATFORMS} ${MISC_MINGW_PLATFORMS}"
 LINUX_PLATFORMS="${X86_PLATFORMS} ${MISC_LINUX_PLATFORMS}"
 FREEBSD_PLATFORMS="${X86_PLATFORMS} ${MISC_FREEBSD_PLATFORMS}"
-NETBSD_PLATFORMS="${FREEBSD_PLATFORMS} ${LINUX_PLATFORMS} ${MISC_NETBSD_PLATFORMS}"
+# As they say, "Of course it runs NetBSD!"
+NETBSD_PLATFORMS="${FREEBSD_PLATFORMS} ${MISC_LINUX_PLATFORMS} ${MISC_NETBSD_PLATFORMS}"
+
+# FIXME Is this all?
 DARWIN_PLATFORMS="core2 corei"
 
 # Set the version to 5.0.2 for OSX because
@@ -99,18 +103,40 @@ Linux*)
 			PLATFORM_LIST="${LINUX_PLATFORMS}";;
 	esac
 	echo "Building ${TARGET} .so's for ${arch}";;
-NetBSD*)
-	PLATFORM_LIST="${NETBSD_PLATFORMS}"
-	NAME="libjbigi"
-	TYPE="so"
-	TARGET="-netbsd-"
-	echo "Building netbsd .sos for all architectures";;
-FreeBSD*)
-	PLATFORM_LIST="${FREEBSD_PLATFORMS}"
+NetBSD*|FreeBSD*|OpenBSD*)
 	NAME="libjbigi"
 	TYPE="so"
-	TARGET="-freebsd-"
-	echo "Building freebsd .sos for all architectures";;
+	PLATFORM_LIST=""
+	BSDTYPE="`uname -s | tr [A-Z] [a-z]`"
+	arch=$(uname -m | cut -f1 -d" ")
+	case ${arch} in
+		i[3-6]86)
+			arch="x86";;
+	esac
+	case ${arch} in
+		x86_64)
+			PLATFORM_LIST="${X86_64_PLATFORMS}"
+			TARGET="-${BSDTYPE}-X86_64-";;
+		ia64)
+			PLATFORM_LIST="${X86_64_PLATFORMS}"
+			TARGET="-${BSDTYPE}-ia64-";;
+		x86)
+			PLATFORM_LIST="${X86_PLATFORMS}"
+			TARGET="-${BSDTYPE}-x86-";;
+		*)
+			case ${BSDTYPE} in
+				netbsd)
+					PLATFORM_LIST="${NETBSD_PLATFORMS}";;
+				openbsd)
+					PLATFORM_LIST="${OPENBSD_PLATFORMS}";;
+				freebsd)
+					PLATFORM_LIST="${FREEBSD_PLATFORMS}";;
+				*)
+					echo "Unsupported build environment"
+					exit 1;;
+			esac
+	esac
+	echo "Building ${BSDTYPE} .so's for ${arch}";;
 *)
 	echo "Unsupported build environment"
 	exit;;
diff --git a/core/c/jbigi/mbuild_jbigi.sh b/core/c/jbigi/mbuild_jbigi.sh
index 245431d0d7..4b505d1e16 100755
--- a/core/c/jbigi/mbuild_jbigi.sh
+++ b/core/c/jbigi/mbuild_jbigi.sh
@@ -23,21 +23,40 @@ Darwin*)
         INCLUDES="-I. -I../../jbigi/include -I$JAVA_HOME/include"
         LINKFLAGS="-dynamiclib -framework JavaVM"
         LIBFILE="libjbigi.jnilib";;
-SunOS*)
+SunOS*|OpenBSD*|NetBSD*|FreeBSD*|Linux*)
+        UNIXTYPE="`uname -s | tr [A-Z] [a-z]`"
+        if [ $UNIXTYPE = "sunos" ]; then
+                UNIXTYPE="solaris"
+        elif [ $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
+                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
         COMPILEFLAGS="-fPIC -Wall"
-        INCLUDES="-I. -I../../jbigi/include -I$JAVA_HOME/include -I$JAVA_HOME/include/solaris"
+        INCLUDES="-I. -I../../jbigi/include -I$JAVA_HOME/include -I$JAVA_HOME/include/${UNIXTYPE}"
         LINKFLAGS="-shared -Wl,-soname,libjbigi.so"
         LIBFILE="libjbigi.so";;
-
 *)
-	COMPILEFLAGS="-fPIC -Wall"
-	INCLUDES="-I. -I../../jbigi/include -I$JAVA_HOME/include -I$JAVA_HOME/include/linux"
-	LINKFLAGS="-shared -Wl,-soname,libjbigi.so"
-	LIBFILE="libjbigi.so";;
+	echo "Unsupported system type."
+	exit 1;;
 esac
 
 if [ "$1" = "dynamic" ] ; then
-	echo "Building a jbigi lib that is dynamically linked to GMP" 
+	echo "Building a jbigi lib that is dynamically linked to GMP"
 	LIBPATH="-L.libs"
 	INCLUDELIBS="-lgmp"
 else
diff --git a/core/c/jcpuid/mbuild.sh b/core/c/jcpuid/mbuild.sh
index a69cbdf53f..47dfbe9eb8 100755
--- a/core/c/jcpuid/mbuild.sh
+++ b/core/c/jcpuid/mbuild.sh
@@ -7,10 +7,8 @@ CYGWIN*)
 	echo "Building windows .dlls";;
 Linux*)
 	echo "Building linux .sos";;
-NetBSD*)
-	echo "Building netbsd .sos";;
-FreeBSD*)
-	echo "Building freebsd .sos";;
+NetBSD*|OpenBSD*|FreeBSD*)
+	echo "Building `uname -s |tr [A-Z] [a-z]` .sos";;
 Darwin*)
 	echo "Building OSX jnilibs";;
 *)
@@ -39,51 +37,45 @@ Darwin*)
         INCLUDES="-I. -Iinclude -I$JAVA_HOME/include/"
         LINKFLAGS="-dynamiclib -framework JavaVM"
         LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-x86-darwin.jnilib";;
-NetBSD*)
-	case `uname -m` in
-		amd64)
-			LINKFLAGS="-shared -Wl,-soname,libjcpuid-x86_64-netbsd.so"
-			LIBFILE="lib/netnet/support/CPUInformation/libjcpuid-x86_64-netbsd.so";;
-		i?86*)
-			LINKFLAGS="-shared -Wl,-soname,libjcpuid-x86-netbsd.so"
-			LIBFILE="lib/netnet/support/CPUInformation/libjcpuid-x86-netbsd.so";;
-		*)
-			echo "Unknown build environment"
-			exit;;
-	esac
-	COMPILEFLAGS="-fPIC -Wall"
-	INCLUDES="-I. -Iinclude -I$JAVA_HOME/include/ -I$JAVA_HOME/include/netbsd/";;
-FreeBSD*)
-	case `uname -m` in
-		amd64)
-			LINKFLAGS="-shared -Wl,-soname,libjcpuid-x86_64-freebsd.so"
-			LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-x86_64-freebsd.so";;
-		i?86*)
-			LINKFLAGS="-shared -Wl,-soname,libjcpuid-x86-freebsd.so"
-			LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-x86-freebsd.so";;
-		*)
-			echo "Unknown build environment"
-			exit;;
-	esac
-	COMPILEFLAGS="-fPIC -Wall"
-	INCLUDES="-I. -Iinclude -I$JAVA_HOME/include/ -I$JAVA_HOME/include/freebsd/";;
-Linux*)
+Linux*|OpenBSD*|NetBSD*|FreeBSD*|SunOS*)
+        UNIXTYPE="`uname -s | tr [A-Z] [a-z]`"
+        if [ $UNIXTYPE = "sunos" ]; then
+                UNIXTYPE="solaris"
+        elif [ $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
+		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
 	case `uname -m` in
 		x86_64*)
-			LINKFLAGS="-shared -Wl,-soname,libjcpuid-x86_64-linux.so"
-			LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-x86_64-linux.so";;
+			LINKFLAGS="-shared -Wl,-soname,libjcpuid-x86_64-${UNIXTYPE}.so"
+			LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-x86_64-${UNIXTYPE}.so";;
 		ia64*)
-			LINKFLAGS="-shared -Wl,-soname,libjcpuid-x86-linux.so"
-			LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-ia64-linux.so";;
+			LINKFLAGS="-shared -Wl,-soname,libjcpuid-x86-${UNIXTYPE}.so"
+			LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-ia64-${UNIXTYPE}.so";;
 		i?86*)
-			LINKFLAGS="-shared -Wl,-soname,libjcpuid-x86-linux.so"
-			LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-x86-linux.so";;
+			LINKFLAGS="-shared -Wl,-soname,libjcpuid-x86-${UNIXTYPE}.so"
+			LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-x86-${UNIXTYPE}.so";;
 		*)
 			echo "Unsupported build environment"
 			exit;;
 	esac
 	COMPILEFLAGS="-fPIC -Wall"
-	INCLUDES="-I. -Iinclude -I$JAVA_HOME/include -I$JAVA_HOME/include/linux";;
+	INCLUDES="-I. -Iinclude -I$JAVA_HOME/include -I$JAVA_HOME/include/${UNIXTYPE}";;
 
 esac
 
-- 
GitLab