JVM implementation
This commit is contained in:
77
native/xconfigure.sh
Normal file
77
native/xconfigure.sh
Normal file
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
#
|
||||
# Build for iOS 64bit-ARM variants and iOS Simulator
|
||||
# - Place the script at project root
|
||||
# - Customize MIN_IOS_VERSION and other flags as needed
|
||||
#
|
||||
# Test Environment
|
||||
# - macOS 10.14.6
|
||||
# - iOS 13.1
|
||||
# - Xcode 11.1
|
||||
#
|
||||
|
||||
Build() {
|
||||
# Ensure -fembed-bitcode builds, as workaround for libtool macOS bug
|
||||
export MACOSX_DEPLOYMENT_TARGET="10.4"
|
||||
# Get the correct toolchain for target platforms
|
||||
export CC=$(xcrun --find --sdk "${SDK}" clang)
|
||||
export CXX=$(xcrun --find --sdk "${SDK}" clang++)
|
||||
export CPP=$(xcrun --find --sdk "${SDK}" cpp)
|
||||
export CFLAGS="${HOST_FLAGS} ${OPT_FLAGS}"
|
||||
export CXXFLAGS="${HOST_FLAGS} ${OPT_FLAGS}"
|
||||
export LDFLAGS="${HOST_FLAGS}"
|
||||
|
||||
EXEC_PREFIX="${PLATFORMS}/${PLATFORM}"
|
||||
./configure \
|
||||
--host="${CHOST}" \
|
||||
--prefix="${PREFIX}" \
|
||||
--exec-prefix="${EXEC_PREFIX}" \
|
||||
--enable-static \
|
||||
--disable-shared \
|
||||
"$@"
|
||||
# Avoid Xcode loading dylibs even when staticlibs exist
|
||||
|
||||
make clean
|
||||
mkdir -p "${PLATFORMS}" &> /dev/null
|
||||
make -j"${MAKE_JOBS}"
|
||||
make install
|
||||
}
|
||||
|
||||
echo "Cross building with configure args $@"
|
||||
|
||||
# Locations
|
||||
ScriptDir="$( cd "$( dirname "$0" )" && pwd )"
|
||||
cd - &> /dev/null
|
||||
PREFIX="${ScriptDir}"/_build
|
||||
PLATFORMS="${PREFIX}"/platforms
|
||||
UNIVERSAL="${PREFIX}"/universal
|
||||
|
||||
# Compiler options
|
||||
OPT_FLAGS="-O3 -g3 -fembed-bitcode"
|
||||
MAKE_JOBS=8
|
||||
MIN_IOS_VERSION=10.0
|
||||
|
||||
# Build for platforms
|
||||
SDK="iphoneos"
|
||||
PLATFORM="arm"
|
||||
PLATFORM_ARM=${PLATFORM}
|
||||
ARCH_FLAGS="-arch arm64 -arch arm64e" # -arch armv7 -arch armv7s
|
||||
HOST_FLAGS="${ARCH_FLAGS} -miphoneos-version-min=${MIN_IOS_VERSION} -isysroot $(xcrun --sdk ${SDK} --show-sdk-path)"
|
||||
CHOST="arm-apple-darwin"
|
||||
Build "$@"
|
||||
|
||||
SDK="iphonesimulator"
|
||||
PLATFORM="x86_64-sim"
|
||||
PLATFORM_ISIM=${PLATFORM}
|
||||
ARCH_FLAGS="-arch x86_64"
|
||||
HOST_FLAGS="${ARCH_FLAGS} -mios-simulator-version-min=${MIN_IOS_VERSION} -isysroot $(xcrun --sdk ${SDK} --show-sdk-path)"
|
||||
CHOST="x86_64-apple-darwin"
|
||||
Build "$@"
|
||||
|
||||
# Create universal binary
|
||||
cd "${PLATFORMS}/${PLATFORM_ARM}/lib"
|
||||
LIB_NAME=`find . -iname *.a`
|
||||
cd -
|
||||
mkdir -p "${UNIVERSAL}" &> /dev/null
|
||||
lipo -create -output "${UNIVERSAL}/${LIB_NAME}" "${PLATFORMS}/${PLATFORM_ARM}/lib/${LIB_NAME}" "${PLATFORMS}/${PLATFORM_ISIM}/lib/${LIB_NAME}"
|
||||
Reference in New Issue
Block a user