flycast/shell/apple/emulator-ios/OpenMP/build_ios_openmp.sh

74 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
usage() { echo "Usage: $0 {-d | --disableSimulator}" 1>&2; exit 1; }
while [ "${1:-}" != "" ]; do
case "$1" in
"-d" | "--disableSimulator")
disableSimulator=true
;;
"-h" | "--help")
usage
exit
;;
esac
shift
done
OMP_VER=14.0.6
DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
SRC_DIR="${DIR}/openmp-${OMP_VER}.src"
# Download OpenMP
(cd ${DIR} && curl -OL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${OMP_VER}/openmp-${OMP_VER}.src.tar.xz")
(cd ${DIR} && tar -xf ${DIR}/openmp-${OMP_VER}.src.tar.xz openmp-${OMP_VER}.src)
# Build iOS
mkdir -p ${SRC_DIR}/build
cmake -B ${SRC_DIR}/build -S ${SRC_DIR} \
-DCMAKE_TOOLCHAIN_FILE=${DIR}/ios.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${SRC_DIR}/build/install \
-DIOS_PLATFORM=OS -DENABLE_BITCODE=1 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 -DIOS_ARCH="arm64;arm64e" \
-DPERL_EXECUTABLE=$(which perl) \
-DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF
cmake --build ${SRC_DIR}/build -j 3
cmake --build ${SRC_DIR}/build --target install
FRAMEWORK_DIR="${SRC_DIR}/build/install/OpenMP.framework"
mkdir -p "${FRAMEWORK_DIR}/Versions/A/Headers"
ln -sfh A "${FRAMEWORK_DIR}/Versions/Current"
ln -sfh Versions/Current/Headers "${FRAMEWORK_DIR}/Headers"
ln -sfh "Versions/Current/libomp.a" \
"${FRAMEWORK_DIR}/OpenMP"
cp ${SRC_DIR}/build/install/lib/libomp.a "${FRAMEWORK_DIR}/Versions/A/libomp.a"
cp ${SRC_DIR}/build/install/include/* "${FRAMEWORK_DIR}/Versions/A/Headers"
# Build Simulator
if [ -z "$disableSimulator" ]
then
mkdir -p ${SRC_DIR}/build-simulator
cmake -B ${SRC_DIR}/build-simulator -S ${SRC_DIR} \
-DCMAKE_TOOLCHAIN_FILE=${DIR}/ios.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${SRC_DIR}/build-simulator/install \
-DIOS_PLATFORM=SIMULATOR -DENABLE_BITCODE=1 -DENABLE_ARC=0 -DENABLE_VISIBILITY=0 -DIOS_ARCH="x86_64;arm64" \
-DPERL_EXECUTABLE=$(which perl) \
-DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF
cmake --build ${SRC_DIR}/build-simulator -j 3
cmake --build ${SRC_DIR}/build-simulator --target install
FRAMEWORK_SIM_DIR="${SRC_DIR}/build-simulator/install/OpenMP.framework"
mkdir -p "${FRAMEWORK_SIM_DIR}/Versions/A/Headers"
ln -sfh A "${FRAMEWORK_SIM_DIR}/Versions/Current"
ln -sfh Versions/Current/Headers "${FRAMEWORK_SIM_DIR}/Headers"
ln -sfh "Versions/Current/libomp.a" \
"${FRAMEWORK_SIM_DIR}/OpenMP"
cp ${SRC_DIR}/build-simulator/install/lib/libomp.a "${FRAMEWORK_SIM_DIR}/Versions/A/libomp.a"
cp ${SRC_DIR}/build-simulator/install/include/* "${FRAMEWORK_SIM_DIR}/Versions/A/Headers"
ARG_SIM="-framework $FRAMEWORK_SIM_DIR "
fi
# Create XCFramework
rm -rf "${DIR}/OpenMP.xcframework"
xcodebuild -create-xcframework -framework $FRAMEWORK_DIR $ARG_SIM -output "${DIR}/OpenMP.xcframework"
# Clean up
rm -rf "${DIR}/openmp-${OMP_VER}"*