Pārlūkot izejas kodu

add ios xcframework build

blueloveTH 1 gadu atpakaļ
vecāks
revīzija
957f037b8d
3 mainītis faili ar 31 papildinājumiem un 13 dzēšanām
  1. 4 8
      .github/workflows/main.yml
  2. 9 5
      CMakeLists.txt
  3. 18 0
      build_ios.sh

+ 4 - 8
.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

+ 9 - 5
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})

+ 18 - 0
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
+
+