aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2023-01-14 18:13:41 +0100
committerSven Gothel <[email protected]>2023-01-14 18:13:41 +0100
commit03666ee78db829a00a120a1a60464615f1b0e8d5 (patch)
tree15e764490b81ddc3d48a0703fdc888c8d4f5a265
parentef21430be4da6f4fe95e99e2dd492074776e55f6 (diff)
MacOS: Add description to produce fat OpenJDK libraries for x86_64 and aarch64
-rw-r--r--doc/HowToBuild.html17
-rw-r--r--make/scripts/make.macosx.jdk_lipo_libs.sh17
2 files changed, 33 insertions, 1 deletions
diff --git a/doc/HowToBuild.html b/doc/HowToBuild.html
index 941cf88..74123ce 100644
--- a/doc/HowToBuild.html
+++ b/doc/HowToBuild.html
@@ -144,7 +144,7 @@ apt-get install lib32z1 lib32ncurses5 gcc-multilib lib32gcc1 lib32gomp1 lib32itm
<li><a href="https://www.openindiana.org/">OpenIndiana</a> using illumus's OpenSolaris continuation <i>(todo: test)</i></li>
</ul>
</li>
- <li> <b>MacOS and iOS</b> Intel and Arm64
+ <li> <b>MacOS and iOS</b> x86_64 and aarch64
<ul>
<li>git &ge; 2.37 provided by Xcode &ge; 14</li>
<li>awk is provided by MacOS</li>
@@ -152,6 +152,21 @@ apt-get install lib32z1 lib32ncurses5 gcc-multilib lib32gcc1 lib32gomp1 lib32itm
<li><a href="http://www.apple.com/macosx/">Mac OS</a> 11 or later (note: may not work with earlier releases) </li>
<li><a href="http://developer.apple.com/technologies/xcode.html">Xcode</a> 14 or later for clang, etc (included in MacOS)</li>
</ul>
+ Prepare fat universal OpenJDK libraries
+ <ul>
+ <li>Open a terminal in your home folder, e.g. <i>/Users/jogamp</i></li>
+ <li>The OpenJDK library folder of each target platform, x86_64 or aarch64, is <i>/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home/lib</i></li>
+ <li>Transfer the x86_64 OpenJDK library folder to <i>temurin-17.jdk.amd64.lib</i><li>
+ <li>Transfer the aarch64 OpenJDK library folder to <i> temurin-17.jdk.arm64.lib</i></li>
+ <li>Run the script <i>gluegen/make/scripts/make.macosx.jdk_lipo_libs.sh</i></li>
+ <li>Fat universal OpenJDK libraries are produced into <i>temurin-17.jdk.fat.lib</i></li>
+ </ul>
+ Now we have to tell the <i>gluegen</i> build framework to use <i>temurin-17.jdk.fat.lib</i>,
+ by adding an <i>ant</i> macro in <i>$HOME/gluegen.properties</i>
+ <pre>
+ java.lib.dir.platform=/Users/jogamp/temurin-17.jdk.fat.lib
+ </pre>
+ Replace <i>jogamp</i> with your user name.
</li>
<li> <b>Windows</b>/x86 (32 bit)
<ul>
diff --git a/make/scripts/make.macosx.jdk_lipo_libs.sh b/make/scripts/make.macosx.jdk_lipo_libs.sh
new file mode 100644
index 0000000..3dcb9ab
--- /dev/null
+++ b/make/scripts/make.macosx.jdk_lipo_libs.sh
@@ -0,0 +1,17 @@
+#! /bin/sh
+
+amd64_dir=$HOME/temurin-17.jdk.amd64.lib
+arm64_dir=$HOME/temurin-17.jdk.arm64.lib
+fat_dir=$HOME/temurin-17.jdk.fat.lib
+
+rm -rf $fat_dir
+mkdir $fat_dir
+
+for i in $amd64_dir/*.dylib ; do
+ bname=`basename $i`
+ if [ -e $arm64_dir/$bname ] ; then
+ lipo -create $i $arm64_dir/$bname -output $fat_dir/$bname
+ else
+ echo missing $arm64_dir/$bname
+ fi
+done