| | name: release |
| | on: |
| | push: |
| | tags: |
| | - '*' |
| |
|
| | env: |
| | DEVELOPER_DIR: /Applications/Xcode_13.4.1.app/Contents/Developer |
| | IOS_DEPLOYMENT_TARGET: '9.0' |
| | MAC_DEPLOYMENT_TARGET: '10.9' |
| | MAC_ARM64_DEPLOYMENT_TARGET: '11.0' |
| | MAC_CATALYST_DEPLOYMENT_TARGET: '13.1' |
| | ENABLE_BITCODE: OFF |
| | ENABLE_ARC: OFF |
| | ENABLE_VISIBILITY: OFF |
| | EMSCRIPTEN_VERSION: 3.1.28 |
| |
|
| | permissions: |
| | contents: read |
| |
|
| | jobs: |
| |
|
| | setup: |
| | permissions: |
| | contents: none |
| | runs-on: ubuntu-latest |
| | outputs: |
| | VERSION: ${{ steps.get_version.outputs.VERSION }} |
| | steps: |
| | - name: get-version |
| | id: get_version |
| | run: echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT |
| |
|
| | full-source: |
| | needs: [setup] |
| | runs-on: ubuntu-latest |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-full-source |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: package |
| | run: | |
| | rm -rf .git |
| | rm -f /tmp/${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r /tmp/${{ env.PACKAGENAME }}.zip . |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: /tmp/${{ env.PACKAGENAME }}.zip |
| |
|
| | ubuntu-2004: |
| | needs: [setup] |
| | runs-on: ubuntu-20.04 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-ubuntu-2004 |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: apt |
| | run: | |
| | sudo apt-get install -y libvulkan-dev libprotobuf-dev protobuf-compiler |
| | - name: build |
| | run: | |
| | mkdir build && cd build |
| | cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: package |
| | run: | |
| | rm -rf ${{ env.PACKAGENAME }} |
| | mkdir -p ${{ env.PACKAGENAME }} |
| | cp -a build/install/* ${{ env.PACKAGENAME }} |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | ubuntu-2004-shared: |
| | needs: [setup] |
| | runs-on: ubuntu-20.04 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-ubuntu-2004-shared |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: apt |
| | run: | |
| | sudo apt-get install -y libvulkan-dev libprotobuf-dev protobuf-compiler |
| | - name: build |
| | run: | |
| | mkdir build && cd build |
| | cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: package |
| | run: | |
| | rm -rf ${{ env.PACKAGENAME }} |
| | mkdir -p ${{ env.PACKAGENAME }} |
| | cp -a -P build/install/* ${{ env.PACKAGENAME }} |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | ubuntu-2204: |
| | needs: [setup] |
| | runs-on: ubuntu-22.04 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-ubuntu-2204 |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: apt |
| | run: | |
| | sudo apt-get install -y libvulkan-dev libprotobuf-dev protobuf-compiler |
| | - name: build |
| | run: | |
| | mkdir build && cd build |
| | cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: package |
| | run: | |
| | rm -rf ${{ env.PACKAGENAME }} |
| | mkdir -p ${{ env.PACKAGENAME }} |
| | cp -a build/install/* ${{ env.PACKAGENAME }} |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | ubuntu-2204-shared: |
| | needs: [setup] |
| | runs-on: ubuntu-22.04 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-ubuntu-2204-shared |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: apt |
| | run: | |
| | sudo apt-get install -y libvulkan-dev libprotobuf-dev protobuf-compiler |
| | - name: build |
| | run: | |
| | mkdir build && cd build |
| | cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: package |
| | run: | |
| | rm -rf ${{ env.PACKAGENAME }} |
| | mkdir -p ${{ env.PACKAGENAME }} |
| | cp -a -P build/install/* ${{ env.PACKAGENAME }} |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | openmp-macos: |
| | runs-on: macos-12 |
| | steps: |
| | - name: cache-openmp |
| | id: cache-openmp |
| | uses: actions/cache@v3 |
| | with: |
| | path: openmp-install |
| | key: openmp-macos-release-11.0.0-20230504 |
| | - name: checkout |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | uses: actions/checkout@v4 |
| | - name: openmp |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | wget https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/openmp-11.0.0.src.tar.xz |
| | tar -xf openmp-11.0.0.src.tar.xz |
| | cd openmp-11.0.0.src |
| | sed -i'' -e '/.size __kmp_unnamed_critical_addr/d' runtime/src/z_Linux_asm.S |
| | sed -i'' -e 's/__kmp_unnamed_critical_addr/___kmp_unnamed_critical_addr/g' runtime/src/z_Linux_asm.S |
| | - name: build-x86_64 |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC -DARCHS="x86_64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_ARM64 -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_ARM64_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: merge-fat-library |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | rm -rf $GITHUB_WORKSPACE/openmp-install |
| | mkdir -p $GITHUB_WORKSPACE/openmp-install |
| | cp -a openmp-11.0.0.src/build-x86_64/install/include $GITHUB_WORKSPACE/openmp-install |
| | mkdir -p $GITHUB_WORKSPACE/openmp-install/lib |
| | lipo -create \ |
| | openmp-11.0.0.src/build-x86_64/install/lib/libomp.a \ |
| | openmp-11.0.0.src/build-arm64/install/lib/libomp.a \ |
| | -o $GITHUB_WORKSPACE/openmp-install/lib/libomp.a |
| | - name: upload |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: openmp-macos |
| | path: openmp-install |
| |
|
| | macos: |
| | needs: [setup, openmp-macos] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-macos |
| | steps: |
| | - uses: actions/checkout@v4 |
| | - name: download-openmp-macos |
| | uses: actions/download-artifact@v3 |
| | with: |
| | name: openmp-macos |
| | path: openmp-macos |
| | - name: install-openmp |
| | run: | |
| | sudo cp openmp-macos/include/* $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include |
| | sudo cp openmp-macos/lib/libomp.a $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib |
| | - name: build-x86_64 |
| | run: | |
| | mkdir build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=MAC -DARCHS="x86_64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | run: | |
| | mkdir build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_ARM64 -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_ARM64_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: package-openmp |
| | run: | |
| | rm -rf openmp.framework |
| | mkdir -p openmp.framework/Versions/A/Headers |
| | mkdir -p openmp.framework/Versions/A/Resources |
| | ln -s A openmp.framework/Versions/Current |
| | ln -s Versions/Current/Headers openmp.framework/Headers |
| | ln -s Versions/Current/Resources openmp.framework/Resources |
| | ln -s Versions/Current/openmp openmp.framework/openmp |
| | cp openmp-macos/lib/libomp.a openmp.framework/Versions/A/openmp |
| | cp -a openmp-macos/include/* openmp.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/openmp/g' -e 's/__IDENTIFIER__/org.llvm.openmp/g' -e 's/__VERSION__/11.0/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist |
| | - name: package |
| | run: | |
| | rm -rf ncnn.framework |
| | mkdir -p ncnn.framework/Versions/A/Headers |
| | mkdir -p ncnn.framework/Versions/A/Resources |
| | ln -s A ncnn.framework/Versions/Current |
| | ln -s Versions/Current/Headers ncnn.framework/Headers |
| | ln -s Versions/Current/Resources ncnn.framework/Resources |
| | ln -s Versions/Current/ncnn ncnn.framework/ncnn |
| | lipo -create build-x86_64/install/lib/libncnn.a build-arm64/install/lib/libncnn.a -o ncnn.framework/Versions/A/ncnn |
| | cp -a build-x86_64/install/include/* ncnn.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/ncnn/g' -e 's/__IDENTIFIER__/com.tencent.ncnn/g' -e 's/__VERSION__/1.0/g' Info.plist > ncnn.framework/Versions/A/Resources/Info.plist |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.framework ncnn.framework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | macos-gpu: |
| | needs: [setup, openmp-macos] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-macos-vulkan |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: download-openmp-macos |
| | uses: actions/download-artifact@v3 |
| | with: |
| | name: openmp-macos |
| | path: openmp-macos |
| | - name: install-openmp |
| | run: | |
| | sudo cp openmp-macos/include/* $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include |
| | sudo cp openmp-macos/lib/libomp.a $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib |
| | - name: vulkansdk |
| | run: | |
| | wget https://sdk.lunarg.com/sdk/download/1.3.236.0/mac/vulkansdk-macos-1.3.236.0.dmg?Human=true -O vulkansdk-macos-1.3.236.0.dmg |
| | hdiutil attach vulkansdk-macos-1.3.236.0.dmg |
| | sudo /Volumes/vulkansdk-macos-1.3.236.0/InstallVulkan.app/Contents/MacOS/InstallVulkan --root $GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0 --accept-licenses --default-answer --confirm-command install |
| | hdiutil detach /Volumes/vulkansdk-macos-1.3.236.0 |
| | - name: build-x86_64 |
| | run: | |
| | export VULKAN_SDK=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/macOS |
| | mkdir build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=MAC -DARCHS="x86_64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libomp.a" \ |
| | -DVulkan_INCLUDE_DIR=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/include \ |
| | -DVulkan_LIBRARY=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/dylib/macOS/libMoltenVK.dylib \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | run: | |
| | export VULKAN_SDK=`pwd`/vulkansdk-macos-1.3.236.0/macOS |
| | mkdir build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_ARM64 -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_ARM64_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libomp.a" \ |
| | -DVulkan_INCLUDE_DIR=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/include \ |
| | -DVulkan_LIBRARY=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/dylib/macOS/libMoltenVK.dylib \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: package-openmp |
| | run: | |
| | rm -rf openmp.framework |
| | mkdir -p openmp.framework/Versions/A/Headers |
| | mkdir -p openmp.framework/Versions/A/Resources |
| | ln -s A openmp.framework/Versions/Current |
| | ln -s Versions/Current/Headers openmp.framework/Headers |
| | ln -s Versions/Current/Resources openmp.framework/Resources |
| | ln -s Versions/Current/openmp openmp.framework/openmp |
| | cp openmp-macos/lib/libomp.a openmp.framework/Versions/A/openmp |
| | cp -a openmp-macos/include/* openmp.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/openmp/g' -e 's/__IDENTIFIER__/org.llvm.openmp/g' -e 's/__VERSION__/11.0/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist |
| | - name: package-glslang |
| | run: | |
| | rm -rf glslang.framework |
| | mkdir -p glslang.framework/Versions/A/Headers |
| | mkdir -p glslang.framework/Versions/A/Resources |
| | ln -s A glslang.framework/Versions/Current |
| | ln -s Versions/Current/Headers glslang.framework/Headers |
| | ln -s Versions/Current/Resources glslang.framework/Resources |
| | ln -s Versions/Current/glslang glslang.framework/glslang |
| | libtool -static build-x86_64/install/lib/libglslang.a build-x86_64/install/lib/libMachineIndependent.a build-x86_64/install/lib/libGenericCodeGen.a build-x86_64/install/lib/libSPIRV.a build-x86_64/install/lib/libOGLCompiler.a build-x86_64/install/lib/libOSDependent.a -o build-x86_64/install/lib/libglslang_combined.a |
| | libtool -static build-arm64/install/lib/libglslang.a build-arm64/install/lib/libMachineIndependent.a build-arm64/install/lib/libGenericCodeGen.a build-arm64/install/lib/libSPIRV.a build-arm64/install/lib/libOGLCompiler.a build-arm64/install/lib/libOSDependent.a -o build-arm64/install/lib/libglslang_combined.a |
| | lipo -create build-x86_64/install/lib/libglslang_combined.a build-arm64/install/lib/libglslang_combined.a -o glslang.framework/Versions/A/glslang |
| | cp -a build-x86_64/install/include/glslang glslang.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/glslang/g' -e 's/__IDENTIFIER__/org.khronos.glslang/g' -e 's/__VERSION__/1.0/g' Info.plist > glslang.framework/Versions/A/Resources/Info.plist |
| | - name: package |
| | run: | |
| | rm -rf ncnn.framework |
| | mkdir -p ncnn.framework/Versions/A/Headers |
| | mkdir -p ncnn.framework/Versions/A/Resources |
| | ln -s A ncnn.framework/Versions/Current |
| | ln -s Versions/Current/Headers ncnn.framework/Headers |
| | ln -s Versions/Current/Resources ncnn.framework/Resources |
| | ln -s Versions/Current/ncnn ncnn.framework/ncnn |
| | lipo -create build-x86_64/install/lib/libncnn.a build-arm64/install/lib/libncnn.a -o ncnn.framework/Versions/A/ncnn |
| | cp -a build-x86_64/install/include/ncnn ncnn.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/ncnn/g' -e 's/__IDENTIFIER__/com.tencent.ncnn/g' -e 's/__VERSION__/1.0/g' Info.plist > ncnn.framework/Versions/A/Resources/Info.plist |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.framework glslang.framework ncnn.framework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | openmp-ios: |
| | runs-on: macos-12 |
| | steps: |
| | - name: cache-openmp |
| | id: cache-openmp |
| | uses: actions/cache@v3 |
| | with: |
| | path: openmp-install |
| | key: openmp-ios-release-11.0.0-20230504 |
| | - name: checkout |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | uses: actions/checkout@v4 |
| | - name: openmp |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | wget https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/openmp-11.0.0.src.tar.xz |
| | tar -xf openmp-11.0.0.src.tar.xz |
| | cd openmp-11.0.0.src |
| | sed -i'' -e '/.size __kmp_unnamed_critical_addr/d' runtime/src/z_Linux_asm.S |
| | sed -i'' -e 's/__kmp_unnamed_critical_addr/___kmp_unnamed_critical_addr/g' runtime/src/z_Linux_asm.S |
| | - name: build-armv7 |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir -p build-armv7 && cd build-armv7 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="armv7" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir -p build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS64 -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64e |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir -p build-arm64e && cd build-arm64e |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS64 -DARCHS="arm64e" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: merge-fat-library |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | rm -rf $GITHUB_WORKSPACE/openmp-install |
| | mkdir -p $GITHUB_WORKSPACE/openmp-install |
| | cp -a openmp-11.0.0.src/build-arm64/install/include $GITHUB_WORKSPACE/openmp-install |
| | mkdir -p $GITHUB_WORKSPACE/openmp-install/lib |
| | lipo -create \ |
| | openmp-11.0.0.src/build-armv7/install/lib/libomp.a \ |
| | openmp-11.0.0.src/build-arm64/install/lib/libomp.a \ |
| | openmp-11.0.0.src/build-arm64e/install/lib/libomp.a \ |
| | -o $GITHUB_WORKSPACE/openmp-install/lib/libomp.a |
| | - name: upload |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: openmp-ios |
| | path: openmp-install |
| |
|
| | ios: |
| | needs: [setup, openmp-ios] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-ios |
| | steps: |
| | - uses: actions/checkout@v4 |
| | - name: download-openmp-ios |
| | uses: actions/download-artifact@v3 |
| | with: |
| | name: openmp-ios |
| | path: openmp-ios |
| | - name: install-openmp |
| | run: | |
| | sudo cp openmp-ios/include/* $DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include |
| | sudo cp openmp-ios/lib/libomp.a $DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib |
| | - name: build-armv7 |
| | run: | |
| | mkdir build-armv7 && cd build-armv7 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="armv7" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | run: | |
| | mkdir build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=OS64 -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64e |
| | run: | |
| | mkdir build-arm64e && cd build-arm64e |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=OS64 -DARCHS="arm64e" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: package-openmp |
| | run: | |
| | rm -rf openmp.framework |
| | mkdir -p openmp.framework/Versions/A/Headers |
| | mkdir -p openmp.framework/Versions/A/Resources |
| | ln -s A openmp.framework/Versions/Current |
| | ln -s Versions/Current/Headers openmp.framework/Headers |
| | ln -s Versions/Current/Resources openmp.framework/Resources |
| | ln -s Versions/Current/openmp openmp.framework/openmp |
| | cp openmp-ios/lib/libomp.a openmp.framework/Versions/A/openmp |
| | cp -a openmp-ios/include/* openmp.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/openmp/g' -e 's/__IDENTIFIER__/org.llvm.openmp/g' -e 's/__VERSION__/11.0/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist |
| | - name: package |
| | run: | |
| | rm -rf ncnn.framework |
| | mkdir -p ncnn.framework/Versions/A/Headers |
| | mkdir -p ncnn.framework/Versions/A/Resources |
| | ln -s A ncnn.framework/Versions/Current |
| | ln -s Versions/Current/Headers ncnn.framework/Headers |
| | ln -s Versions/Current/Resources ncnn.framework/Resources |
| | ln -s Versions/Current/ncnn ncnn.framework/ncnn |
| | lipo -create \ |
| | build-armv7/install/lib/libncnn.a \ |
| | build-arm64/install/lib/libncnn.a \ |
| | build-arm64e/install/lib/libncnn.a \ |
| | -o ncnn.framework/Versions/A/ncnn |
| | cp -a build-arm64/install/include/* ncnn.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/ncnn/g' -e 's/__IDENTIFIER__/com.tencent.ncnn/g' -e 's/__VERSION__/1.0/g' Info.plist > ncnn.framework/Versions/A/Resources/Info.plist |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.framework ncnn.framework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | ios-gpu: |
| | needs: [setup, openmp-ios] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-ios-vulkan |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: download-openmp-ios |
| | uses: actions/download-artifact@v3 |
| | with: |
| | name: openmp-ios |
| | path: openmp-ios |
| | - name: install-openmp |
| | run: | |
| | sudo cp openmp-ios/include/* $DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include |
| | sudo cp openmp-ios/lib/libomp.a $DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib |
| | - name: vulkansdk |
| | run: | |
| | wget https://sdk.lunarg.com/sdk/download/1.3.236.0/mac/vulkansdk-macos-1.3.236.0.dmg?Human=true -O vulkansdk-macos-1.3.236.0.dmg |
| | hdiutil attach vulkansdk-macos-1.3.236.0.dmg |
| | sudo /Volumes/vulkansdk-macos-1.3.236.0/InstallVulkan.app/Contents/MacOS/InstallVulkan --root $GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0 --accept-licenses --default-answer --confirm-command install |
| | hdiutil detach /Volumes/vulkansdk-macos-1.3.236.0 |
| | - name: build-arm64 |
| | run: | |
| | export VULKAN_SDK=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/macOS |
| | mkdir build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=OS64 -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libomp.a" \ |
| | -DVulkan_INCLUDE_DIR=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/include \ |
| | -DVulkan_LIBRARY=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/iOS/dynamic/libMoltenVK.dylib \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64e |
| | run: | |
| | export VULKAN_SDK=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/macOS |
| | mkdir build-arm64e && cd build-arm64e |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=OS64 -DARCHS="arm64e" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libomp.a" \ |
| | -DVulkan_INCLUDE_DIR=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/include \ |
| | -DVulkan_LIBRARY=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/iOS/dynamic/libMoltenVK.dylib \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: package-openmp |
| | run: | |
| | rm -rf openmp.framework |
| | mkdir -p openmp.framework/Versions/A/Headers |
| | mkdir -p openmp.framework/Versions/A/Resources |
| | ln -s A openmp.framework/Versions/Current |
| | ln -s Versions/Current/Headers openmp.framework/Headers |
| | ln -s Versions/Current/Resources openmp.framework/Resources |
| | ln -s Versions/Current/openmp openmp.framework/openmp |
| | cp openmp-ios/lib/libomp.a openmp.framework/Versions/A/openmp |
| | cp -a openmp-ios/include/* openmp.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/openmp/g' -e 's/__IDENTIFIER__/org.llvm.openmp/g' -e 's/__VERSION__/11.0/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist |
| | - name: package-glslang |
| | run: | |
| | rm -rf glslang.framework |
| | mkdir -p glslang.framework/Versions/A/Headers |
| | mkdir -p glslang.framework/Versions/A/Resources |
| | ln -s A glslang.framework/Versions/Current |
| | ln -s Versions/Current/Headers glslang.framework/Headers |
| | ln -s Versions/Current/Resources glslang.framework/Resources |
| | ln -s Versions/Current/glslang glslang.framework/glslang |
| | libtool -static \ |
| | build-arm64/install/lib/libglslang.a \ |
| | build-arm64/install/lib/libMachineIndependent.a \ |
| | build-arm64/install/lib/libGenericCodeGen.a \ |
| | build-arm64/install/lib/libSPIRV.a \ |
| | build-arm64/install/lib/libOGLCompiler.a \ |
| | build-arm64/install/lib/libOSDependent.a \ |
| | -o build-arm64/install/lib/libglslang_combined.a |
| | libtool -static \ |
| | build-arm64e/install/lib/libglslang.a \ |
| | build-arm64e/install/lib/libMachineIndependent.a \ |
| | build-arm64e/install/lib/libGenericCodeGen.a \ |
| | build-arm64e/install/lib/libSPIRV.a \ |
| | build-arm64e/install/lib/libOGLCompiler.a \ |
| | build-arm64e/install/lib/libOSDependent.a \ |
| | -o build-arm64e/install/lib/libglslang_combined.a |
| | lipo -create \ |
| | build-arm64/install/lib/libglslang_combined.a \ |
| | build-arm64e/install/lib/libglslang_combined.a \ |
| | -o glslang.framework/Versions/A/glslang |
| | cp -a build-arm64/install/include/glslang glslang.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/glslang/g' -e 's/__IDENTIFIER__/org.khronos.glslang/g' -e 's/__VERSION__/1.0/g' Info.plist > glslang.framework/Versions/A/Resources/Info.plist |
| | - name: package |
| | run: | |
| | rm -rf ncnn.framework |
| | mkdir -p ncnn.framework/Versions/A/Headers |
| | mkdir -p ncnn.framework/Versions/A/Resources |
| | ln -s A ncnn.framework/Versions/Current |
| | ln -s Versions/Current/Headers ncnn.framework/Headers |
| | ln -s Versions/Current/Resources ncnn.framework/Resources |
| | ln -s Versions/Current/ncnn ncnn.framework/ncnn |
| | lipo -create \ |
| | build-arm64/install/lib/libncnn.a \ |
| | build-arm64e/install/lib/libncnn.a \ |
| | -o ncnn.framework/Versions/A/ncnn |
| | cp -a build-arm64/install/include/ncnn ncnn.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/ncnn/g' -e 's/__IDENTIFIER__/com.tencent.ncnn/g' -e 's/__VERSION__/1.0/g' Info.plist > ncnn.framework/Versions/A/Resources/Info.plist |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.framework glslang.framework ncnn.framework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | openmp-ios-bitcode: |
| | runs-on: macos-12 |
| | steps: |
| | - name: cache-openmp |
| | id: cache-openmp |
| | uses: actions/cache@v3 |
| | with: |
| | path: openmp-install |
| | key: openmp-ios-bitcode-release-11.0.0-20230504 |
| | - name: checkout |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | uses: actions/checkout@v4 |
| | - name: openmp |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | wget https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/openmp-11.0.0.src.tar.xz |
| | tar -xf openmp-11.0.0.src.tar.xz |
| | cd openmp-11.0.0.src |
| | sed -i'' -e '/.size __kmp_unnamed_critical_addr/d' runtime/src/z_Linux_asm.S |
| | sed -i'' -e 's/__kmp_unnamed_critical_addr/___kmp_unnamed_critical_addr/g' runtime/src/z_Linux_asm.S |
| | - name: build-armv7 |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir -p build-armv7 && cd build-armv7 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="armv7" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir -p build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS64 -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64e |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir -p build-arm64e && cd build-arm64e |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=OS64 -DARCHS="arm64e" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: merge-fat-library |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | rm -rf $GITHUB_WORKSPACE/openmp-install |
| | mkdir -p $GITHUB_WORKSPACE/openmp-install |
| | cp -a openmp-11.0.0.src/build-arm64/install/include $GITHUB_WORKSPACE/openmp-install |
| | mkdir -p $GITHUB_WORKSPACE/openmp-install/lib |
| | lipo -create \ |
| | openmp-11.0.0.src/build-armv7/install/lib/libomp.a \ |
| | openmp-11.0.0.src/build-arm64/install/lib/libomp.a \ |
| | openmp-11.0.0.src/build-arm64e/install/lib/libomp.a \ |
| | -o $GITHUB_WORKSPACE/openmp-install/lib/libomp.a |
| | - name: upload |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: openmp-ios-bitcode |
| | path: openmp-install |
| |
|
| | ios-bitcode: |
| | needs: [setup, openmp-ios-bitcode] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-ios-bitcode |
| | steps: |
| | - uses: actions/checkout@v4 |
| | - name: download-openmp-ios-bitcode |
| | uses: actions/download-artifact@v3 |
| | with: |
| | name: openmp-ios-bitcode |
| | path: openmp-ios-bitcode |
| | - name: install-openmp |
| | run: | |
| | sudo cp openmp-ios-bitcode/include/* $DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include |
| | sudo cp openmp-ios-bitcode/lib/libomp.a $DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib |
| | - name: build-armv7 |
| | run: | |
| | mkdir build-armv7 && cd build-armv7 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=OS -DARCHS="armv7" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | run: | |
| | mkdir build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=OS64 -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64e |
| | run: | |
| | mkdir build-arm64e && cd build-arm64e |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=OS64 -DARCHS="arm64e" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: package-openmp |
| | run: | |
| | rm -rf openmp.framework |
| | mkdir -p openmp.framework/Versions/A/Headers |
| | mkdir -p openmp.framework/Versions/A/Resources |
| | ln -s A openmp.framework/Versions/Current |
| | ln -s Versions/Current/Headers openmp.framework/Headers |
| | ln -s Versions/Current/Resources openmp.framework/Resources |
| | ln -s Versions/Current/openmp openmp.framework/openmp |
| | cp openmp-ios-bitcode/lib/libomp.a openmp.framework/Versions/A/openmp |
| | cp -a openmp-ios-bitcode/include/* openmp.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/openmp/g' -e 's/__IDENTIFIER__/org.llvm.openmp/g' -e 's/__VERSION__/11.0/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist |
| | - name: package |
| | run: | |
| | rm -rf ncnn.framework |
| | mkdir -p ncnn.framework/Versions/A/Headers |
| | mkdir -p ncnn.framework/Versions/A/Resources |
| | ln -s A ncnn.framework/Versions/Current |
| | ln -s Versions/Current/Headers ncnn.framework/Headers |
| | ln -s Versions/Current/Resources ncnn.framework/Resources |
| | ln -s Versions/Current/ncnn ncnn.framework/ncnn |
| | lipo -create \ |
| | build-armv7/install/lib/libncnn.a \ |
| | build-arm64/install/lib/libncnn.a \ |
| | build-arm64e/install/lib/libncnn.a \ |
| | -o ncnn.framework/Versions/A/ncnn |
| | cp -a build-arm64/install/include/* ncnn.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/ncnn/g' -e 's/__IDENTIFIER__/com.tencent.ncnn/g' -e 's/__VERSION__/1.0/g' Info.plist > ncnn.framework/Versions/A/Resources/Info.plist |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.framework ncnn.framework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | ios-gpu-bitcode: |
| | needs: [setup, openmp-ios-bitcode] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-ios-vulkan-bitcode |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: download-openmp-ios-bitcode |
| | uses: actions/download-artifact@v3 |
| | with: |
| | name: openmp-ios-bitcode |
| | path: openmp-ios-bitcode |
| | - name: install-openmp |
| | run: | |
| | sudo cp openmp-ios-bitcode/include/* $DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include |
| | sudo cp openmp-ios-bitcode/lib/libomp.a $DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib |
| | - name: vulkansdk |
| | run: | |
| | wget https://sdk.lunarg.com/sdk/download/1.3.236.0/mac/vulkansdk-macos-1.3.236.0.dmg?Human=true -O vulkansdk-macos-1.3.236.0.dmg |
| | hdiutil attach vulkansdk-macos-1.3.236.0.dmg |
| | sudo /Volumes/vulkansdk-macos-1.3.236.0/InstallVulkan.app/Contents/MacOS/InstallVulkan --root $GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0 --accept-licenses --default-answer --confirm-command install |
| | hdiutil detach /Volumes/vulkansdk-macos-1.3.236.0 |
| | - name: build-arm64 |
| | run: | |
| | export VULKAN_SDK=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/macOS |
| | mkdir build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=OS64 -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libomp.a" \ |
| | -DVulkan_INCLUDE_DIR=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/include \ |
| | -DVulkan_LIBRARY=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/iOS/dynamic/libMoltenVK.dylib \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64e |
| | run: | |
| | export VULKAN_SDK=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/macOS |
| | mkdir build-arm64e && cd build-arm64e |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=OS64 -DARCHS="arm64e" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libomp.a" \ |
| | -DVulkan_INCLUDE_DIR=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/include \ |
| | -DVulkan_LIBRARY=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/iOS/dynamic/libMoltenVK.dylib \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: package-openmp |
| | run: | |
| | rm -rf openmp.framework |
| | mkdir -p openmp.framework/Versions/A/Headers |
| | mkdir -p openmp.framework/Versions/A/Resources |
| | ln -s A openmp.framework/Versions/Current |
| | ln -s Versions/Current/Headers openmp.framework/Headers |
| | ln -s Versions/Current/Resources openmp.framework/Resources |
| | ln -s Versions/Current/openmp openmp.framework/openmp |
| | cp openmp-ios-bitcode/lib/libomp.a openmp.framework/Versions/A/openmp |
| | cp -a openmp-ios-bitcode/include/* openmp.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/openmp/g' -e 's/__IDENTIFIER__/org.llvm.openmp/g' -e 's/__VERSION__/11.0/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist |
| | - name: package-glslang |
| | run: | |
| | rm -rf glslang.framework |
| | mkdir -p glslang.framework/Versions/A/Headers |
| | mkdir -p glslang.framework/Versions/A/Resources |
| | ln -s A glslang.framework/Versions/Current |
| | ln -s Versions/Current/Headers glslang.framework/Headers |
| | ln -s Versions/Current/Resources glslang.framework/Resources |
| | ln -s Versions/Current/glslang glslang.framework/glslang |
| | libtool -static \ |
| | build-arm64/install/lib/libglslang.a \ |
| | build-arm64/install/lib/libMachineIndependent.a \ |
| | build-arm64/install/lib/libGenericCodeGen.a \ |
| | build-arm64/install/lib/libSPIRV.a \ |
| | build-arm64/install/lib/libOGLCompiler.a \ |
| | build-arm64/install/lib/libOSDependent.a \ |
| | -o build-arm64/install/lib/libglslang_combined.a |
| | libtool -static \ |
| | build-arm64e/install/lib/libglslang.a \ |
| | build-arm64e/install/lib/libMachineIndependent.a \ |
| | build-arm64e/install/lib/libGenericCodeGen.a \ |
| | build-arm64e/install/lib/libSPIRV.a \ |
| | build-arm64e/install/lib/libOGLCompiler.a \ |
| | build-arm64e/install/lib/libOSDependent.a \ |
| | -o build-arm64e/install/lib/libglslang_combined.a |
| | lipo -create \ |
| | build-arm64/install/lib/libglslang_combined.a \ |
| | build-arm64e/install/lib/libglslang_combined.a \ |
| | -o glslang.framework/Versions/A/glslang |
| | cp -a build-arm64/install/include/glslang glslang.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/glslang/g' -e 's/__IDENTIFIER__/org.khronos.glslang/g' -e 's/__VERSION__/1.0/g' Info.plist > glslang.framework/Versions/A/Resources/Info.plist |
| | - name: package |
| | run: | |
| | rm -rf ncnn.framework |
| | mkdir -p ncnn.framework/Versions/A/Headers |
| | mkdir -p ncnn.framework/Versions/A/Resources |
| | ln -s A ncnn.framework/Versions/Current |
| | ln -s Versions/Current/Headers ncnn.framework/Headers |
| | ln -s Versions/Current/Resources ncnn.framework/Resources |
| | ln -s Versions/Current/ncnn ncnn.framework/ncnn |
| | lipo -create \ |
| | build-arm64/install/lib/libncnn.a \ |
| | build-arm64e/install/lib/libncnn.a \ |
| | -o ncnn.framework/Versions/A/ncnn |
| | cp -a build-arm64/install/include/ncnn ncnn.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/ncnn/g' -e 's/__IDENTIFIER__/com.tencent.ncnn/g' -e 's/__VERSION__/1.0/g' Info.plist > ncnn.framework/Versions/A/Resources/Info.plist |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.framework glslang.framework ncnn.framework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | openmp-ios-simulator: |
| | runs-on: macos-12 |
| | steps: |
| | - name: cache-openmp |
| | id: cache-openmp |
| | uses: actions/cache@v3 |
| | with: |
| | path: openmp-install |
| | key: openmp-ios-simulator-release-11.0.0-20230504 |
| | - name: checkout |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | uses: actions/checkout@v4 |
| | - name: openmp |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | wget https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/openmp-11.0.0.src.tar.xz |
| | tar -xf openmp-11.0.0.src.tar.xz |
| | cd openmp-11.0.0.src |
| | sed -i'' -e '/.size __kmp_unnamed_critical_addr/d' runtime/src/z_Linux_asm.S |
| | sed -i'' -e 's/__kmp_unnamed_critical_addr/___kmp_unnamed_critical_addr/g' runtime/src/z_Linux_asm.S |
| | - name: build-i386 |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir -p build-i386 && cd build-i386 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="i386" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-x86_64 |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir -p build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR64 -DARCHS="x86_64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir -p build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATORARM64 -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: merge-fat-library |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | rm -rf $GITHUB_WORKSPACE/openmp-install |
| | mkdir -p $GITHUB_WORKSPACE/openmp-install |
| | cp -a openmp-11.0.0.src/build-x86_64/install/include $GITHUB_WORKSPACE/openmp-install |
| | mkdir -p $GITHUB_WORKSPACE/openmp-install/lib |
| | lipo -create \ |
| | openmp-11.0.0.src/build-i386/install/lib/libomp.a \ |
| | openmp-11.0.0.src/build-x86_64/install/lib/libomp.a \ |
| | openmp-11.0.0.src/build-arm64/install/lib/libomp.a \ |
| | -o $GITHUB_WORKSPACE/openmp-install/lib/libomp.a |
| | - name: upload |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: openmp-ios-simulator |
| | path: openmp-install |
| |
|
| | ios-simulator: |
| | needs: [setup, openmp-ios-simulator] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-ios-simulator |
| | steps: |
| | - uses: actions/checkout@v4 |
| | - name: download-openmp-ios |
| | uses: actions/download-artifact@v3 |
| | with: |
| | name: openmp-ios-simulator |
| | path: openmp-ios-simulator |
| | - name: install-openmp |
| | run: | |
| | sudo cp openmp-ios-simulator/include/* $DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include |
| | sudo cp openmp-ios-simulator/lib/libomp.a $DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib |
| | - name: build-i386 |
| | run: | |
| | mkdir build-i386 && cd build-i386 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="i386" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-x86_64 |
| | run: | |
| | mkdir build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR64 -DARCHS="x86_64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | run: | |
| | mkdir build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATORARM64 -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: package-openmp |
| | run: | |
| | rm -rf openmp.framework |
| | mkdir -p openmp.framework/Versions/A/Headers |
| | mkdir -p openmp.framework/Versions/A/Resources |
| | ln -s A openmp.framework/Versions/Current |
| | ln -s Versions/Current/Headers openmp.framework/Headers |
| | ln -s Versions/Current/Resources openmp.framework/Resources |
| | ln -s Versions/Current/openmp openmp.framework/openmp |
| | cp openmp-ios-simulator/lib/libomp.a openmp.framework/Versions/A/openmp |
| | cp -a openmp-ios-simulator/include/* openmp.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/openmp/g' -e 's/__IDENTIFIER__/org.llvm.openmp/g' -e 's/__VERSION__/11.0/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist |
| | - name: package |
| | run: | |
| | rm -rf ncnn.framework |
| | mkdir -p ncnn.framework/Versions/A/Headers |
| | mkdir -p ncnn.framework/Versions/A/Resources |
| | ln -s A ncnn.framework/Versions/Current |
| | ln -s Versions/Current/Headers ncnn.framework/Headers |
| | ln -s Versions/Current/Resources ncnn.framework/Resources |
| | ln -s Versions/Current/ncnn ncnn.framework/ncnn |
| | lipo -create \ |
| | build-i386/install/lib/libncnn.a \ |
| | build-x86_64/install/lib/libncnn.a \ |
| | build-arm64/install/lib/libncnn.a \ |
| | -o ncnn.framework/Versions/A/ncnn |
| | cp -a build-x86_64/install/include/* ncnn.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/ncnn/g' -e 's/__IDENTIFIER__/com.tencent.ncnn/g' -e 's/__VERSION__/1.0/g' Info.plist > ncnn.framework/Versions/A/Resources/Info.plist |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.framework ncnn.framework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | ios-simulator-gpu: |
| | needs: [setup, openmp-ios-simulator] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-ios-simulator-vulkan |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: download-openmp-ios-simulator |
| | uses: actions/download-artifact@v3 |
| | with: |
| | name: openmp-ios-simulator |
| | path: openmp-ios-simulator |
| | - name: install-openmp |
| | run: | |
| | sudo cp openmp-ios-simulator/include/* $DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include |
| | sudo cp openmp-ios-simulator/lib/libomp.a $DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib |
| | - name: vulkansdk |
| | run: | |
| | wget https://sdk.lunarg.com/sdk/download/1.3.236.0/mac/vulkansdk-macos-1.3.236.0.dmg?Human=true -O vulkansdk-macos-1.3.236.0.dmg |
| | hdiutil attach vulkansdk-macos-1.3.236.0.dmg |
| | sudo /Volumes/vulkansdk-macos-1.3.236.0/InstallVulkan.app/Contents/MacOS/InstallVulkan --root $GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0 --accept-licenses --default-answer --confirm-command install |
| | hdiutil detach /Volumes/vulkansdk-macos-1.3.236.0 |
| | - name: build-x86_64 |
| | run: | |
| | export VULKAN_SDK=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/macOS |
| | mkdir build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR64 -DARCHS="x86_64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libomp.a" \ |
| | -DVulkan_INCLUDE_DIR=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/include \ |
| | -DVulkan_LIBRARY=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/dylib/macOS/libMoltenVK.dylib \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | run: | |
| | export VULKAN_SDK=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/macOS |
| | mkdir build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATORARM64 -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libomp.a" \ |
| | -DVulkan_INCLUDE_DIR=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/include \ |
| | -DVulkan_LIBRARY=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/dylib/macOS/libMoltenVK.dylib \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: package-openmp |
| | run: | |
| | rm -rf openmp.framework |
| | mkdir -p openmp.framework/Versions/A/Headers |
| | mkdir -p openmp.framework/Versions/A/Resources |
| | ln -s A openmp.framework/Versions/Current |
| | ln -s Versions/Current/Headers openmp.framework/Headers |
| | ln -s Versions/Current/Resources openmp.framework/Resources |
| | ln -s Versions/Current/openmp openmp.framework/openmp |
| | cp openmp-ios-simulator/lib/libomp.a openmp.framework/Versions/A/openmp |
| | cp -a openmp-ios-simulator/include/* openmp.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/openmp/g' -e 's/__IDENTIFIER__/org.llvm.openmp/g' -e 's/__VERSION__/11.0/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist |
| | - name: package-glslang |
| | run: | |
| | rm -rf glslang.framework |
| | mkdir -p glslang.framework/Versions/A/Headers |
| | mkdir -p glslang.framework/Versions/A/Resources |
| | ln -s A glslang.framework/Versions/Current |
| | ln -s Versions/Current/Headers glslang.framework/Headers |
| | ln -s Versions/Current/Resources glslang.framework/Resources |
| | ln -s Versions/Current/glslang glslang.framework/glslang |
| | libtool -static \ |
| | build-x86_64/install/lib/libglslang.a \ |
| | build-x86_64/install/lib/libMachineIndependent.a \ |
| | build-x86_64/install/lib/libGenericCodeGen.a \ |
| | build-x86_64/install/lib/libSPIRV.a \ |
| | build-x86_64/install/lib/libOGLCompiler.a \ |
| | build-x86_64/install/lib/libOSDependent.a \ |
| | -o build-x86_64/install/lib/libglslang_combined.a |
| | libtool -static \ |
| | build-arm64/install/lib/libglslang.a \ |
| | build-arm64/install/lib/libMachineIndependent.a \ |
| | build-arm64/install/lib/libGenericCodeGen.a \ |
| | build-arm64/install/lib/libSPIRV.a \ |
| | build-arm64/install/lib/libOGLCompiler.a \ |
| | build-arm64/install/lib/libOSDependent.a \ |
| | -o build-arm64/install/lib/libglslang_combined.a |
| | lipo -create \ |
| | build-x86_64/install/lib/libglslang_combined.a \ |
| | build-arm64/install/lib/libglslang_combined.a \ |
| | -o glslang.framework/Versions/A/glslang |
| | cp -a build-x86_64/install/include/glslang glslang.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/glslang/g' -e 's/__IDENTIFIER__/org.khronos.glslang/g' -e 's/__VERSION__/1.0/g' Info.plist > glslang.framework/Versions/A/Resources/Info.plist |
| | - name: package |
| | run: | |
| | rm -rf ncnn.framework |
| | mkdir -p ncnn.framework/Versions/A/Headers |
| | mkdir -p ncnn.framework/Versions/A/Resources |
| | ln -s A ncnn.framework/Versions/Current |
| | ln -s Versions/Current/Headers ncnn.framework/Headers |
| | ln -s Versions/Current/Resources ncnn.framework/Resources |
| | ln -s Versions/Current/ncnn ncnn.framework/ncnn |
| | lipo -create \ |
| | build-x86_64/install/lib/libncnn.a \ |
| | build-arm64/install/lib/libncnn.a \ |
| | -o ncnn.framework/Versions/A/ncnn |
| | cp -a build-x86_64/install/include/ncnn ncnn.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/ncnn/g' -e 's/__IDENTIFIER__/com.tencent.ncnn/g' -e 's/__VERSION__/1.0/g' Info.plist > ncnn.framework/Versions/A/Resources/Info.plist |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.framework glslang.framework ncnn.framework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | openmp-ios-simulator-bitcode: |
| | runs-on: macos-12 |
| | steps: |
| | - name: cache-openmp |
| | id: cache-openmp |
| | uses: actions/cache@v3 |
| | with: |
| | path: openmp-install |
| | key: openmp-ios-simulator-bitcode-release-11.0.0-20230504 |
| | - name: checkout |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | uses: actions/checkout@v4 |
| | - name: openmp |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | wget https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/openmp-11.0.0.src.tar.xz |
| | tar -xf openmp-11.0.0.src.tar.xz |
| | cd openmp-11.0.0.src |
| | sed -i'' -e '/.size __kmp_unnamed_critical_addr/d' runtime/src/z_Linux_asm.S |
| | sed -i'' -e 's/__kmp_unnamed_critical_addr/___kmp_unnamed_critical_addr/g' runtime/src/z_Linux_asm.S |
| | - name: build-i386 |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir -p build-i386 && cd build-i386 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="i386" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-x86_64 |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir -p build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR64 -DARCHS="x86_64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir -p build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATORARM64 -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: merge-fat-library |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | rm -rf $GITHUB_WORKSPACE/openmp-install |
| | mkdir -p $GITHUB_WORKSPACE/openmp-install |
| | cp -a openmp-11.0.0.src/build-x86_64/install/include $GITHUB_WORKSPACE/openmp-install |
| | mkdir -p $GITHUB_WORKSPACE/openmp-install/lib |
| | lipo -create \ |
| | openmp-11.0.0.src/build-i386/install/lib/libomp.a \ |
| | openmp-11.0.0.src/build-x86_64/install/lib/libomp.a \ |
| | openmp-11.0.0.src/build-arm64/install/lib/libomp.a \ |
| | -o $GITHUB_WORKSPACE/openmp-install/lib/libomp.a |
| | - name: upload |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: openmp-ios-simulator-bitcode |
| | path: openmp-install |
| |
|
| | ios-simulator-bitcode: |
| | needs: [setup, openmp-ios-simulator-bitcode] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-ios-simulator-bitcode |
| | steps: |
| | - uses: actions/checkout@v4 |
| | - name: download-openmp-ios |
| | uses: actions/download-artifact@v3 |
| | with: |
| | name: openmp-ios-simulator-bitcode |
| | path: openmp-ios-simulator-bitcode |
| | - name: install-openmp |
| | run: | |
| | sudo cp openmp-ios-simulator-bitcode/include/* $DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include |
| | sudo cp openmp-ios-simulator-bitcode/lib/libomp.a $DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib |
| | - name: build-i386 |
| | run: | |
| | mkdir build-i386 && cd build-i386 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR -DARCHS="i386" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-x86_64 |
| | run: | |
| | mkdir build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR64 -DARCHS="x86_64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | run: | |
| | mkdir build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATORARM64 -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: package-openmp |
| | run: | |
| | rm -rf openmp.framework |
| | mkdir -p openmp.framework/Versions/A/Headers |
| | mkdir -p openmp.framework/Versions/A/Resources |
| | ln -s A openmp.framework/Versions/Current |
| | ln -s Versions/Current/Headers openmp.framework/Headers |
| | ln -s Versions/Current/Resources openmp.framework/Resources |
| | ln -s Versions/Current/openmp openmp.framework/openmp |
| | cp openmp-ios-simulator-bitcode/lib/libomp.a openmp.framework/Versions/A/openmp |
| | cp -a openmp-ios-simulator-bitcode/include/* openmp.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/openmp/g' -e 's/__IDENTIFIER__/org.llvm.openmp/g' -e 's/__VERSION__/11.0/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist |
| | - name: package |
| | run: | |
| | rm -rf ncnn.framework |
| | mkdir -p ncnn.framework/Versions/A/Headers |
| | mkdir -p ncnn.framework/Versions/A/Resources |
| | ln -s A ncnn.framework/Versions/Current |
| | ln -s Versions/Current/Headers ncnn.framework/Headers |
| | ln -s Versions/Current/Resources ncnn.framework/Resources |
| | ln -s Versions/Current/ncnn ncnn.framework/ncnn |
| | lipo -create \ |
| | build-i386/install/lib/libncnn.a \ |
| | build-x86_64/install/lib/libncnn.a \ |
| | build-arm64/install/lib/libncnn.a \ |
| | -o ncnn.framework/Versions/A/ncnn |
| | cp -a build-x86_64/install/include/* ncnn.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/ncnn/g' -e 's/__IDENTIFIER__/com.tencent.ncnn/g' -e 's/__VERSION__/1.0/g' Info.plist > ncnn.framework/Versions/A/Resources/Info.plist |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.framework ncnn.framework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | ios-simulator-gpu-bitcode: |
| | needs: [setup, openmp-ios-simulator-bitcode] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-ios-simulator-vulkan-bitcode |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: download-openmp-ios-simulator |
| | uses: actions/download-artifact@v3 |
| | with: |
| | name: openmp-ios-simulator-bitcode |
| | path: openmp-ios-simulator-bitcode |
| | - name: install-openmp |
| | run: | |
| | sudo cp openmp-ios-simulator-bitcode/include/* $DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include |
| | sudo cp openmp-ios-simulator-bitcode/lib/libomp.a $DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib |
| | - name: vulkansdk |
| | run: | |
| | wget https://sdk.lunarg.com/sdk/download/1.3.236.0/mac/vulkansdk-macos-1.3.236.0.dmg?Human=true -O vulkansdk-macos-1.3.236.0.dmg |
| | hdiutil attach vulkansdk-macos-1.3.236.0.dmg |
| | sudo /Volumes/vulkansdk-macos-1.3.236.0/InstallVulkan.app/Contents/MacOS/InstallVulkan --root $GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0 --accept-licenses --default-answer --confirm-command install |
| | hdiutil detach /Volumes/vulkansdk-macos-1.3.236.0 |
| | - name: build-x86_64 |
| | run: | |
| | export VULKAN_SDK=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/macOS |
| | mkdir build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATOR64 -DARCHS="x86_64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libomp.a" \ |
| | -DVulkan_INCLUDE_DIR=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/include \ |
| | -DVulkan_LIBRARY=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/dylib/macOS/libMoltenVK.dylib \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | run: | |
| | export VULKAN_SDK=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/macOS |
| | mkdir build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=SIMULATORARM64 -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libomp.a" \ |
| | -DVulkan_INCLUDE_DIR=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/include \ |
| | -DVulkan_LIBRARY=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/dylib/macOS/libMoltenVK.dylib \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: package-openmp |
| | run: | |
| | rm -rf openmp.framework |
| | mkdir -p openmp.framework/Versions/A/Headers |
| | mkdir -p openmp.framework/Versions/A/Resources |
| | ln -s A openmp.framework/Versions/Current |
| | ln -s Versions/Current/Headers openmp.framework/Headers |
| | ln -s Versions/Current/Resources openmp.framework/Resources |
| | ln -s Versions/Current/openmp openmp.framework/openmp |
| | cp openmp-ios-simulator-bitcode/lib/libomp.a openmp.framework/Versions/A/openmp |
| | cp -a openmp-ios-simulator-bitcode/include/* openmp.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/openmp/g' -e 's/__IDENTIFIER__/org.llvm.openmp/g' -e 's/__VERSION__/11.0/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist |
| | - name: package-glslang |
| | run: | |
| | rm -rf glslang.framework |
| | mkdir -p glslang.framework/Versions/A/Headers |
| | mkdir -p glslang.framework/Versions/A/Resources |
| | ln -s A glslang.framework/Versions/Current |
| | ln -s Versions/Current/Headers glslang.framework/Headers |
| | ln -s Versions/Current/Resources glslang.framework/Resources |
| | ln -s Versions/Current/glslang glslang.framework/glslang |
| | libtool -static \ |
| | build-x86_64/install/lib/libglslang.a \ |
| | build-x86_64/install/lib/libMachineIndependent.a \ |
| | build-x86_64/install/lib/libGenericCodeGen.a \ |
| | build-x86_64/install/lib/libSPIRV.a \ |
| | build-x86_64/install/lib/libOGLCompiler.a \ |
| | build-x86_64/install/lib/libOSDependent.a \ |
| | -o build-x86_64/install/lib/libglslang_combined.a |
| | libtool -static \ |
| | build-arm64/install/lib/libglslang.a \ |
| | build-arm64/install/lib/libMachineIndependent.a \ |
| | build-arm64/install/lib/libGenericCodeGen.a \ |
| | build-arm64/install/lib/libSPIRV.a \ |
| | build-arm64/install/lib/libOGLCompiler.a \ |
| | build-arm64/install/lib/libOSDependent.a \ |
| | -o build-arm64/install/lib/libglslang_combined.a |
| | lipo -create \ |
| | build-x86_64/install/lib/libglslang_combined.a \ |
| | build-arm64/install/lib/libglslang_combined.a \ |
| | -o glslang.framework/Versions/A/glslang |
| | cp -a build-x86_64/install/include/glslang glslang.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/glslang/g' -e 's/__IDENTIFIER__/org.khronos.glslang/g' -e 's/__VERSION__/1.0/g' Info.plist > glslang.framework/Versions/A/Resources/Info.plist |
| | - name: package |
| | run: | |
| | rm -rf ncnn.framework |
| | mkdir -p ncnn.framework/Versions/A/Headers |
| | mkdir -p ncnn.framework/Versions/A/Resources |
| | ln -s A ncnn.framework/Versions/Current |
| | ln -s Versions/Current/Headers ncnn.framework/Headers |
| | ln -s Versions/Current/Resources ncnn.framework/Resources |
| | ln -s Versions/Current/ncnn ncnn.framework/ncnn |
| | lipo -create \ |
| | build-x86_64/install/lib/libncnn.a \ |
| | build-arm64/install/lib/libncnn.a \ |
| | -o ncnn.framework/Versions/A/ncnn |
| | cp -a build-x86_64/install/include/ncnn ncnn.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/ncnn/g' -e 's/__IDENTIFIER__/com.tencent.ncnn/g' -e 's/__VERSION__/1.0/g' Info.plist > ncnn.framework/Versions/A/Resources/Info.plist |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.framework glslang.framework ncnn.framework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | openmp-mac-catalyst: |
| | runs-on: macos-12 |
| | steps: |
| | - name: cache-openmp |
| | id: cache-openmp |
| | uses: actions/cache@v3 |
| | with: |
| | path: openmp-install |
| | key: openmp-mac-catalyst-release-11.0.0-20230504 |
| | - name: checkout |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | uses: actions/checkout@v4 |
| | - name: openmp |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | wget https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/openmp-11.0.0.src.tar.xz |
| | tar -xf openmp-11.0.0.src.tar.xz |
| | cd openmp-11.0.0.src |
| | sed -i'' -e '/.size __kmp_unnamed_critical_addr/d' runtime/src/z_Linux_asm.S |
| | sed -i'' -e 's/__kmp_unnamed_critical_addr/___kmp_unnamed_critical_addr/g' runtime/src/z_Linux_asm.S |
| | - name: build-x86_64 |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir -p build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir -p build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: merge-fat-library |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | rm -rf $GITHUB_WORKSPACE/openmp-install |
| | mkdir -p $GITHUB_WORKSPACE/openmp-install |
| | cp -a openmp-11.0.0.src/build-x86_64/install/include $GITHUB_WORKSPACE/openmp-install |
| | mkdir -p $GITHUB_WORKSPACE/openmp-install/lib |
| | lipo -create \ |
| | openmp-11.0.0.src/build-x86_64/install/lib/libomp.a \ |
| | openmp-11.0.0.src/build-arm64/install/lib/libomp.a \ |
| | -o $GITHUB_WORKSPACE/openmp-install/lib/libomp.a |
| | - name: upload |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: openmp-mac-catalyst |
| | path: openmp-install |
| |
|
| | mac-catalyst: |
| | needs: [setup, openmp-mac-catalyst] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-mac-catalyst |
| | steps: |
| | - uses: actions/checkout@v4 |
| | - name: download-openmp-ios |
| | uses: actions/download-artifact@v3 |
| | with: |
| | name: openmp-mac-catalyst |
| | path: openmp-mac-catalyst |
| | - name: install-openmp |
| | run: | |
| | sudo cp openmp-mac-catalyst/include/* $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include |
| | sudo cp openmp-mac-catalyst/lib/libomp.a $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib |
| | - name: build-x86_64 |
| | run: | |
| | mkdir build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | run: | |
| | mkdir build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: package-openmp |
| | run: | |
| | rm -rf openmp.framework |
| | mkdir -p openmp.framework/Versions/A/Headers |
| | mkdir -p openmp.framework/Versions/A/Resources |
| | ln -s A openmp.framework/Versions/Current |
| | ln -s Versions/Current/Headers openmp.framework/Headers |
| | ln -s Versions/Current/Resources openmp.framework/Resources |
| | ln -s Versions/Current/openmp openmp.framework/openmp |
| | cp openmp-mac-catalyst/lib/libomp.a openmp.framework/Versions/A/openmp |
| | cp -a openmp-mac-catalyst/include/* openmp.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/openmp/g' -e 's/__IDENTIFIER__/org.llvm.openmp/g' -e 's/__VERSION__/11.0/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist |
| | - name: package |
| | run: | |
| | rm -rf ncnn.framework |
| | mkdir -p ncnn.framework/Versions/A/Headers |
| | mkdir -p ncnn.framework/Versions/A/Resources |
| | ln -s A ncnn.framework/Versions/Current |
| | ln -s Versions/Current/Headers ncnn.framework/Headers |
| | ln -s Versions/Current/Resources ncnn.framework/Resources |
| | ln -s Versions/Current/ncnn ncnn.framework/ncnn |
| | lipo -create \ |
| | build-x86_64/install/lib/libncnn.a \ |
| | build-arm64/install/lib/libncnn.a \ |
| | -o ncnn.framework/Versions/A/ncnn |
| | cp -a build-x86_64/install/include/* ncnn.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/ncnn/g' -e 's/__IDENTIFIER__/com.tencent.ncnn/g' -e 's/__VERSION__/1.0/g' Info.plist > ncnn.framework/Versions/A/Resources/Info.plist |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.framework ncnn.framework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | mac-catalyst-gpu: |
| | needs: [setup, openmp-mac-catalyst] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-mac-catalyst-vulkan |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: download-openmp-mac-catalyst |
| | uses: actions/download-artifact@v3 |
| | with: |
| | name: openmp-mac-catalyst |
| | path: openmp-mac-catalyst |
| | - name: install-openmp |
| | run: | |
| | sudo cp openmp-mac-catalyst/include/* $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include |
| | sudo cp openmp-mac-catalyst/lib/libomp.a $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib |
| | - name: vulkansdk |
| | run: | |
| | wget https://sdk.lunarg.com/sdk/download/1.3.236.0/mac/vulkansdk-macos-1.3.236.0.dmg?Human=true -O vulkansdk-macos-1.3.236.0.dmg |
| | hdiutil attach vulkansdk-macos-1.3.236.0.dmg |
| | sudo /Volumes/vulkansdk-macos-1.3.236.0/InstallVulkan.app/Contents/MacOS/InstallVulkan --root $GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0 --accept-licenses --default-answer --confirm-command install |
| | hdiutil detach /Volumes/vulkansdk-macos-1.3.236.0 |
| | - name: build-x86_64 |
| | run: | |
| | export VULKAN_SDK=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/macOS |
| | mkdir build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libomp.a" \ |
| | -DVulkan_INCLUDE_DIR=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/include \ |
| | -DVulkan_LIBRARY=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/dylib/macOS/libMoltenVK.dylib \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | run: | |
| | export VULKAN_SDK=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/macOS |
| | mkdir build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libomp.a" \ |
| | -DVulkan_INCLUDE_DIR=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/include \ |
| | -DVulkan_LIBRARY=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/dylib/macOS/libMoltenVK.dylib \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: package-openmp |
| | run: | |
| | rm -rf openmp.framework |
| | mkdir -p openmp.framework/Versions/A/Headers |
| | mkdir -p openmp.framework/Versions/A/Resources |
| | ln -s A openmp.framework/Versions/Current |
| | ln -s Versions/Current/Headers openmp.framework/Headers |
| | ln -s Versions/Current/Resources openmp.framework/Resources |
| | ln -s Versions/Current/openmp openmp.framework/openmp |
| | cp openmp-mac-catalyst/lib/libomp.a openmp.framework/Versions/A/openmp |
| | cp -a openmp-mac-catalyst/include/* openmp.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/openmp/g' -e 's/__IDENTIFIER__/org.llvm.openmp/g' -e 's/__VERSION__/11.0/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist |
| | - name: package-glslang |
| | run: | |
| | rm -rf glslang.framework |
| | mkdir -p glslang.framework/Versions/A/Headers |
| | mkdir -p glslang.framework/Versions/A/Resources |
| | ln -s A glslang.framework/Versions/Current |
| | ln -s Versions/Current/Headers glslang.framework/Headers |
| | ln -s Versions/Current/Resources glslang.framework/Resources |
| | ln -s Versions/Current/glslang glslang.framework/glslang |
| | libtool -static \ |
| | build-x86_64/install/lib/libglslang.a \ |
| | build-x86_64/install/lib/libMachineIndependent.a \ |
| | build-x86_64/install/lib/libGenericCodeGen.a \ |
| | build-x86_64/install/lib/libSPIRV.a \ |
| | build-x86_64/install/lib/libOGLCompiler.a \ |
| | build-x86_64/install/lib/libOSDependent.a \ |
| | -o build-x86_64/install/lib/libglslang_combined.a |
| | libtool -static \ |
| | build-arm64/install/lib/libglslang.a \ |
| | build-arm64/install/lib/libMachineIndependent.a \ |
| | build-arm64/install/lib/libGenericCodeGen.a \ |
| | build-arm64/install/lib/libSPIRV.a \ |
| | build-arm64/install/lib/libOGLCompiler.a \ |
| | build-arm64/install/lib/libOSDependent.a \ |
| | -o build-arm64/install/lib/libglslang_combined.a |
| | lipo -create \ |
| | build-x86_64/install/lib/libglslang_combined.a \ |
| | build-arm64/install/lib/libglslang_combined.a \ |
| | -o glslang.framework/Versions/A/glslang |
| | cp -a build-x86_64/install/include/glslang glslang.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/glslang/g' -e 's/__IDENTIFIER__/org.khronos.glslang/g' -e 's/__VERSION__/1.0/g' Info.plist > glslang.framework/Versions/A/Resources/Info.plist |
| | - name: package |
| | run: | |
| | rm -rf ncnn.framework |
| | mkdir -p ncnn.framework/Versions/A/Headers |
| | mkdir -p ncnn.framework/Versions/A/Resources |
| | ln -s A ncnn.framework/Versions/Current |
| | ln -s Versions/Current/Headers ncnn.framework/Headers |
| | ln -s Versions/Current/Resources ncnn.framework/Resources |
| | ln -s Versions/Current/ncnn ncnn.framework/ncnn |
| | lipo -create \ |
| | build-x86_64/install/lib/libncnn.a \ |
| | build-arm64/install/lib/libncnn.a \ |
| | -o ncnn.framework/Versions/A/ncnn |
| | cp -a build-x86_64/install/include/ncnn ncnn.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/ncnn/g' -e 's/__IDENTIFIER__/com.tencent.ncnn/g' -e 's/__VERSION__/1.0/g' Info.plist > ncnn.framework/Versions/A/Resources/Info.plist |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.framework glslang.framework ncnn.framework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | openmp-mac-catalyst-bitcode: |
| | runs-on: macos-12 |
| | steps: |
| | - name: cache-openmp |
| | id: cache-openmp |
| | uses: actions/cache@v3 |
| | with: |
| | path: openmp-install |
| | key: openmp-mac-catalyst-bitcode-release-11.0.0-20230504 |
| | - name: checkout |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | uses: actions/checkout@v4 |
| | - name: openmp |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | wget https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/openmp-11.0.0.src.tar.xz |
| | tar -xf openmp-11.0.0.src.tar.xz |
| | cd openmp-11.0.0.src |
| | sed -i'' -e '/.size __kmp_unnamed_critical_addr/d' runtime/src/z_Linux_asm.S |
| | sed -i'' -e 's/__kmp_unnamed_critical_addr/___kmp_unnamed_critical_addr/g' runtime/src/z_Linux_asm.S |
| | - name: build-x86_64 |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir -p build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | cd openmp-11.0.0.src |
| | mkdir -p build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install \ |
| | -DPERL_EXECUTABLE=/usr/local/bin/perl \ |
| | -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: merge-fat-library |
| | if: steps.cache-openmp.outputs.cache-hit != 'true' |
| | run: | |
| | rm -rf $GITHUB_WORKSPACE/openmp-install |
| | mkdir -p $GITHUB_WORKSPACE/openmp-install |
| | cp -a openmp-11.0.0.src/build-x86_64/install/include $GITHUB_WORKSPACE/openmp-install |
| | mkdir -p $GITHUB_WORKSPACE/openmp-install/lib |
| | lipo -create \ |
| | openmp-11.0.0.src/build-x86_64/install/lib/libomp.a \ |
| | openmp-11.0.0.src/build-arm64/install/lib/libomp.a \ |
| | -o $GITHUB_WORKSPACE/openmp-install/lib/libomp.a |
| | - name: upload |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: openmp-mac-catalyst-bitcode |
| | path: openmp-install |
| |
|
| | mac-catalyst-bitcode: |
| | needs: [setup, openmp-mac-catalyst-bitcode] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-mac-catalyst-bitcode |
| | steps: |
| | - uses: actions/checkout@v4 |
| | - name: download-openmp-ios |
| | uses: actions/download-artifact@v3 |
| | with: |
| | name: openmp-mac-catalyst-bitcode |
| | path: openmp-mac-catalyst-bitcode |
| | - name: install-openmp |
| | run: | |
| | sudo cp openmp-mac-catalyst-bitcode/include/* $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include |
| | sudo cp openmp-mac-catalyst-bitcode/lib/libomp.a $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib |
| | - name: build-x86_64 |
| | run: | |
| | mkdir build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | run: | |
| | mkdir build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libomp.a" \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: package-openmp |
| | run: | |
| | rm -rf openmp.framework |
| | mkdir -p openmp.framework/Versions/A/Headers |
| | mkdir -p openmp.framework/Versions/A/Resources |
| | ln -s A openmp.framework/Versions/Current |
| | ln -s Versions/Current/Headers openmp.framework/Headers |
| | ln -s Versions/Current/Resources openmp.framework/Resources |
| | ln -s Versions/Current/openmp openmp.framework/openmp |
| | cp openmp-mac-catalyst-bitcode/lib/libomp.a openmp.framework/Versions/A/openmp |
| | cp -a openmp-mac-catalyst-bitcode/include/* openmp.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/openmp/g' -e 's/__IDENTIFIER__/org.llvm.openmp/g' -e 's/__VERSION__/11.0/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist |
| | - name: package |
| | run: | |
| | rm -rf ncnn.framework |
| | mkdir -p ncnn.framework/Versions/A/Headers |
| | mkdir -p ncnn.framework/Versions/A/Resources |
| | ln -s A ncnn.framework/Versions/Current |
| | ln -s Versions/Current/Headers ncnn.framework/Headers |
| | ln -s Versions/Current/Resources ncnn.framework/Resources |
| | ln -s Versions/Current/ncnn ncnn.framework/ncnn |
| | lipo -create \ |
| | build-x86_64/install/lib/libncnn.a \ |
| | build-arm64/install/lib/libncnn.a \ |
| | -o ncnn.framework/Versions/A/ncnn |
| | cp -a build-x86_64/install/include/* ncnn.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/ncnn/g' -e 's/__IDENTIFIER__/com.tencent.ncnn/g' -e 's/__VERSION__/1.0/g' Info.plist > ncnn.framework/Versions/A/Resources/Info.plist |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.framework ncnn.framework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | mac-catalyst-gpu-bitcode: |
| | needs: [setup, openmp-mac-catalyst-bitcode] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-mac-catalyst-vulkan-bitcode |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: download-openmp-mac-catalyst |
| | uses: actions/download-artifact@v3 |
| | with: |
| | name: openmp-mac-catalyst-bitcode |
| | path: openmp-mac-catalyst-bitcode |
| | - name: install-openmp |
| | run: | |
| | sudo cp openmp-mac-catalyst-bitcode/include/* $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include |
| | sudo cp openmp-mac-catalyst-bitcode/lib/libomp.a $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib |
| | - name: vulkansdk |
| | run: | |
| | wget https://sdk.lunarg.com/sdk/download/1.3.236.0/mac/vulkansdk-macos-1.3.236.0.dmg?Human=true -O vulkansdk-macos-1.3.236.0.dmg |
| | hdiutil attach vulkansdk-macos-1.3.236.0.dmg |
| | sudo /Volumes/vulkansdk-macos-1.3.236.0/InstallVulkan.app/Contents/MacOS/InstallVulkan --root $GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0 --accept-licenses --default-answer --confirm-command install |
| | hdiutil detach /Volumes/vulkansdk-macos-1.3.236.0 |
| | - name: build-x86_64 |
| | run: | |
| | export VULKAN_SDK=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/macOS |
| | mkdir build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="x86_64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libomp.a" \ |
| | -DVulkan_INCLUDE_DIR=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/include \ |
| | -DVulkan_LIBRARY=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/dylib/macOS/libMoltenVK.dylib \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: build-arm64 |
| | run: | |
| | export VULKAN_SDK=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/macOS |
| | mkdir build-arm64 && cd build-arm64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=MAC_CATALYST -DARCHS="arm64" \ |
| | -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET -DENABLE_BITCODE=ON -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ |
| | -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \ |
| | -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \ |
| | -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libomp.a" \ |
| | -DVulkan_INCLUDE_DIR=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/include \ |
| | -DVulkan_LIBRARY=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.236.0/MoltenVK/dylib/macOS/libMoltenVK.dylib \ |
| | -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 3 |
| | cmake --build . --target install/strip |
| | - name: package-openmp |
| | run: | |
| | rm -rf openmp.framework |
| | mkdir -p openmp.framework/Versions/A/Headers |
| | mkdir -p openmp.framework/Versions/A/Resources |
| | ln -s A openmp.framework/Versions/Current |
| | ln -s Versions/Current/Headers openmp.framework/Headers |
| | ln -s Versions/Current/Resources openmp.framework/Resources |
| | ln -s Versions/Current/openmp openmp.framework/openmp |
| | cp openmp-mac-catalyst-bitcode/lib/libomp.a openmp.framework/Versions/A/openmp |
| | cp -a openmp-mac-catalyst-bitcode/include/* openmp.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/openmp/g' -e 's/__IDENTIFIER__/org.llvm.openmp/g' -e 's/__VERSION__/11.0/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist |
| | - name: package-glslang |
| | run: | |
| | rm -rf glslang.framework |
| | mkdir -p glslang.framework/Versions/A/Headers |
| | mkdir -p glslang.framework/Versions/A/Resources |
| | ln -s A glslang.framework/Versions/Current |
| | ln -s Versions/Current/Headers glslang.framework/Headers |
| | ln -s Versions/Current/Resources glslang.framework/Resources |
| | ln -s Versions/Current/glslang glslang.framework/glslang |
| | libtool -static \ |
| | build-x86_64/install/lib/libglslang.a \ |
| | build-x86_64/install/lib/libMachineIndependent.a \ |
| | build-x86_64/install/lib/libGenericCodeGen.a \ |
| | build-x86_64/install/lib/libSPIRV.a \ |
| | build-x86_64/install/lib/libOGLCompiler.a \ |
| | build-x86_64/install/lib/libOSDependent.a \ |
| | -o build-x86_64/install/lib/libglslang_combined.a |
| | libtool -static \ |
| | build-arm64/install/lib/libglslang.a \ |
| | build-arm64/install/lib/libMachineIndependent.a \ |
| | build-arm64/install/lib/libGenericCodeGen.a \ |
| | build-arm64/install/lib/libSPIRV.a \ |
| | build-arm64/install/lib/libOGLCompiler.a \ |
| | build-arm64/install/lib/libOSDependent.a \ |
| | -o build-arm64/install/lib/libglslang_combined.a |
| | lipo -create \ |
| | build-x86_64/install/lib/libglslang_combined.a \ |
| | build-arm64/install/lib/libglslang_combined.a \ |
| | -o glslang.framework/Versions/A/glslang |
| | cp -a build-x86_64/install/include/glslang glslang.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/glslang/g' -e 's/__IDENTIFIER__/org.khronos.glslang/g' -e 's/__VERSION__/1.0/g' Info.plist > glslang.framework/Versions/A/Resources/Info.plist |
| | - name: package |
| | run: | |
| | rm -rf ncnn.framework |
| | mkdir -p ncnn.framework/Versions/A/Headers |
| | mkdir -p ncnn.framework/Versions/A/Resources |
| | ln -s A ncnn.framework/Versions/Current |
| | ln -s Versions/Current/Headers ncnn.framework/Headers |
| | ln -s Versions/Current/Resources ncnn.framework/Resources |
| | ln -s Versions/Current/ncnn ncnn.framework/ncnn |
| | lipo -create \ |
| | build-x86_64/install/lib/libncnn.a \ |
| | build-arm64/install/lib/libncnn.a \ |
| | -o ncnn.framework/Versions/A/ncnn |
| | cp -a build-x86_64/install/include/ncnn ncnn.framework/Versions/A/Headers/ |
| | sed -e 's/__NAME__/ncnn/g' -e 's/__IDENTIFIER__/com.tencent.ncnn/g' -e 's/__VERSION__/1.0/g' Info.plist > ncnn.framework/Versions/A/Resources/Info.plist |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.framework glslang.framework ncnn.framework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | android: |
| | needs: [setup] |
| | runs-on: ubuntu-latest |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-android |
| | steps: |
| | - uses: actions/checkout@v4 |
| | - name: ndk-fix-debug |
| | run: sed -i -e '/^ -g$/d' $ANDROID_NDK_LATEST_HOME/build/cmake/android-legacy.toolchain.cmake |
| | - name: build-armv7 |
| | run: | |
| | mkdir build-armv7 && cd build-armv7 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON -DANDROID_PLATFORM=android-14 \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: build-aarch64 |
| | run: | |
| | mkdir build-aarch64 && cd build-aarch64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-21 \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: build-x86 |
| | run: | |
| | mkdir build-x86 && cd build-x86 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DANDROID_ABI="x86" -DANDROID_PLATFORM=android-14 \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: build-x86_64 |
| | run: | |
| | mkdir build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DANDROID_ABI="x86_64" -DANDROID_PLATFORM=android-21 \ |
| | -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: package |
| | run: | |
| | rm -rf ${{ env.PACKAGENAME }} |
| | mkdir -p ${{ env.PACKAGENAME }} |
| | cp -a build-armv7/install ${{ env.PACKAGENAME }}/armeabi-v7a |
| | cp -a build-aarch64/install ${{ env.PACKAGENAME }}/arm64-v8a |
| | cp -a build-x86/install ${{ env.PACKAGENAME }}/x86 |
| | cp -a build-x86_64/install ${{ env.PACKAGENAME }}/x86_64 |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | android-shared: |
| | needs: [setup] |
| | runs-on: ubuntu-latest |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-android-shared |
| | steps: |
| | - uses: actions/checkout@v4 |
| | - name: ndk-fix-debug |
| | run: sed -i -e '/^ -g$/d' $ANDROID_NDK_LATEST_HOME/build/cmake/android-legacy.toolchain.cmake |
| | - name: build-armv7 |
| | run: | |
| | mkdir build-armv7 && cd build-armv7 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON -DANDROID_PLATFORM=android-14 \ |
| | -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: build-aarch64 |
| | run: | |
| | mkdir build-aarch64 && cd build-aarch64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-21 \ |
| | -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: build-x86 |
| | run: | |
| | mkdir build-x86 && cd build-x86 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DANDROID_ABI="x86" -DANDROID_PLATFORM=android-14 \ |
| | -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: build-x86_64 |
| | run: | |
| | mkdir build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DANDROID_ABI="x86_64" -DANDROID_PLATFORM=android-21 \ |
| | -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: package |
| | run: | |
| | rm -rf ${{ env.PACKAGENAME }} |
| | mkdir -p ${{ env.PACKAGENAME }} |
| | cp -a build-armv7/install ${{ env.PACKAGENAME }}/armeabi-v7a |
| | cp -a build-aarch64/install ${{ env.PACKAGENAME }}/arm64-v8a |
| | cp -a build-x86/install ${{ env.PACKAGENAME }}/x86 |
| | cp -a build-x86_64/install ${{ env.PACKAGENAME }}/x86_64 |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | android-gpu: |
| | needs: [setup] |
| | runs-on: ubuntu-latest |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-android-vulkan |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: cache-vulkansdk |
| | id: cache-vulkansdk |
| | uses: actions/cache@v3 |
| | with: |
| | path: "1.3.236.0" |
| | key: vulkansdk-linux-x86_64-1.3.236.0 |
| | - name: vulkansdk |
| | if: steps.cache-vulkansdk.outputs.cache-hit != 'true' |
| | run: | |
| | wget https://sdk.lunarg.com/sdk/download/1.3.236.0/linux/vulkansdk-linux-x86_64-1.3.236.0.tar.gz?Human=true -O vulkansdk-linux-x86_64-1.3.236.0.tar.gz |
| | tar -xf vulkansdk-linux-x86_64-1.3.236.0.tar.gz |
| | rm -rf 1.3.236.0/source 1.3.236.0/samples |
| | find 1.3.236.0 -type f | grep -v -E 'vulkan|glslang' | xargs rm |
| | - name: ndk-fix-debug |
| | run: sed -i -e '/^ -g$/d' $ANDROID_NDK_LATEST_HOME/build/cmake/android-legacy.toolchain.cmake |
| | - name: build-armv7 |
| | run: | |
| | export PATH=`pwd`/1.3.236.0/x86_64/bin:$PATH |
| | mkdir build-armv7 && cd build-armv7 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON -DANDROID_PLATFORM=android-24 \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: build-aarch64 |
| | run: | |
| | export PATH=`pwd`/1.3.236.0/x86_64/bin:$PATH |
| | mkdir build-aarch64 && cd build-aarch64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-24 \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: build-x86 |
| | run: | |
| | export PATH=`pwd`/1.3.236.0/x86_64/bin:$PATH |
| | mkdir build-x86 && cd build-x86 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DANDROID_ABI="x86" -DANDROID_PLATFORM=android-24 \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: build-x86_64 |
| | run: | |
| | export PATH=`pwd`/1.3.236.0/x86_64/bin:$PATH |
| | mkdir build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DANDROID_ABI="x86_64" -DANDROID_PLATFORM=android-24 \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: package |
| | run: | |
| | rm -rf ${{ env.PACKAGENAME }} |
| | mkdir -p ${{ env.PACKAGENAME }} |
| | cp -a build-armv7/install ${{ env.PACKAGENAME }}/armeabi-v7a |
| | cp -a build-aarch64/install ${{ env.PACKAGENAME }}/arm64-v8a |
| | cp -a build-x86/install ${{ env.PACKAGENAME }}/x86 |
| | cp -a build-x86_64/install ${{ env.PACKAGENAME }}/x86_64 |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | android-gpu-shared: |
| | needs: [setup] |
| | runs-on: ubuntu-latest |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-android-vulkan-shared |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: cache-vulkansdk |
| | id: cache-vulkansdk |
| | uses: actions/cache@v3 |
| | with: |
| | path: "1.3.236.0" |
| | key: vulkansdk-linux-x86_64-1.3.236.0 |
| | - name: vulkansdk |
| | if: steps.cache-vulkansdk.outputs.cache-hit != 'true' |
| | run: | |
| | wget https://sdk.lunarg.com/sdk/download/1.3.236.0/linux/vulkansdk-linux-x86_64-1.3.236.0.tar.gz?Human=true -O vulkansdk-linux-x86_64-1.3.236.0.tar.gz |
| | tar -xf vulkansdk-linux-x86_64-1.3.236.0.tar.gz |
| | rm -rf 1.3.236.0/source 1.3.236.0/samples |
| | find 1.3.236.0 -type f | grep -v -E 'vulkan|glslang' | xargs rm |
| | - name: ndk-fix-debug |
| | run: sed -i -e '/^ -g$/d' $ANDROID_NDK_LATEST_HOME/build/cmake/android-legacy.toolchain.cmake |
| | - name: build-armv7 |
| | run: | |
| | export PATH=`pwd`/1.3.236.0/x86_64/bin:$PATH |
| | mkdir build-armv7 && cd build-armv7 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON -DANDROID_PLATFORM=android-24 \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: build-aarch64 |
| | run: | |
| | export PATH=`pwd`/1.3.236.0/x86_64/bin:$PATH |
| | mkdir build-aarch64 && cd build-aarch64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-24 \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: build-x86 |
| | run: | |
| | export PATH=`pwd`/1.3.236.0/x86_64/bin:$PATH |
| | mkdir build-x86 && cd build-x86 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DANDROID_ABI="x86" -DANDROID_PLATFORM=android-24 \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: build-x86_64 |
| | run: | |
| | export PATH=`pwd`/1.3.236.0/x86_64/bin:$PATH |
| | mkdir build-x86_64 && cd build-x86_64 |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DANDROID_ABI="x86_64" -DANDROID_PLATFORM=android-24 \ |
| | -DNCNN_VULKAN=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: package |
| | run: | |
| | rm -rf ${{ env.PACKAGENAME }} |
| | mkdir -p ${{ env.PACKAGENAME }} |
| | cp -a build-armv7/install ${{ env.PACKAGENAME }}/armeabi-v7a |
| | cp -a build-aarch64/install ${{ env.PACKAGENAME }}/arm64-v8a |
| | cp -a build-x86/install ${{ env.PACKAGENAME }}/x86 |
| | cp -a build-x86_64/install ${{ env.PACKAGENAME }}/x86_64 |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | webassembly: |
| | needs: [setup] |
| | runs-on: ubuntu-latest |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-webassembly |
| | steps: |
| | - uses: actions/checkout@v4 |
| | - name: emsdk |
| | run: | |
| | git clone https://github.com/emscripten-core/emsdk.git |
| | cd emsdk |
| | ./emsdk install $EMSCRIPTEN_VERSION |
| | ./emsdk activate $EMSCRIPTEN_VERSION |
| | - name: build |
| | run: | |
| | source emsdk/emsdk_env.sh |
| | mkdir build && cd build |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_THREADS=OFF -DNCNN_OPENMP=OFF -DNCNN_SIMPLEOMP=OFF -DNCNN_SIMPLEOCV=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_SSE2=OFF -DNCNN_AVX2=OFF -DNCNN_AVX=OFF \ |
| | -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: build-simd |
| | run: | |
| | source emsdk/emsdk_env.sh |
| | mkdir build-simd && cd build-simd |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_THREADS=OFF -DNCNN_OPENMP=OFF -DNCNN_SIMPLEOMP=OFF -DNCNN_SIMPLEOCV=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_SSE2=ON -DNCNN_AVX2=OFF -DNCNN_AVX=OFF \ |
| | -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: build-threads |
| | run: | |
| | source emsdk/emsdk_env.sh |
| | mkdir build-threads && cd build-threads |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_THREADS=ON -DNCNN_OPENMP=ON -DNCNN_SIMPLEOMP=ON -DNCNN_SIMPLEOCV=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_SSE2=OFF -DNCNN_AVX2=OFF -DNCNN_AVX=OFF \ |
| | -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: build-simd-threads |
| | run: | |
| | source emsdk/emsdk_env.sh |
| | mkdir build-simd-threads && cd build-simd-threads |
| | cmake -DCMAKE_TOOLCHAIN_FILE=$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ |
| | -DNCNN_THREADS=ON -DNCNN_OPENMP=ON -DNCNN_SIMPLEOMP=ON -DNCNN_SIMPLEOCV=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_SSE2=ON -DNCNN_AVX2=OFF -DNCNN_AVX=OFF \ |
| | -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . -j 2 |
| | cmake --build . --target install/strip |
| | - name: package |
| | run: | |
| | rm -rf ${{ env.PACKAGENAME }} |
| | mkdir -p ${{ env.PACKAGENAME }} |
| | cp -a build/install ${{ env.PACKAGENAME }}/basic |
| | cp -a build-simd/install ${{ env.PACKAGENAME }}/simd |
| | cp -a build-threads/install ${{ env.PACKAGENAME }}/threads |
| | cp -a build-simd-threads/install ${{ env.PACKAGENAME }}/simd-threads |
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | windows-vs2015: |
| | needs: [setup] |
| | runs-on: windows-2019 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-windows-vs2015 |
| | UseMultiToolTask: true |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: cache-protobuf |
| | id: cache-protobuf |
| | uses: actions/cache@v3 |
| | with: |
| | path: "protobuf-install" |
| | key: protobuf-vs2015-x86-x64-install |
| | - name: protobuf |
| | if: steps.cache-protobuf.outputs.cache-hit != 'true' |
| | run: | |
| | Invoke-WebRequest -Uri https://github.com/protocolbuffers/protobuf/archive/v3.11.2.zip -OutFile protobuf-3.11.2.zip |
| | 7z x ./protobuf-3.11.2.zip |
| | cd protobuf-3.11.2 |
| | mkdir build-x86; cd build-x86; |
| | cmake -T v140,host=x64 -A Win32 -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x86" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | cd .. |
| | mkdir build-x64; cd build-x64; |
| | cmake -T v140,host=x64 -A x64 -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x64" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: vulkansdk |
| | run: | |
| | Invoke-WebRequest -Uri https://sdk.lunarg.com/sdk/download/1.3.236.0/windows/VulkanSDK-1.3.236.0-Installer.exe?Human=true -OutFile VulkanSDK.exe |
| | .\VulkanSDK.exe --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.32bit |
| | - name: build-x86 |
| | run: | |
| | $env:VULKAN_SDK="C:/VulkanSDK/1.3.236.0" |
| | $env:Path+=";C:/VulkanSDK/1.3.236.0/Bin" |
| | mkdir build-x86; cd build-x86 |
| | cmake -T v140,host=x64 -A Win32 -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x86\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: build-x64 |
| | run: | |
| | $env:VULKAN_SDK="C:/VulkanSDK/1.3.236.0" |
| | $env:Path+=";C:/VulkanSDK/1.3.236.0/Bin" |
| | mkdir build-x64; cd build-x64 |
| | cmake -T v140,host=x64 -A x64 -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x64\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: package |
| | run: | |
| | mkdir ${{ env.PACKAGENAME }} |
| | mkdir ${{ env.PACKAGENAME }}/x86 |
| | mkdir ${{ env.PACKAGENAME }}/x64 |
| | Copy-Item -Verbose -Recurse -Path "build-x86\install\*" -Destination "${{ env.PACKAGENAME }}\x86" |
| | Copy-Item -Verbose -Recurse -Path "build-x64\install\*" -Destination "${{ env.PACKAGENAME }}\x64" |
| | 7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | windows-vs2015-shared: |
| | needs: [setup] |
| | runs-on: windows-2019 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-windows-vs2015-shared |
| | UseMultiToolTask: true |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: cache-protobuf |
| | id: cache-protobuf |
| | uses: actions/cache@v3 |
| | with: |
| | path: "protobuf-install" |
| | key: protobuf-vs2015-x86-x64-install |
| | - name: protobuf |
| | if: steps.cache-protobuf.outputs.cache-hit != 'true' |
| | run: | |
| | Invoke-WebRequest -Uri https://github.com/protocolbuffers/protobuf/archive/v3.11.2.zip -OutFile protobuf-3.11.2.zip |
| | 7z x ./protobuf-3.11.2.zip |
| | cd protobuf-3.11.2 |
| | mkdir build-x86; cd build-x86; |
| | cmake -T v140,host=x64 -A Win32 -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x86" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | cd .. |
| | mkdir build-x64; cd build-x64; |
| | cmake -T v140,host=x64 -A x64 -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x64" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: vulkansdk |
| | run: | |
| | Invoke-WebRequest -Uri https://sdk.lunarg.com/sdk/download/1.3.236.0/windows/VulkanSDK-1.3.236.0-Installer.exe?Human=true -OutFile VulkanSDK.exe |
| | .\VulkanSDK.exe --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.32bit |
| | - name: build-x86 |
| | run: | |
| | $env:VULKAN_SDK="C:/VulkanSDK/1.3.236.0" |
| | $env:Path+=";C:/VulkanSDK/1.3.236.0/Bin" |
| | mkdir build-x86; cd build-x86 |
| | cmake -T v140,host=x64 -A Win32 -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x86\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: build-x64 |
| | run: | |
| | $env:VULKAN_SDK="C:/VulkanSDK/1.3.236.0" |
| | $env:Path+=";C:/VulkanSDK/1.3.236.0/Bin" |
| | mkdir build-x64; cd build-x64 |
| | cmake -T v140,host=x64 -A x64 -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x64\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: package |
| | run: | |
| | mkdir ${{ env.PACKAGENAME }} |
| | mkdir ${{ env.PACKAGENAME }}/x86 |
| | mkdir ${{ env.PACKAGENAME }}/x64 |
| | Copy-Item -Verbose -Recurse -Path "build-x86\install\*" -Destination "${{ env.PACKAGENAME }}\x86" |
| | Copy-Item -Verbose -Recurse -Path "build-x64\install\*" -Destination "${{ env.PACKAGENAME }}\x64" |
| | 7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | windows-vs2017: |
| | needs: [setup] |
| | runs-on: windows-2019 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-windows-vs2017 |
| | UseMultiToolTask: true |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: cache-protobuf |
| | id: cache-protobuf |
| | uses: actions/cache@v3 |
| | with: |
| | path: "protobuf-install" |
| | key: protobuf-vs2017-x86-x64-install |
| | - name: protobuf |
| | if: steps.cache-protobuf.outputs.cache-hit != 'true' |
| | run: | |
| | Invoke-WebRequest -Uri https://github.com/protocolbuffers/protobuf/archive/v3.11.2.zip -OutFile protobuf-3.11.2.zip |
| | 7z x ./protobuf-3.11.2.zip |
| | cd protobuf-3.11.2 |
| | mkdir build-x86; cd build-x86; |
| | cmake -T v141,host=x64 -A Win32 -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x86" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | cd .. |
| | mkdir build-x64; cd build-x64; |
| | cmake -T v141,host=x64 -A x64 -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x64" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: vulkansdk |
| | run: | |
| | Invoke-WebRequest -Uri https://sdk.lunarg.com/sdk/download/1.3.236.0/windows/VulkanSDK-1.3.236.0-Installer.exe?Human=true -OutFile VulkanSDK.exe |
| | .\VulkanSDK.exe --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.32bit |
| | - name: build-x86 |
| | run: | |
| | $env:VULKAN_SDK="C:/VulkanSDK/1.3.236.0" |
| | $env:Path+=";C:/VulkanSDK/1.3.236.0/Bin" |
| | mkdir build-x86; cd build-x86 |
| | cmake -T v141,host=x64 -A Win32 -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x86\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: build-x64 |
| | run: | |
| | $env:VULKAN_SDK="C:/VulkanSDK/1.3.236.0" |
| | $env:Path+=";C:/VulkanSDK/1.3.236.0/Bin" |
| | mkdir build-x64; cd build-x64 |
| | cmake -T v141,host=x64 -A x64 -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x64\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: package |
| | run: | |
| | mkdir ${{ env.PACKAGENAME }} |
| | mkdir ${{ env.PACKAGENAME }}/x86 |
| | mkdir ${{ env.PACKAGENAME }}/x64 |
| | Copy-Item -Verbose -Recurse -Path "build-x86\install\*" -Destination "${{ env.PACKAGENAME }}\x86" |
| | Copy-Item -Verbose -Recurse -Path "build-x64\install\*" -Destination "${{ env.PACKAGENAME }}\x64" |
| | 7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | windows-vs2017-shared: |
| | needs: [setup] |
| | runs-on: windows-2019 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-windows-vs2017-shared |
| | UseMultiToolTask: true |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: cache-protobuf |
| | id: cache-protobuf |
| | uses: actions/cache@v3 |
| | with: |
| | path: "protobuf-install" |
| | key: protobuf-vs2017-x86-x64-install |
| | - name: protobuf |
| | if: steps.cache-protobuf.outputs.cache-hit != 'true' |
| | run: | |
| | Invoke-WebRequest -Uri https://github.com/protocolbuffers/protobuf/archive/v3.11.2.zip -OutFile protobuf-3.11.2.zip |
| | 7z x ./protobuf-3.11.2.zip |
| | cd protobuf-3.11.2 |
| | mkdir build-x86; cd build-x86; |
| | cmake -T v141,host=x64 -A Win32 -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x86" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | cd .. |
| | mkdir build-x64; cd build-x64; |
| | cmake -T v141,host=x64 -A x64 -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x64" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: vulkansdk |
| | run: | |
| | Invoke-WebRequest -Uri https://sdk.lunarg.com/sdk/download/1.3.236.0/windows/VulkanSDK-1.3.236.0-Installer.exe?Human=true -OutFile VulkanSDK.exe |
| | .\VulkanSDK.exe --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.32bit |
| | - name: build-x86 |
| | run: | |
| | $env:VULKAN_SDK="C:/VulkanSDK/1.3.236.0" |
| | $env:Path+=";C:/VulkanSDK/1.3.236.0/Bin" |
| | mkdir build-x86; cd build-x86 |
| | cmake -T v141,host=x64 -A Win32 -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x86\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: build-x64 |
| | run: | |
| | $env:VULKAN_SDK="C:/VulkanSDK/1.3.236.0" |
| | $env:Path+=";C:/VulkanSDK/1.3.236.0/Bin" |
| | mkdir build-x64; cd build-x64 |
| | cmake -T v141,host=x64 -A x64 -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x64\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: package |
| | run: | |
| | mkdir ${{ env.PACKAGENAME }} |
| | mkdir ${{ env.PACKAGENAME }}/x86 |
| | mkdir ${{ env.PACKAGENAME }}/x64 |
| | Copy-Item -Verbose -Recurse -Path "build-x86\install\*" -Destination "${{ env.PACKAGENAME }}\x86" |
| | Copy-Item -Verbose -Recurse -Path "build-x64\install\*" -Destination "${{ env.PACKAGENAME }}\x64" |
| | 7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | windows-vs2019: |
| | needs: [setup] |
| | runs-on: windows-latest |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-windows-vs2019 |
| | UseMultiToolTask: true |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: cache-protobuf |
| | id: cache-protobuf |
| | uses: actions/cache@v3 |
| | with: |
| | path: "protobuf-install" |
| | key: protobuf-vs2019-x86-x64-install |
| | - name: protobuf |
| | if: steps.cache-protobuf.outputs.cache-hit != 'true' |
| | run: | |
| | Invoke-WebRequest -Uri https://github.com/protocolbuffers/protobuf/archive/v3.11.2.zip -OutFile protobuf-3.11.2.zip |
| | 7z x ./protobuf-3.11.2.zip |
| | cd protobuf-3.11.2 |
| | mkdir build-x86; cd build-x86; |
| | cmake -T v142,host=x64 -A Win32 -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x86" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | cd .. |
| | mkdir build-x64; cd build-x64; |
| | cmake -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x64" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: vulkansdk |
| | run: | |
| | Invoke-WebRequest -Uri https://sdk.lunarg.com/sdk/download/1.3.236.0/windows/VulkanSDK-1.3.236.0-Installer.exe?Human=true -OutFile VulkanSDK.exe |
| | .\VulkanSDK.exe --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.32bit |
| | - name: build-x86 |
| | run: | |
| | $env:VULKAN_SDK="C:/VulkanSDK/1.3.236.0" |
| | $env:Path+=";C:/VulkanSDK/1.3.236.0/Bin" |
| | mkdir build-x86; cd build-x86 |
| | cmake -T v142,host=x64 -A Win32 -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x86\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: build-x64 |
| | run: | |
| | $env:VULKAN_SDK="C:/VulkanSDK/1.3.236.0" |
| | $env:Path+=";C:/VulkanSDK/1.3.236.0/Bin" |
| | mkdir build-x64; cd build-x64 |
| | cmake -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x64\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: build-arm |
| | run: | |
| | mkdir build-arm; cd build-arm |
| | cmake -T v142,host=x64 -A arm -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: build-arm64 |
| | run: | |
| | mkdir build-arm64; cd build-arm64 |
| | cmake -T v142,host=x64 -A arm64 -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: package |
| | run: | |
| | mkdir ${{ env.PACKAGENAME }} |
| | mkdir ${{ env.PACKAGENAME }}/x86 |
| | mkdir ${{ env.PACKAGENAME }}/x64 |
| | mkdir ${{ env.PACKAGENAME }}/arm |
| | mkdir ${{ env.PACKAGENAME }}/arm64 |
| | Copy-Item -Verbose -Recurse -Path "build-x86\install\*" -Destination "${{ env.PACKAGENAME }}\x86" |
| | Copy-Item -Verbose -Recurse -Path "build-x64\install\*" -Destination "${{ env.PACKAGENAME }}\x64" |
| | Copy-Item -Verbose -Recurse -Path "build-arm\install\*" -Destination "${{ env.PACKAGENAME }}\arm" |
| | Copy-Item -Verbose -Recurse -Path "build-arm64\install\*" -Destination "${{ env.PACKAGENAME }}\arm64" |
| | 7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | windows-vs2019-shared: |
| | needs: [setup] |
| | runs-on: windows-latest |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-windows-vs2019-shared |
| | UseMultiToolTask: true |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: cache-protobuf |
| | id: cache-protobuf |
| | uses: actions/cache@v3 |
| | with: |
| | path: "protobuf-install" |
| | key: protobuf-vs2019-x86-x64-install |
| | - name: protobuf |
| | if: steps.cache-protobuf.outputs.cache-hit != 'true' |
| | run: | |
| | Invoke-WebRequest -Uri https://github.com/protocolbuffers/protobuf/archive/v3.11.2.zip -OutFile protobuf-3.11.2.zip |
| | 7z x ./protobuf-3.11.2.zip |
| | cd protobuf-3.11.2 |
| | mkdir build-x86; cd build-x86; |
| | cmake -T v142,host=x64 -A Win32 -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x86" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | cd .. |
| | mkdir build-x64; cd build-x64; |
| | cmake -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x64" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: vulkansdk |
| | run: | |
| | Invoke-WebRequest -Uri https://sdk.lunarg.com/sdk/download/1.3.236.0/windows/VulkanSDK-1.3.236.0-Installer.exe?Human=true -OutFile VulkanSDK.exe |
| | .\VulkanSDK.exe --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.32bit |
| | - name: build-x86 |
| | run: | |
| | $env:VULKAN_SDK="C:/VulkanSDK/1.3.236.0" |
| | $env:Path+=";C:/VulkanSDK/1.3.236.0/Bin" |
| | mkdir build-x86; cd build-x86 |
| | cmake -T v142,host=x64 -A Win32 -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x86\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: build-x64 |
| | run: | |
| | $env:VULKAN_SDK="C:/VulkanSDK/1.3.236.0" |
| | $env:Path+=";C:/VulkanSDK/1.3.236.0/Bin" |
| | mkdir build-x64; cd build-x64 |
| | cmake -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x64\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: build-arm |
| | run: | |
| | mkdir build-arm; cd build-arm |
| | cmake -T v142,host=x64 -A arm -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: build-arm64 |
| | run: | |
| | mkdir build-arm64; cd build-arm64 |
| | cmake -T v142,host=x64 -A arm64 -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: package |
| | run: | |
| | mkdir ${{ env.PACKAGENAME }} |
| | mkdir ${{ env.PACKAGENAME }}/x86 |
| | mkdir ${{ env.PACKAGENAME }}/x64 |
| | mkdir ${{ env.PACKAGENAME }}/arm |
| | mkdir ${{ env.PACKAGENAME }}/arm64 |
| | Copy-Item -Verbose -Recurse -Path "build-x86\install\*" -Destination "${{ env.PACKAGENAME }}\x86" |
| | Copy-Item -Verbose -Recurse -Path "build-x64\install\*" -Destination "${{ env.PACKAGENAME }}\x64" |
| | Copy-Item -Verbose -Recurse -Path "build-arm\install\*" -Destination "${{ env.PACKAGENAME }}\arm" |
| | Copy-Item -Verbose -Recurse -Path "build-arm64\install\*" -Destination "${{ env.PACKAGENAME }}\arm64" |
| | 7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | windows-vs2022: |
| | needs: [setup] |
| | runs-on: windows-latest |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-windows-vs2022 |
| | UseMultiToolTask: true |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: cache-protobuf |
| | id: cache-protobuf |
| | uses: actions/cache@v3 |
| | with: |
| | path: "protobuf-install" |
| | key: protobuf-vs2022-x86-x64-install |
| | - name: protobuf |
| | if: steps.cache-protobuf.outputs.cache-hit != 'true' |
| | run: | |
| | Invoke-WebRequest -Uri https://github.com/protocolbuffers/protobuf/archive/v3.11.2.zip -OutFile protobuf-3.11.2.zip |
| | 7z x ./protobuf-3.11.2.zip |
| | cd protobuf-3.11.2 |
| | mkdir build-x86; cd build-x86; |
| | cmake -T v143,host=x64 -A Win32 -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x86" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | cd .. |
| | mkdir build-x64; cd build-x64; |
| | cmake -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x64" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: vulkansdk |
| | run: | |
| | Invoke-WebRequest -Uri https://sdk.lunarg.com/sdk/download/1.3.236.0/windows/VulkanSDK-1.3.236.0-Installer.exe?Human=true -OutFile VulkanSDK.exe |
| | .\VulkanSDK.exe --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.32bit |
| | - name: build-x86 |
| | run: | |
| | $env:VULKAN_SDK="C:/VulkanSDK/1.3.236.0" |
| | $env:Path+=";C:/VulkanSDK/1.3.236.0/Bin" |
| | mkdir build-x86; cd build-x86 |
| | cmake -T v143,host=x64 -A Win32 -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x86\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: build-x64 |
| | run: | |
| | $env:VULKAN_SDK="C:/VulkanSDK/1.3.236.0" |
| | $env:Path+=";C:/VulkanSDK/1.3.236.0/Bin" |
| | mkdir build-x64; cd build-x64 |
| | cmake -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x64\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: build-arm |
| | run: | |
| | mkdir build-arm; cd build-arm |
| | cmake -T v143,host=x64 -A arm -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: build-arm64 |
| | run: | |
| | mkdir build-arm64; cd build-arm64 |
| | cmake -T v143,host=x64 -A arm64 -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: package |
| | run: | |
| | mkdir ${{ env.PACKAGENAME }} |
| | mkdir ${{ env.PACKAGENAME }}/x86 |
| | mkdir ${{ env.PACKAGENAME }}/x64 |
| | mkdir ${{ env.PACKAGENAME }}/arm |
| | mkdir ${{ env.PACKAGENAME }}/arm64 |
| | Copy-Item -Verbose -Recurse -Path "build-x86\install\*" -Destination "${{ env.PACKAGENAME }}\x86" |
| | Copy-Item -Verbose -Recurse -Path "build-x64\install\*" -Destination "${{ env.PACKAGENAME }}\x64" |
| | Copy-Item -Verbose -Recurse -Path "build-arm\install\*" -Destination "${{ env.PACKAGENAME }}\arm" |
| | Copy-Item -Verbose -Recurse -Path "build-arm64\install\*" -Destination "${{ env.PACKAGENAME }}\arm64" |
| | 7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | windows-vs2022-shared: |
| | needs: [setup] |
| | runs-on: windows-latest |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-windows-vs2022-shared |
| | UseMultiToolTask: true |
| | steps: |
| | - uses: actions/checkout@v4 |
| | with: |
| | submodules: true |
| | - name: cache-protobuf |
| | id: cache-protobuf |
| | uses: actions/cache@v3 |
| | with: |
| | path: "protobuf-install" |
| | key: protobuf-vs2022-x86-x64-install |
| | - name: protobuf |
| | if: steps.cache-protobuf.outputs.cache-hit != 'true' |
| | run: | |
| | Invoke-WebRequest -Uri https://github.com/protocolbuffers/protobuf/archive/v3.11.2.zip -OutFile protobuf-3.11.2.zip |
| | 7z x ./protobuf-3.11.2.zip |
| | cd protobuf-3.11.2 |
| | mkdir build-x86; cd build-x86; |
| | cmake -T v143,host=x64 -A Win32 -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x86" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | cd .. |
| | mkdir build-x64; cd build-x64; |
| | cmake -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x64" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: vulkansdk |
| | run: | |
| | Invoke-WebRequest -Uri https://sdk.lunarg.com/sdk/download/1.3.236.0/windows/VulkanSDK-1.3.236.0-Installer.exe?Human=true -OutFile VulkanSDK.exe |
| | .\VulkanSDK.exe --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.32bit |
| | - name: build-x86 |
| | run: | |
| | $env:VULKAN_SDK="C:/VulkanSDK/1.3.236.0" |
| | $env:Path+=";C:/VulkanSDK/1.3.236.0/Bin" |
| | mkdir build-x86; cd build-x86 |
| | cmake -T v143,host=x64 -A Win32 -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x86\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: build-x64 |
| | run: | |
| | $env:VULKAN_SDK="C:/VulkanSDK/1.3.236.0" |
| | $env:Path+=";C:/VulkanSDK/1.3.236.0/Bin" |
| | mkdir build-x64; cd build-x64 |
| | cmake -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x64\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: build-arm |
| | run: | |
| | mkdir build-arm; cd build-arm |
| | cmake -T v143,host=x64 -A arm -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: build-arm64 |
| | run: | |
| | mkdir build-arm64; cd build-arm64 |
| | cmake -T v143,host=x64 -A arm64 -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_SHARED_LIB=ON .. |
| | cmake --build . --config Release -j 2 |
| | cmake --build . --config Release --target install |
| | - name: package |
| | run: | |
| | mkdir ${{ env.PACKAGENAME }} |
| | mkdir ${{ env.PACKAGENAME }}/x86 |
| | mkdir ${{ env.PACKAGENAME }}/x64 |
| | mkdir ${{ env.PACKAGENAME }}/arm |
| | mkdir ${{ env.PACKAGENAME }}/arm64 |
| | Copy-Item -Verbose -Recurse -Path "build-x86\install\*" -Destination "${{ env.PACKAGENAME }}\x86" |
| | Copy-Item -Verbose -Recurse -Path "build-x64\install\*" -Destination "${{ env.PACKAGENAME }}\x64" |
| | Copy-Item -Verbose -Recurse -Path "build-arm\install\*" -Destination "${{ env.PACKAGENAME }}\arm" |
| | Copy-Item -Verbose -Recurse -Path "build-arm64\install\*" -Destination "${{ env.PACKAGENAME }}\arm64" |
| | 7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | apple: |
| | needs: [setup, macos, ios, ios-simulator, mac-catalyst] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-apple |
| | steps: |
| | - run: sudo xcode-select --switch /Applications/Xcode_13.4.1.app |
| | - name: download |
| | uses: actions/download-artifact@v3 |
| | with: |
| | path: artifacts |
| |
|
| | - name: create-xcframwork |
| | run: | |
| | mkdir -p ncnn-macos |
| | mkdir -p ncnn-ios |
| | mkdir -p ncnn-ios-simulator |
| | mkdir -p ncnn-mac-catalyst |
| | |
| | unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-macos/ncnn-${{ needs.setup.outputs.VERSION }}-macos.zip -d ncnn-macos |
| | unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-ios/ncnn-${{ needs.setup.outputs.VERSION }}-ios.zip -d ncnn-ios |
| | unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-ios-simulator/ncnn-${{ needs.setup.outputs.VERSION }}-ios-simulator.zip -d ncnn-ios-simulator |
| | unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-mac-catalyst/ncnn-${{ needs.setup.outputs.VERSION }}-mac-catalyst.zip -d ncnn-mac-catalyst |
| |
|
| | xcodebuild -create-xcframework \ |
| | -framework ncnn-macos/openmp.framework \ |
| | -framework ncnn-ios/openmp.framework \ |
| | -framework ncnn-ios-simulator/openmp.framework \ |
| | -framework ncnn-mac-catalyst/openmp.framework \ |
| | -output openmp.xcframework |
| |
|
| | xcodebuild -create-xcframework \ |
| | -framework ncnn-macos/ncnn.framework \ |
| | -framework ncnn-ios/ncnn.framework \ |
| | -framework ncnn-ios-simulator/ncnn.framework \ |
| | -framework ncnn-mac-catalyst/ncnn.framework \ |
| | -output ncnn.xcframework |
| |
|
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.xcframework ncnn.xcframework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | apple-gpu: |
| | needs: [setup, macos-gpu, ios-gpu, ios-simulator-gpu, mac-catalyst-gpu] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-apple-vulkan |
| | steps: |
| | - run: sudo xcode-select --switch /Applications/Xcode_13.4.1.app |
| | - name: download |
| | uses: actions/download-artifact@v3 |
| | with: |
| | path: artifacts |
| |
|
| | - name: create-xcframwork |
| | run: | |
| | mkdir -p ncnn-macos-vulkan |
| | mkdir -p ncnn-ios-vulkan |
| | mkdir -p ncnn-ios-simulator-vulkan |
| | mkdir -p ncnn-mac-catalyst-vulkan |
| | |
| | unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-macos-vulkan/ncnn-${{ needs.setup.outputs.VERSION }}-macos-vulkan.zip -d ncnn-macos-vulkan |
| | unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-ios-vulkan/ncnn-${{ needs.setup.outputs.VERSION }}-ios-vulkan.zip -d ncnn-ios-vulkan |
| | unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-ios-simulator-vulkan/ncnn-${{ needs.setup.outputs.VERSION }}-ios-simulator-vulkan.zip -d ncnn-ios-simulator-vulkan |
| | unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-mac-catalyst-vulkan/ncnn-${{ needs.setup.outputs.VERSION }}-mac-catalyst-vulkan.zip -d ncnn-mac-catalyst-vulkan |
| |
|
| | xcodebuild -create-xcframework \ |
| | -framework ncnn-macos-vulkan/openmp.framework \ |
| | -framework ncnn-ios-vulkan/openmp.framework \ |
| | -framework ncnn-ios-simulator-vulkan/openmp.framework \ |
| | -framework ncnn-mac-catalyst-vulkan/openmp.framework \ |
| | -output openmp.xcframework |
| |
|
| | xcodebuild -create-xcframework \ |
| | -framework ncnn-macos-vulkan/glslang.framework \ |
| | -framework ncnn-ios-vulkan/glslang.framework \ |
| | -framework ncnn-ios-simulator-vulkan/glslang.framework \ |
| | -framework ncnn-mac-catalyst-vulkan/glslang.framework \ |
| | -output glslang.xcframework |
| |
|
| | xcodebuild -create-xcframework \ |
| | -framework ncnn-macos-vulkan/ncnn.framework \ |
| | -framework ncnn-ios-vulkan/ncnn.framework \ |
| | -framework ncnn-ios-simulator-vulkan/ncnn.framework \ |
| | -framework ncnn-mac-catalyst-vulkan/ncnn.framework \ |
| | -output ncnn.xcframework |
| |
|
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.xcframework glslang.xcframework ncnn.xcframework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | apple-bitcode: |
| | needs: [setup, macos, ios-bitcode, ios-simulator-bitcode, mac-catalyst-bitcode] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-apple-bitcode |
| | steps: |
| | - run: sudo xcode-select --switch /Applications/Xcode_13.4.1.app |
| | - name: download |
| | uses: actions/download-artifact@v3 |
| | with: |
| | path: artifacts |
| |
|
| | - name: create-xcframwork |
| | run: | |
| | mkdir -p ncnn-macos |
| | mkdir -p ncnn-ios-bitcode |
| | mkdir -p ncnn-ios-simulator-bitcode |
| | mkdir -p ncnn-mac-catalyst-bitcode |
| | |
| | unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-macos/ncnn-${{ needs.setup.outputs.VERSION }}-macos.zip -d ncnn-macos |
| | unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-ios-bitcode/ncnn-${{ needs.setup.outputs.VERSION }}-ios-bitcode.zip -d ncnn-ios-bitcode |
| | unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-ios-simulator-bitcode/ncnn-${{ needs.setup.outputs.VERSION }}-ios-simulator-bitcode.zip -d ncnn-ios-simulator-bitcode |
| | unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-mac-catalyst-bitcode/ncnn-${{ needs.setup.outputs.VERSION }}-mac-catalyst-bitcode.zip -d ncnn-mac-catalyst-bitcode |
| |
|
| | xcodebuild -create-xcframework \ |
| | -framework ncnn-macos/openmp.framework \ |
| | -framework ncnn-ios-bitcode/openmp.framework \ |
| | -framework ncnn-ios-simulator-bitcode/openmp.framework \ |
| | -framework ncnn-mac-catalyst-bitcode/openmp.framework \ |
| | -output openmp.xcframework |
| |
|
| | xcodebuild -create-xcframework \ |
| | -framework ncnn-macos/ncnn.framework \ |
| | -framework ncnn-ios-bitcode/ncnn.framework \ |
| | -framework ncnn-ios-simulator-bitcode/ncnn.framework \ |
| | -framework ncnn-mac-catalyst-bitcode/ncnn.framework \ |
| | -output ncnn.xcframework |
| |
|
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.xcframework ncnn.xcframework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | apple-gpu-bitcode: |
| | needs: [setup, macos-gpu, ios-gpu-bitcode, ios-simulator-gpu-bitcode, mac-catalyst-gpu-bitcode] |
| | runs-on: macos-12 |
| | env: |
| | PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-apple-vulkan-bitcode |
| | steps: |
| | - run: sudo xcode-select --switch /Applications/Xcode_13.4.1.app |
| | - name: download |
| | uses: actions/download-artifact@v3 |
| | with: |
| | path: artifacts |
| |
|
| | - name: create-xcframwork |
| | run: | |
| | mkdir -p ncnn-macos-vulkan |
| | mkdir -p ncnn-ios-vulkan-bitcode |
| | mkdir -p ncnn-ios-simulator-vulkan-bitcode |
| | mkdir -p ncnn-mac-catalyst-vulkan-bitcode |
| | |
| | unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-macos-vulkan/ncnn-${{ needs.setup.outputs.VERSION }}-macos-vulkan.zip -d ncnn-macos-vulkan |
| | unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-ios-vulkan-bitcode/ncnn-${{ needs.setup.outputs.VERSION }}-ios-vulkan-bitcode.zip -d ncnn-ios-vulkan-bitcode |
| | unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-ios-simulator-vulkan-bitcode/ncnn-${{ needs.setup.outputs.VERSION }}-ios-simulator-vulkan-bitcode.zip -d ncnn-ios-simulator-vulkan-bitcode |
| | unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-mac-catalyst-vulkan-bitcode/ncnn-${{ needs.setup.outputs.VERSION }}-mac-catalyst-vulkan-bitcode.zip -d ncnn-mac-catalyst-vulkan-bitcode |
| |
|
| | xcodebuild -create-xcframework \ |
| | -framework ncnn-macos-vulkan/openmp.framework \ |
| | -framework ncnn-ios-vulkan-bitcode/openmp.framework \ |
| | -framework ncnn-ios-simulator-vulkan-bitcode/openmp.framework \ |
| | -framework ncnn-mac-catalyst-vulkan-bitcode/openmp.framework \ |
| | -output openmp.xcframework |
| |
|
| | xcodebuild -create-xcframework \ |
| | -framework ncnn-macos-vulkan/glslang.framework \ |
| | -framework ncnn-ios-vulkan-bitcode/glslang.framework \ |
| | -framework ncnn-ios-simulator-vulkan-bitcode/glslang.framework \ |
| | -framework ncnn-mac-catalyst-vulkan-bitcode/glslang.framework \ |
| | -output glslang.xcframework |
| |
|
| | xcodebuild -create-xcframework \ |
| | -framework ncnn-macos-vulkan/ncnn.framework \ |
| | -framework ncnn-ios-vulkan-bitcode/ncnn.framework \ |
| | -framework ncnn-ios-simulator-vulkan-bitcode/ncnn.framework \ |
| | -framework ncnn-mac-catalyst-vulkan-bitcode/ncnn.framework \ |
| | -output ncnn.xcframework |
| |
|
| | rm -f ${{ env.PACKAGENAME }}.zip |
| | zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.xcframework glslang.xcframework ncnn.xcframework |
| | - name: upload-zip |
| | uses: actions/upload-artifact@v3 |
| | with: |
| | name: ${{ env.PACKAGENAME }} |
| | path: ${{ env.PACKAGENAME }}.zip |
| |
|
| | release: |
| | permissions: |
| | contents: write |
| | needs: [setup, full-source, ubuntu-2004, ubuntu-2004-shared, ubuntu-2204, ubuntu-2204-shared, macos, macos-gpu, ios, ios-gpu, ios-bitcode, ios-gpu-bitcode, ios-simulator, ios-simulator-gpu, ios-simulator-bitcode, ios-simulator-gpu-bitcode, mac-catalyst, mac-catalyst-gpu, mac-catalyst-bitcode, mac-catalyst-gpu-bitcode, android, android-shared, android-gpu, android-gpu-shared, webassembly, windows-vs2015, windows-vs2015-shared, windows-vs2017, windows-vs2017-shared, windows-vs2019, windows-vs2019-shared, windows-vs2022, windows-vs2022-shared, apple, apple-gpu, apple-bitcode, apple-gpu-bitcode] |
| | runs-on: ubuntu-latest |
| | steps: |
| | - name: download |
| | uses: actions/download-artifact@v3 |
| | with: |
| | path: artifacts |
| |
|
| | - name: create-release |
| | uses: softprops/action-gh-release@v1 |
| | with: |
| | token: ${{ secrets.GITHUB_TOKEN }} |
| | tag_name: ${{ needs.setup.outputs.VERSION }} |
| | name: Release ${{ needs.setup.outputs.VERSION }} |
| | files: artifacts/*/*.zip |
| |
|