74 lines
3.0 KiB
Bash
74 lines
3.0 KiB
Bash
![]() |
#!/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}"*
|
||
|
|