feat: add option for creating XCFramework and configure minimum iOS target (#5648)
* feat: add option for creating XCFramework and configure minimum iOS target with a build parameter * style: update indents for iOS bash script --------- Co-authored-by: Kim Kulling <kimkulling@users.noreply.github.com>pull/5734/head^2
parent
389bdedda7
commit
924106188e
|
@ -0,0 +1,33 @@
|
||||||
|
// Export headers for Swift (iOS)
|
||||||
|
module libassimp {
|
||||||
|
header "ColladaMetaData.h"
|
||||||
|
header "GltfMaterial.h"
|
||||||
|
header "ObjMaterial.h"
|
||||||
|
header "anim.h"
|
||||||
|
header "camera.h"
|
||||||
|
header "cexport.h"
|
||||||
|
header "cfileio.h"
|
||||||
|
header "cimport.h"
|
||||||
|
header "color4.h"
|
||||||
|
header "commonMetaData.h"
|
||||||
|
header "config.h"
|
||||||
|
header "defs.h"
|
||||||
|
header "importerdesc.h"
|
||||||
|
header "light.h"
|
||||||
|
header "material.h"
|
||||||
|
header "matrix3x3.h"
|
||||||
|
header "matrix4x4.h"
|
||||||
|
header "mesh.h"
|
||||||
|
header "metadata.h"
|
||||||
|
header "pbrmaterial.h"
|
||||||
|
header "postprocess.h"
|
||||||
|
header "quaternion.h"
|
||||||
|
header "revision.h"
|
||||||
|
header "scene.h"
|
||||||
|
header "texture.h"
|
||||||
|
header "types.h"
|
||||||
|
header "vector2.h"
|
||||||
|
header "vector3.h"
|
||||||
|
header "version.h"
|
||||||
|
export *
|
||||||
|
}
|
|
@ -1,7 +1,13 @@
|
||||||
# assimp for iOS
|
# assimp for iOS
|
||||||
(deployment target 6.0+, 32/64bit)
|
(deployment target 6.0+, 32/64bit)
|
||||||
|
|
||||||
Builds assimp libraries for several iOS CPU architectures at once, and outputs a fat binary from the result.
|
### Requirements
|
||||||
|
- cmake
|
||||||
|
- pkg-config
|
||||||
|
|
||||||
|
Note: all these packages can be installed with [brew](https://brew.sh)
|
||||||
|
|
||||||
|
Builds assimp libraries for several iOS CPU architectures at once, and outputs a fat binary / XCFramework from the result.
|
||||||
|
|
||||||
Run the **build.sh** script from the ```./port/iOS/``` directory. See **./build.sh --help** for information about command line options.
|
Run the **build.sh** script from the ```./port/iOS/``` directory. See **./build.sh --help** for information about command line options.
|
||||||
|
|
||||||
|
@ -15,11 +21,11 @@ shadeds-Mac:iOS arul$ ./build.sh --help
|
||||||
Example:
|
Example:
|
||||||
```bash
|
```bash
|
||||||
cd ./port/iOS/
|
cd ./port/iOS/
|
||||||
./build.sh --stdlib=libc++ --archs="armv7 arm64 i386"
|
./build.sh --stdlib=libc++ --archs="arm64 x86_64" --no-fat --min-version="16.0"
|
||||||
```
|
```
|
||||||
Supported architectures/devices:
|
Supported architectures/devices:
|
||||||
|
|
||||||
### Simulator
|
### Simulator [CPU Architectures](https://docs.elementscompiler.com/Platforms/Cocoa/CpuArchitectures/)
|
||||||
- i386
|
- i386
|
||||||
- x86_64
|
- x86_64
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ build_arch()
|
||||||
|
|
||||||
rm CMakeCache.txt
|
rm CMakeCache.txt
|
||||||
|
|
||||||
CMAKE_CLI_INPUT="-DCMAKE_C_COMPILER=$CMAKE_C_COMPILER -DCMAKE_CXX_COMPILER=$CMAKE_CXX_COMPILER -DCMAKE_TOOLCHAIN_FILE=./port/iOS/IPHONEOS_$(echo $1 | tr '[:lower:]' '[:upper:]')_TOOLCHAIN.cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS"
|
CMAKE_CLI_INPUT="-DCMAKE_C_COMPILER=$CMAKE_C_COMPILER -DCMAKE_CXX_COMPILER=$CMAKE_CXX_COMPILER -DCMAKE_TOOLCHAIN_FILE=./port/iOS/IPHONEOS_$(echo $1 | tr '[:lower:]' '[:upper:]')_TOOLCHAIN.cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS -DASSIMP_BUILD_ZLIB=ON"
|
||||||
|
|
||||||
echo "[!] Running CMake with -G 'Unix Makefiles' $CMAKE_CLI_INPUT"
|
echo "[!] Running CMake with -G 'Unix Makefiles' $CMAKE_CLI_INPUT"
|
||||||
|
|
||||||
|
@ -102,6 +102,7 @@ CPP_STD_LIB=${CPP_STD_LIB_LIST[0]}
|
||||||
CPP_STD=${CPP_STD_LIST[0]}
|
CPP_STD=${CPP_STD_LIST[0]}
|
||||||
DEPLOY_ARCHS=${BUILD_ARCHS_ALL[*]}
|
DEPLOY_ARCHS=${BUILD_ARCHS_ALL[*]}
|
||||||
DEPLOY_FAT=1
|
DEPLOY_FAT=1
|
||||||
|
DEPLOY_XCFramework=1
|
||||||
|
|
||||||
for i in "$@"; do
|
for i in "$@"; do
|
||||||
case $i in
|
case $i in
|
||||||
|
@ -117,6 +118,11 @@ for i in "$@"; do
|
||||||
DEPLOY_ARCHS=`echo $i | sed 's/[-a-zA-Z0-9]*=//'`
|
DEPLOY_ARCHS=`echo $i | sed 's/[-a-zA-Z0-9]*=//'`
|
||||||
echo "[!] Selecting architectures: $DEPLOY_ARCHS"
|
echo "[!] Selecting architectures: $DEPLOY_ARCHS"
|
||||||
;;
|
;;
|
||||||
|
--min-version=*)
|
||||||
|
MIN_IOS_VERSION=`echo $i | sed 's/[-a-zA-Z0-9]*=//'`
|
||||||
|
IOS_SDK_TARGET=$MIN_IOS_VERSION
|
||||||
|
echo "[!] Selecting minimum iOS version: $MIN_IOS_VERSION"
|
||||||
|
;;
|
||||||
--debug)
|
--debug)
|
||||||
BUILD_TYPE=Debug
|
BUILD_TYPE=Debug
|
||||||
echo "[!] Selecting build type: Debug"
|
echo "[!] Selecting build type: Debug"
|
||||||
|
@ -129,11 +135,17 @@ for i in "$@"; do
|
||||||
DEPLOY_FAT=0
|
DEPLOY_FAT=0
|
||||||
echo "[!] Fat binary will not be created."
|
echo "[!] Fat binary will not be created."
|
||||||
;;
|
;;
|
||||||
|
--no-xcframework)
|
||||||
|
DEPLOY_XCFramework=0
|
||||||
|
echo "[!] XCFramework will not be created."
|
||||||
|
;;
|
||||||
-h|--help)
|
-h|--help)
|
||||||
echo " - don't build fat library (--no-fat)."
|
echo " - don't build fat library (--no-fat)."
|
||||||
|
echo " - don't build XCFramework (--no-xcframework)."
|
||||||
echo " - Include debug information and symbols, no compiler optimizations (--debug)."
|
echo " - Include debug information and symbols, no compiler optimizations (--debug)."
|
||||||
echo " - generate dynamic libraries rather than static ones (--shared-lib)."
|
echo " - generate dynamic libraries rather than static ones (--shared-lib)."
|
||||||
echo " - supported architectures (--archs): $(echo $(join , ${BUILD_ARCHS_ALL[*]}) | sed 's/,/, /g')"
|
echo " - supported architectures (--archs): $(echo $(join , ${BUILD_ARCHS_ALL[*]}) | sed 's/,/, /g')"
|
||||||
|
echo " - minimum iOS version (--min-version): 16.0"
|
||||||
echo " - supported C++ STD libs (--stdlib): $(echo $(join , ${CPP_STD_LIB_LIST[*]}) | sed 's/,/, /g')"
|
echo " - supported C++ STD libs (--stdlib): $(echo $(join , ${CPP_STD_LIB_LIST[*]}) | sed 's/,/, /g')"
|
||||||
echo " - supported C++ standards (--std): $(echo $(join , ${CPP_STD_LIST[*]}) | sed 's/,/, /g')"
|
echo " - supported C++ standards (--std): $(echo $(join , ${CPP_STD_LIST[*]}) | sed 's/,/, /g')"
|
||||||
exit
|
exit
|
||||||
|
@ -196,3 +208,32 @@ if [[ "$DEPLOY_FAT" -eq 1 ]]; then
|
||||||
|
|
||||||
echo "[!] Done! The fat binaries can be found at $BUILD_DIR"
|
echo "[!] Done! The fat binaries can be found at $BUILD_DIR"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
make_xcframework()
|
||||||
|
{
|
||||||
|
LIB_NAME=$1
|
||||||
|
FRAMEWORK_PATH=$BUILD_DIR/$LIB_NAME.xcframework
|
||||||
|
|
||||||
|
ARGS = ""
|
||||||
|
for ARCH_TARGET in $DEPLOY_ARCHS; do
|
||||||
|
if [[ "$BUILD_SHARED_LIBS" =~ "ON" ]]; then
|
||||||
|
ARGS="$ARGS -library $BUILD_DIR/$ARCH_TARGET/$LIB_NAME.dylib -headers ./include "
|
||||||
|
else
|
||||||
|
ARGS="$ARGS -library $BUILD_DIR/$ARCH_TARGET/$LIB_NAME.a -headers ./include "
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
xcodebuild -create-xcframework $ARGS -output $FRAMEWORK_PATH
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ "$DEPLOY_XCFramework" -eq 1 ]]; then
|
||||||
|
echo '[+] Creating XCFramework ...'
|
||||||
|
|
||||||
|
if [[ "$BUILD_TYPE" =~ "Debug" ]]; then
|
||||||
|
make_xcframework 'libassimpd'
|
||||||
|
else
|
||||||
|
make_xcframework 'libassimp'
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[!] Done! The XCFramework can be found at $BUILD_DIR"
|
||||||
|
fi
|
Loading…
Reference in New Issue