From 957f037b8dba237bfa590c43fe5ee1d22bb5c527 Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Sat, 23 Mar 2024 14:48:36 +0800 Subject: [PATCH] add ios xcframework build --- .github/workflows/main.yml | 12 ++++-------- CMakeLists.txt | 14 +++++++++----- build_ios.sh | 18 ++++++++++++++++++ 3 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 build_ios.sh diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c421fbb8..de61d9f7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -146,16 +146,12 @@ jobs: runs-on: macos-latest steps: - uses: actions/checkout@v4 - - name: Compile Static Library + - name: Compile Frameworks run: | - git clone https://github.com/leetal/ios-cmake --depth 1 - mkdir build - cd build - cmake -G Xcode -DCMAKE_TOOLCHAIN_FILE=../ios-cmake/ios.toolchain.cmake -DPLATFORM=OS64COMBINED .. -DPK_BUILD_STATIC_LIB=ON -DPK_USE_CJSON=ON -DCMAKE_BUILD_TYPE=Release - cmake --build . --config Release - cd .. + git clone https://github.com/leetal/ios-cmake --depth 1 ~/ios-cmake + bash build_ios.sh mkdir -p output/ios - cp -r build/Release-iphoneos/pocketpy.framework output/ios/pocketpy.framework + cp -r build/pocketpy.xcframework output/ios/pocketpy.xcframework - uses: actions/upload-artifact@v3 with: path: output diff --git a/CMakeLists.txt b/CMakeLists.txt index 3cde91b6..71b0702d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,22 +49,26 @@ endif() if(PK_BUILD_SHARED_LIB) add_library(${PROJECT_NAME} SHARED ${POCKETPY_SRC}) elseif(PK_BUILD_STATIC_LIB) - add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC}) - - # build xcframework for iOS if(CMAKE_SYSTEM_NAME STREQUAL "iOS") + set( + HEADERS + ${CMAKE_CURRENT_LIST_DIR}/include/pocketpy/pocketpy_c.h + ${CMAKE_CURRENT_LIST_DIR}/include/pocketpy/export.h + ) + add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC} ${HEADERS}) set_target_properties(${PROJECT_NAME} PROPERTIES FRAMEWORK TRUE - FRAMEWORK_VERSION CXX MACOSX_FRAMEWORK_IDENTIFIER dev.pocketpy # MACOSX_FRAMEWORK_INFO_PLIST Info.plist # "current version" in semantic format in Mach-O binary file VERSION 1.4.3 # "compatibility version" in semantic format in Mach-O binary file SOVERSION 1.4.3 - PUBLIC_HEADER pocketpy.h + PUBLIC_HEADER "${HEADERS}" XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer" ) + else() + add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC}) endif() else() add_library(${PROJECT_NAME} SHARED ${POCKETPY_SRC}) diff --git a/build_ios.sh b/build_ios.sh new file mode 100644 index 00000000..9fb42d4c --- /dev/null +++ b/build_ios.sh @@ -0,0 +1,18 @@ +rm -rf build +mkdir build +cd build + +FLAGS="-DCMAKE_TOOLCHAIN_FILE=~/ios-cmake/ios.toolchain.cmake -DPK_BUILD_STATIC_LIB=ON -DDEPLOYMENT_TARGET=13.0" + +cmake -B os64 -G Xcode -DPLATFORM=OS64 $FLAGS .. +cmake --build os64 --config Release + +cmake -B simulator64 -G Xcode -DPLATFORM=SIMULATOR64 $FLAGS .. +cmake --build simulator64 --config Release + +xcodebuild -create-xcframework \ + -framework os64/Release-iphoneos/pocketpy.framework \ + -framework simulator64/Release-iphonesimulator/pocketpy.framework \ + -output pocketpy.xcframework + +