diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 169013dbe9c..ff66d06ace6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -168,9 +168,14 @@ jobs: macos: needs: [setup, openmp-macos] + strategy: + matrix: + opt: + - { vulkan: OFF, id: macos } + - { vulkan: ON, id: macos-vulkan } runs-on: macos-13 env: - PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-macos + PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-${{ matrix.opt.id }} NCNN_CMAKE_OPTIONS: | -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake \ -DDEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET \ @@ -186,6 +191,7 @@ jobs: -DNCNN_BUILD_TOOLS=OFF \ -DNCNN_BUILD_EXAMPLES=OFF \ -DNCNN_BUILD_BENCHMARK=OFF \ + -DNCNN_VULKAN=${{ matrix.opt.vulkan }} \ steps: - uses: actions/checkout@v4 @@ -212,18 +218,6 @@ jobs: cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=MAC_ARM64 -DARCHS="arm64" .. cmake --build . -j 4 cmake --build . --target install/strip - - name: build-x86_64-vulkan - run: | - mkdir build-x86_64-vulkan && cd build-x86_64-vulkan - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=MAC -DARCHS="x86_64" -DNCNN_VULKAN=ON .. - cmake --build . -j 4 - cmake --build . --target install/strip - - name: build-arm64-vulkan - run: | - mkdir build-arm64-vulkan && cd build-arm64-vulkan - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=MAC_ARM64 -DARCHS="arm64" -DNCNN_VULKAN=ON .. - cmake --build . -j 4 - cmake --build . --target install/strip - name: package-openmp run: | rm -rf openmp.framework @@ -236,21 +230,8 @@ jobs: 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__/18.1/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: package-glslang + if: matrix.opt.vulkan == 'ON' run: | rm -rf glslang.framework mkdir -p glslang.framework/Versions/A/Headers @@ -259,12 +240,26 @@ jobs: 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-vulkan/install/lib/libglslang.a build-x86_64-vulkan/install/lib/libMachineIndependent.a build-x86_64-vulkan/install/lib/libGenericCodeGen.a build-x86_64-vulkan/install/lib/libSPIRV.a build-x86_64-vulkan/install/lib/libOGLCompiler.a build-x86_64-vulkan/install/lib/libOSDependent.a -o build-x86_64-vulkan/install/lib/libglslang_combined.a - libtool -static build-arm64-vulkan/install/lib/libglslang.a build-arm64-vulkan/install/lib/libMachineIndependent.a build-arm64-vulkan/install/lib/libGenericCodeGen.a build-arm64-vulkan/install/lib/libSPIRV.a build-arm64-vulkan/install/lib/libOGLCompiler.a build-arm64-vulkan/install/lib/libOSDependent.a -o build-arm64-vulkan/install/lib/libglslang_combined.a - lipo -create build-x86_64-vulkan/install/lib/libglslang_combined.a build-arm64-vulkan/install/lib/libglslang_combined.a -o glslang.framework/Versions/A/glslang - cp -a build-x86_64-vulkan/install/include/glslang glslang.framework/Versions/A/Headers/ + 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-vulkan + - name: package-ncnn run: | rm -rf ncnn.framework mkdir -p ncnn.framework/Versions/A/Headers @@ -273,21 +268,24 @@ jobs: 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-vulkan/install/lib/libncnn.a build-arm64-vulkan/install/lib/libncnn.a -o ncnn.framework/Versions/A/ncnn - cp -a build-x86_64-vulkan/install/include/* ncnn.framework/Versions/A/Headers/ + 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 }}-vulkan.zip - zip -9 -y -r ${{ env.PACKAGENAME }}-vulkan.zip openmp.framework glslang.framework ncnn.framework + - name: package + if: matrix.opt.vulkan == 'OFF' + run: | + rm -f ${{ env.PACKAGENAME }}.zip + zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.framework ncnn.framework + - name: package + if: matrix.opt.vulkan == 'ON' + run: | + 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@v4 with: name: ${{ env.PACKAGENAME }} path: ${{ env.PACKAGENAME }}.zip - - name: upload-zip-vulkan - uses: actions/upload-artifact@v4 - with: - name: ${{ env.PACKAGENAME }}-vulkan - path: ${{ env.PACKAGENAME }}-vulkan.zip openmp-ios: runs-on: macos-13