mirror of
https://github.com/Tencent/ncnn.git
synced 2026-10-20 15:42:04 +08:00
244f30c8b9
Bumps [actions/cache](https://github.com/actions/cache) from 5 to 6. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/cache dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2327 lines
108 KiB
YAML
2327 lines
108 KiB
YAML
name: release
|
|
on:
|
|
push:
|
|
tags:
|
|
- '*'
|
|
workflow_dispatch:
|
|
|
|
env:
|
|
DEVELOPER_DIR: /Applications/Xcode_16.4.0.app/Contents/Developer
|
|
IOS_DEPLOYMENT_TARGET: '13.0'
|
|
MAC_DEPLOYMENT_TARGET: '11.0'
|
|
MAC_CATALYST_DEPLOYMENT_TARGET: '13.1'
|
|
WATCHOS_DEPLOYMENT_TARGET: '6.0'
|
|
TVOS_DEPLOYMENT_TARGET: '11.0'
|
|
VISIONOS_DEPLOYMENT_TARGET: '1.0'
|
|
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@v7
|
|
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@v7
|
|
with:
|
|
name: ${{ env.PACKAGENAME }}
|
|
path: /tmp/${{ env.PACKAGENAME }}.zip
|
|
|
|
ubuntu:
|
|
needs: [setup]
|
|
strategy:
|
|
matrix:
|
|
opt:
|
|
- { shared-lib: OFF, os: ubuntu-22.04, id: ubuntu-2204 }
|
|
- { shared-lib: OFF, os: ubuntu-24.04, id: ubuntu-2404 }
|
|
- { shared-lib: ON, os: ubuntu-22.04, id: ubuntu-2204-shared }
|
|
- { shared-lib: ON, os: ubuntu-24.04, id: ubuntu-2404-shared }
|
|
runs-on: ${{ matrix.opt.os }}
|
|
env:
|
|
PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-${{ matrix.opt.id }}
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
- name: apt
|
|
run: |
|
|
sudo apt-get install -y 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=${{ matrix.opt.shared-lib }} ..
|
|
cmake --build . -j $(nproc)
|
|
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@v7
|
|
with:
|
|
name: ${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
openmp-macos:
|
|
runs-on: macos-15-intel
|
|
env:
|
|
OPENMP_VERSION: '18.1.2'
|
|
OPENMP_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DLIBOMP_ENABLE_SHARED=OFF \
|
|
-DLIBOMP_OMPT_SUPPORT=OFF \
|
|
-DLIBOMP_USE_HWLOC=OFF \
|
|
steps:
|
|
- name: cache-openmp
|
|
id: cache-openmp
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: openmp-install
|
|
key: openmp-macos-release-18.1.2-20251004
|
|
- name: checkout
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
uses: actions/checkout@v7
|
|
- name: openmp
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
mv cmake-${{ env.OPENMP_VERSION }}.src/Modules/* openmp-${{ env.OPENMP_VERSION }}.src/cmake/
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
wget https://github.com/nihui/llvm-project/commit/ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
patch -p2 -i ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
wget https://github.com/nihui/llvm-project/commit/5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
patch -p2 -i 5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
- name: build-x86_64
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-x86_64 && cd build-x86_64
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=MAC -DARCHS="x86_64" ..
|
|
cmake --build . -j 4
|
|
cmake --build . --target install/strip
|
|
- name: build-arm64
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-arm64 && cd build-arm64
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=MAC_ARM64 -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
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-${{ env.OPENMP_VERSION }}.src/build-x86_64/install/include $GITHUB_WORKSPACE/openmp-install
|
|
mkdir -p $GITHUB_WORKSPACE/openmp-install/lib
|
|
lipo -create \
|
|
openmp-${{ env.OPENMP_VERSION }}.src/build-x86_64/install/lib/libomp.a \
|
|
openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/lib/libomp.a \
|
|
-o $GITHUB_WORKSPACE/openmp-install/lib/libomp.a
|
|
- name: upload
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: openmp-macos
|
|
path: openmp-install
|
|
|
|
macos:
|
|
needs: [setup, openmp-macos]
|
|
strategy:
|
|
matrix:
|
|
opt:
|
|
- { vulkan: OFF, id: macos }
|
|
- { vulkan: ON, id: macos-vulkan }
|
|
runs-on: macos-15-intel
|
|
env:
|
|
PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-${{ matrix.opt.id }}
|
|
NCNN_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \
|
|
-DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \
|
|
-DOpenMP_libomp_LIBRARY="libomp.a" \
|
|
-DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \
|
|
-DNCNN_BUILD_TOOLS=OFF \
|
|
-DNCNN_BUILD_EXAMPLES=OFF \
|
|
-DNCNN_BUILD_BENCHMARK=OFF \
|
|
-DNCNN_VULKAN=${{ matrix.opt.vulkan }} \
|
|
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
- name: download-openmp-macos
|
|
uses: actions/download-artifact@v8
|
|
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 ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=MAC -DARCHS="x86_64" ..
|
|
cmake --build . -j 4
|
|
cmake --build . --target install/strip
|
|
- name: build-arm64
|
|
run: |
|
|
mkdir build-arm64 && cd build-arm64
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=MAC_ARM64 -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
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__/18.1/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist
|
|
- name: package-glslang
|
|
if: matrix.opt.vulkan == 'ON'
|
|
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/libSPIRV.a \
|
|
-o build-x86_64/install/lib/libglslang_combined.a
|
|
libtool -static \
|
|
build-arm64/install/lib/libglslang.a \
|
|
build-arm64/install/lib/libSPIRV.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-ncnn
|
|
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
|
|
- 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@v7
|
|
with:
|
|
name: ${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
openmp-ios:
|
|
runs-on: macos-15-intel
|
|
env:
|
|
OPENMP_VERSION: '18.1.2'
|
|
OPENMP_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DLIBOMP_ENABLE_SHARED=OFF \
|
|
-DLIBOMP_OMPT_SUPPORT=OFF \
|
|
-DLIBOMP_USE_HWLOC=OFF \
|
|
steps:
|
|
- name: cache-openmp
|
|
id: cache-openmp
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: openmp-install
|
|
key: openmp-ios-release-18.1.2-20251004
|
|
- name: checkout
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
uses: actions/checkout@v7
|
|
- name: openmp
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
mv cmake-${{ env.OPENMP_VERSION }}.src/Modules/* openmp-${{ env.OPENMP_VERSION }}.src/cmake/
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
wget https://github.com/nihui/llvm-project/commit/ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
patch -p2 -i ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
wget https://github.com/nihui/llvm-project/commit/5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
patch -p2 -i 5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
- name: build-arm64
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-arm64 && cd build-arm64
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=OS64 -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
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-${{ env.OPENMP_VERSION }}.src/build-arm64/install/include $GITHUB_WORKSPACE/openmp-install
|
|
mkdir -p $GITHUB_WORKSPACE/openmp-install/lib
|
|
cp openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/lib/libomp.a $GITHUB_WORKSPACE/openmp-install/lib/libomp.a
|
|
- name: upload
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: openmp-ios
|
|
path: openmp-install
|
|
|
|
ios:
|
|
needs: [setup, openmp-ios]
|
|
strategy:
|
|
matrix:
|
|
opt:
|
|
- { vulkan: OFF, id: ios }
|
|
- { vulkan: ON, id: ios-vulkan }
|
|
runs-on: macos-15-intel
|
|
env:
|
|
PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-${{ matrix.opt.id }}
|
|
NCNN_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \
|
|
-DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \
|
|
-DOpenMP_libomp_LIBRARY="libomp.a" \
|
|
-DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \
|
|
-DNCNN_BUILD_BENCHMARK=OFF \
|
|
-DNCNN_VULKAN=${{ matrix.opt.vulkan }} \
|
|
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
- name: download-openmp-ios
|
|
uses: actions/download-artifact@v8
|
|
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-arm64
|
|
run: |
|
|
mkdir build-arm64 && cd build-arm64
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=OS64 -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
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__/18.1/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist
|
|
- name: package-glslang
|
|
if: matrix.opt.vulkan == 'ON'
|
|
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/libSPIRV.a \
|
|
-o build-arm64/install/lib/libglslang_combined.a
|
|
cp build-arm64/install/lib/libglslang_combined.a 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-ncnn
|
|
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
|
|
cp build-arm64/install/lib/libncnn.a 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
|
|
- 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@v7
|
|
with:
|
|
name: ${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
openmp-ios-simulator:
|
|
runs-on: macos-15-intel
|
|
env:
|
|
OPENMP_VERSION: '18.1.2'
|
|
OPENMP_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DLIBOMP_ENABLE_SHARED=OFF \
|
|
-DLIBOMP_OMPT_SUPPORT=OFF \
|
|
-DLIBOMP_USE_HWLOC=OFF \
|
|
steps:
|
|
- name: cache-openmp
|
|
id: cache-openmp
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: openmp-install
|
|
key: openmp-ios-simulator-release-18.1.2-20251004
|
|
- name: checkout
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
uses: actions/checkout@v7
|
|
- name: openmp
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
mv cmake-${{ env.OPENMP_VERSION }}.src/Modules/* openmp-${{ env.OPENMP_VERSION }}.src/cmake/
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
wget https://github.com/nihui/llvm-project/commit/ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
patch -p2 -i ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
wget https://github.com/nihui/llvm-project/commit/5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
patch -p2 -i 5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
- name: build-x86_64
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-x86_64 && cd build-x86_64
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR64 -DARCHS="x86_64" ..
|
|
cmake --build . -j 4
|
|
cmake --build . --target install/strip
|
|
- name: build-arm64
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-arm64 && cd build-arm64
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATORARM64 -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
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-${{ env.OPENMP_VERSION }}.src/build-x86_64/install/include $GITHUB_WORKSPACE/openmp-install
|
|
mkdir -p $GITHUB_WORKSPACE/openmp-install/lib
|
|
lipo -create \
|
|
openmp-${{ env.OPENMP_VERSION }}.src/build-x86_64/install/lib/libomp.a \
|
|
openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/lib/libomp.a \
|
|
-o $GITHUB_WORKSPACE/openmp-install/lib/libomp.a
|
|
- name: upload
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: openmp-ios-simulator
|
|
path: openmp-install
|
|
|
|
ios-simulator:
|
|
needs: [setup, openmp-ios-simulator]
|
|
strategy:
|
|
matrix:
|
|
opt:
|
|
- { vulkan: OFF, id: ios-simulator }
|
|
- { vulkan: ON, id: ios-simulator-vulkan }
|
|
runs-on: macos-15-intel
|
|
env:
|
|
PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-${{ matrix.opt.id }}
|
|
NCNN_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$IOS_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \
|
|
-DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \
|
|
-DOpenMP_libomp_LIBRARY="libomp.a" \
|
|
-DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \
|
|
-DNCNN_BUILD_BENCHMARK=OFF \
|
|
-DNCNN_VULKAN=${{ matrix.opt.vulkan }} \
|
|
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
- name: download-openmp-ios-simulator
|
|
uses: actions/download-artifact@v8
|
|
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-x86_64
|
|
run: |
|
|
mkdir build-x86_64 && cd build-x86_64
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR64 -DARCHS="x86_64" ..
|
|
cmake --build . -j 4
|
|
cmake --build . --target install/strip
|
|
- name: build-arm64
|
|
run: |
|
|
mkdir build-arm64 && cd build-arm64
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATORARM64 -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
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__/18.1/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist
|
|
- name: package-glslang
|
|
if: matrix.opt.vulkan == 'ON'
|
|
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/libSPIRV.a \
|
|
-o build-x86_64/install/lib/libglslang_combined.a
|
|
libtool -static \
|
|
build-arm64/install/lib/libglslang.a \
|
|
build-arm64/install/lib/libSPIRV.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-ncnn
|
|
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
|
|
- 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@v7
|
|
with:
|
|
name: ${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
openmp-mac-catalyst:
|
|
runs-on: macos-15-intel
|
|
env:
|
|
OPENMP_VERSION: '18.1.2'
|
|
OPENMP_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DLIBOMP_ENABLE_SHARED=OFF \
|
|
-DLIBOMP_OMPT_SUPPORT=OFF \
|
|
-DLIBOMP_USE_HWLOC=OFF \
|
|
steps:
|
|
- name: cache-openmp
|
|
id: cache-openmp
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: openmp-install
|
|
key: openmp-mac-catalyst-release-18.1.2-20251004
|
|
- name: checkout
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
uses: actions/checkout@v7
|
|
- name: openmp
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
mv cmake-${{ env.OPENMP_VERSION }}.src/Modules/* openmp-${{ env.OPENMP_VERSION }}.src/cmake/
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
wget https://github.com/nihui/llvm-project/commit/ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
patch -p2 -i ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
wget https://github.com/nihui/llvm-project/commit/5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
patch -p2 -i 5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
- name: build-x86_64
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-x86_64 && cd build-x86_64
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=MAC_CATALYST -DARCHS="x86_64" ..
|
|
cmake --build . -j 4
|
|
cmake --build . --target install/strip
|
|
- name: build-arm64
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-arm64 && cd build-arm64
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=MAC_CATALYST_ARM64 -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
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-${{ env.OPENMP_VERSION }}.src/build-x86_64/install/include $GITHUB_WORKSPACE/openmp-install
|
|
mkdir -p $GITHUB_WORKSPACE/openmp-install/lib
|
|
lipo -create \
|
|
openmp-${{ env.OPENMP_VERSION }}.src/build-x86_64/install/lib/libomp.a \
|
|
openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/lib/libomp.a \
|
|
-o $GITHUB_WORKSPACE/openmp-install/lib/libomp.a
|
|
- name: upload
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: openmp-mac-catalyst
|
|
path: openmp-install
|
|
|
|
mac-catalyst:
|
|
needs: [setup, openmp-mac-catalyst]
|
|
strategy:
|
|
matrix:
|
|
opt:
|
|
- { vulkan: OFF, id: mac-catalyst }
|
|
- { vulkan: ON, id: mac-catalyst-vulkan }
|
|
runs-on: macos-15-intel
|
|
env:
|
|
PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-${{ matrix.opt.id }}
|
|
NCNN_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \
|
|
-DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \
|
|
-DOpenMP_libomp_LIBRARY="libomp.a" \
|
|
-DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \
|
|
-DNCNN_BUILD_BENCHMARK=OFF \
|
|
-DNCNN_VULKAN=${{ matrix.opt.vulkan }} \
|
|
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
- name: download-openmp-mac-catalyst
|
|
uses: actions/download-artifact@v8
|
|
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 ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=MAC_CATALYST -DARCHS="x86_64" ..
|
|
cmake --build . -j 4
|
|
cmake --build . --target install/strip
|
|
- name: build-arm64
|
|
run: |
|
|
mkdir build-arm64 && cd build-arm64
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=MAC_CATALYST -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
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__/18.1/g' Info.plist > openmp.framework/Versions/A/Resources/Info.plist
|
|
- name: package-glslang
|
|
if: matrix.opt.vulkan == 'ON'
|
|
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/libSPIRV.a \
|
|
-o build-x86_64/install/lib/libglslang_combined.a
|
|
libtool -static \
|
|
build-arm64/install/lib/libglslang.a \
|
|
build-arm64/install/lib/libSPIRV.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-ncnn
|
|
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
|
|
- 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@v7
|
|
with:
|
|
name: ${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
openmp-watchos:
|
|
runs-on: macos-15-intel
|
|
env:
|
|
OPENMP_VERSION: '18.1.2'
|
|
OPENMP_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$WATCHOS_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DLIBOMP_ENABLE_SHARED=OFF \
|
|
-DLIBOMP_OMPT_SUPPORT=OFF \
|
|
-DLIBOMP_USE_HWLOC=OFF \
|
|
steps:
|
|
- name: cache-openmp
|
|
id: cache-openmp
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: openmp-install
|
|
key: openmp-watchos-release-18.1.2-20251004
|
|
- name: checkout
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
uses: actions/checkout@v7
|
|
- name: openmp
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
mv cmake-${{ env.OPENMP_VERSION }}.src/Modules/* openmp-${{ env.OPENMP_VERSION }}.src/cmake/
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
wget https://github.com/nihui/llvm-project/commit/ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
patch -p2 -i ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
wget https://github.com/nihui/llvm-project/commit/5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
patch -p2 -i 5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
- name: build-armv7k
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-armv7k && cd build-armv7k
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=WATCHOS -DARCHS="armv7k" ..
|
|
cmake --build . -j 4
|
|
cmake --build . --target install/strip
|
|
- name: build-arm64_32
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-arm64_32 && cd build-arm64_32
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=WATCHOS -DARCHS="arm64_32" ..
|
|
cmake --build . -j 4
|
|
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-${{ env.OPENMP_VERSION }}.src/build-arm64_32/install/include $GITHUB_WORKSPACE/openmp-install
|
|
mkdir -p $GITHUB_WORKSPACE/openmp-install/lib
|
|
lipo -create \
|
|
openmp-${{ env.OPENMP_VERSION }}.src/build-armv7k/install/lib/libomp.a \
|
|
openmp-${{ env.OPENMP_VERSION }}.src/build-arm64_32/install/lib/libomp.a \
|
|
-o $GITHUB_WORKSPACE/openmp-install/lib/libomp.a
|
|
- name: upload
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: openmp-watchos
|
|
path: openmp-install
|
|
|
|
watchos:
|
|
needs: [setup, openmp-watchos]
|
|
runs-on: macos-15-intel
|
|
env:
|
|
PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-watchos
|
|
NCNN_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$WATCHOS_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \
|
|
-DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \
|
|
-DOpenMP_libomp_LIBRARY="libomp.a" \
|
|
-DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \
|
|
-DNCNN_BUILD_BENCHMARK=OFF \
|
|
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
- name: download-openmp-watchos
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: openmp-watchos
|
|
path: openmp-watchos
|
|
- name: install-openmp
|
|
run: |
|
|
sudo cp openmp-watchos/include/* $DEVELOPER_DIR/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/usr/include
|
|
sudo cp openmp-watchos/lib/libomp.a $DEVELOPER_DIR/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/usr/lib
|
|
- name: build-armv7k
|
|
run: |
|
|
mkdir build-armv7k && cd build-armv7k
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=WATCHOS -DARCHS="armv7k" ..
|
|
cmake --build . -j 4
|
|
cmake --build . --target install/strip
|
|
- name: build-arm64_32
|
|
run: |
|
|
mkdir build-arm64_32 && cd build-arm64_32
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=WATCHOS -DARCHS="arm64_32" ..
|
|
cmake --build . -j 4
|
|
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-watchos/lib/libomp.a openmp.framework/Versions/A/openmp
|
|
cp -a openmp-watchos/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-armv7k/install/lib/libncnn.a \
|
|
build-arm64_32/install/lib/libncnn.a \
|
|
-o ncnn.framework/Versions/A/ncnn
|
|
cp -a build-arm64_32/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@v7
|
|
with:
|
|
name: ${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
openmp-watchos-simulator:
|
|
runs-on: macos-15-intel
|
|
env:
|
|
OPENMP_VERSION: '18.1.2'
|
|
OPENMP_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$WATCHOS_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DLIBOMP_ENABLE_SHARED=OFF \
|
|
-DLIBOMP_OMPT_SUPPORT=OFF \
|
|
-DLIBOMP_USE_HWLOC=OFF \
|
|
steps:
|
|
- name: cache-openmp
|
|
id: cache-openmp
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: openmp-install
|
|
key: openmp-watchos-simulator-release-18.1.2-20251004
|
|
- name: checkout
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
uses: actions/checkout@v7
|
|
- name: openmp
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
mv cmake-${{ env.OPENMP_VERSION }}.src/Modules/* openmp-${{ env.OPENMP_VERSION }}.src/cmake/
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
wget https://github.com/nihui/llvm-project/commit/ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
patch -p2 -i ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
wget https://github.com/nihui/llvm-project/commit/5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
patch -p2 -i 5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
- name: build-x86_64
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-x86_64 && cd build-x86_64
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_WATCHOS -DARCHS="x86_64" ..
|
|
cmake --build . -j 4
|
|
cmake --build . --target install/strip
|
|
- name: build-arm64
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-arm64 && cd build-arm64
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_WATCHOS -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
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-${{ env.OPENMP_VERSION }}.src/build-x86_64/install/include $GITHUB_WORKSPACE/openmp-install
|
|
mkdir -p $GITHUB_WORKSPACE/openmp-install/lib
|
|
lipo -create \
|
|
openmp-${{ env.OPENMP_VERSION }}.src/build-x86_64/install/lib/libomp.a \
|
|
openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/lib/libomp.a \
|
|
-o $GITHUB_WORKSPACE/openmp-install/lib/libomp.a
|
|
- name: upload
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: openmp-watchos-simulator
|
|
path: openmp-install
|
|
|
|
watchos-simulator:
|
|
needs: [setup, openmp-watchos-simulator]
|
|
runs-on: macos-15-intel
|
|
env:
|
|
PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-watchos-simulator
|
|
NCNN_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$WATCHOS_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \
|
|
-DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \
|
|
-DOpenMP_libomp_LIBRARY="libomp.a" \
|
|
-DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \
|
|
-DNCNN_BUILD_BENCHMARK=OFF \
|
|
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
- name: download-openmp-watchos-simulator
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: openmp-watchos-simulator
|
|
path: openmp-watchos-simulator
|
|
- name: install-openmp
|
|
run: |
|
|
sudo cp openmp-watchos-simulator/include/* $DEVELOPER_DIR/Platforms/WatchSimulator.platform/Developer/SDKs/WatchSimulator.sdk/usr/include
|
|
sudo cp openmp-watchos-simulator/lib/libomp.a $DEVELOPER_DIR/Platforms/WatchSimulator.platform/Developer/SDKs/WatchSimulator.sdk/usr/lib
|
|
- name: build-x86_64
|
|
run: |
|
|
mkdir build-x86_64 && cd build-x86_64
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_WATCHOS -DARCHS="x86_64" ..
|
|
cmake --build . -j 4
|
|
cmake --build . --target install/strip
|
|
- name: build-arm64
|
|
run: |
|
|
mkdir build-arm64 && cd build-arm64
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_WATCHOS -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
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-watchos-simulator/lib/libomp.a openmp.framework/Versions/A/openmp
|
|
cp -a openmp-watchos-simulator/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: upload-zip
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: ${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
openmp-tvos:
|
|
runs-on: macos-15-intel
|
|
env:
|
|
OPENMP_VERSION: '18.1.2'
|
|
OPENMP_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$TVOS_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DLIBOMP_ENABLE_SHARED=OFF \
|
|
-DLIBOMP_OMPT_SUPPORT=OFF \
|
|
-DLIBOMP_USE_HWLOC=OFF \
|
|
steps:
|
|
- name: cache-openmp
|
|
id: cache-openmp
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: openmp-install
|
|
key: openmp-tvos-release-18.1.2-20251004
|
|
- name: checkout
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
uses: actions/checkout@v7
|
|
- name: openmp
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
mv cmake-${{ env.OPENMP_VERSION }}.src/Modules/* openmp-${{ env.OPENMP_VERSION }}.src/cmake/
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
wget https://github.com/nihui/llvm-project/commit/ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
patch -p2 -i ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
wget https://github.com/nihui/llvm-project/commit/5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
patch -p2 -i 5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
- name: build-arm64
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-arm64 && cd build-arm64
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=TVOS -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
cmake --build . --target install/strip
|
|
- name: build-arm64e
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-arm64e && cd build-arm64e
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=TVOS -DARCHS="arm64e" ..
|
|
cmake --build . -j 4
|
|
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-${{ env.OPENMP_VERSION }}.src/build-arm64/install/include $GITHUB_WORKSPACE/openmp-install
|
|
mkdir -p $GITHUB_WORKSPACE/openmp-install/lib
|
|
lipo -create \
|
|
openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/lib/libomp.a \
|
|
openmp-${{ env.OPENMP_VERSION }}.src/build-arm64e/install/lib/libomp.a \
|
|
-o $GITHUB_WORKSPACE/openmp-install/lib/libomp.a
|
|
- name: upload
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: openmp-tvos
|
|
path: openmp-install
|
|
|
|
tvos:
|
|
needs: [setup, openmp-tvos]
|
|
strategy:
|
|
matrix:
|
|
opt:
|
|
- { vulkan: OFF, id: tvos }
|
|
- { vulkan: ON, id: tvos-vulkan }
|
|
runs-on: macos-15-intel
|
|
env:
|
|
PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-${{ matrix.opt.id }}
|
|
NCNN_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$TVOS_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \
|
|
-DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \
|
|
-DOpenMP_libomp_LIBRARY="libomp.a" \
|
|
-DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \
|
|
-DNCNN_BUILD_BENCHMARK=OFF \
|
|
-DNCNN_VULKAN=${{ matrix.opt.vulkan }} \
|
|
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
- name: download-openmp-tvos
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: openmp-tvos
|
|
path: openmp-tvos
|
|
- name: install-openmp
|
|
run: |
|
|
sudo cp openmp-tvos/include/* $DEVELOPER_DIR/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/include
|
|
sudo cp openmp-tvos/lib/libomp.a $DEVELOPER_DIR/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/lib
|
|
- name: build-arm64
|
|
run: |
|
|
mkdir build-arm64 && cd build-arm64
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=TVOS -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
cmake --build . --target install/strip
|
|
- name: build-arm64e
|
|
run: |
|
|
mkdir build-arm64e && cd build-arm64e
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=TVOS -DARCHS="arm64e" ..
|
|
cmake --build . -j 4
|
|
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-tvos/lib/libomp.a openmp.framework/Versions/A/openmp
|
|
cp -a openmp-tvos/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-glslang
|
|
if: matrix.opt.vulkan == 'ON'
|
|
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/libSPIRV.a \
|
|
-o build-arm64/install/lib/libglslang_combined.a
|
|
libtool -static \
|
|
build-arm64e/install/lib/libglslang.a \
|
|
build-arm64e/install/lib/libSPIRV.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-ncnn
|
|
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.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
|
|
- 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@v7
|
|
with:
|
|
name: ${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
openmp-tvos-simulator:
|
|
runs-on: macos-15-intel
|
|
env:
|
|
OPENMP_VERSION: '18.1.2'
|
|
OPENMP_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$TVOS_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DLIBOMP_ENABLE_SHARED=OFF \
|
|
-DLIBOMP_OMPT_SUPPORT=OFF \
|
|
-DLIBOMP_USE_HWLOC=OFF \
|
|
steps:
|
|
- name: cache-openmp
|
|
id: cache-openmp
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: openmp-install
|
|
key: openmp-tvos-simulator-release-18.1.2-20251004
|
|
- name: checkout
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
uses: actions/checkout@v7
|
|
- name: openmp
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
mv cmake-${{ env.OPENMP_VERSION }}.src/Modules/* openmp-${{ env.OPENMP_VERSION }}.src/cmake/
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
wget https://github.com/nihui/llvm-project/commit/ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
patch -p2 -i ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
wget https://github.com/nihui/llvm-project/commit/5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
patch -p2 -i 5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
- name: build-x86_64
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-x86_64 && cd build-x86_64
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_TVOS -DARCHS="x86_64" ..
|
|
cmake --build . -j 4
|
|
cmake --build . --target install/strip
|
|
- name: build-arm64
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-arm64 && cd build-arm64
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_TVOS -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
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-${{ env.OPENMP_VERSION }}.src/build-x86_64/install/include $GITHUB_WORKSPACE/openmp-install
|
|
mkdir -p $GITHUB_WORKSPACE/openmp-install/lib
|
|
lipo -create \
|
|
openmp-${{ env.OPENMP_VERSION }}.src/build-x86_64/install/lib/libomp.a \
|
|
openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/lib/libomp.a \
|
|
-o $GITHUB_WORKSPACE/openmp-install/lib/libomp.a
|
|
- name: upload
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: openmp-tvos-simulator
|
|
path: openmp-install
|
|
|
|
tvos-simulator:
|
|
needs: [setup, openmp-tvos-simulator]
|
|
strategy:
|
|
matrix:
|
|
opt:
|
|
- { vulkan: OFF, id: tvos-simulator }
|
|
- { vulkan: ON, id: tvos-simulator-vulkan }
|
|
runs-on: macos-15-intel
|
|
env:
|
|
PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-${{ matrix.opt.id }}
|
|
NCNN_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$TVOS_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \
|
|
-DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \
|
|
-DOpenMP_libomp_LIBRARY="libomp.a" \
|
|
-DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \
|
|
-DNCNN_BUILD_BENCHMARK=OFF \
|
|
-DNCNN_VULKAN=${{ matrix.opt.vulkan }} \
|
|
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
- name: download-openmp-tvos-simulator
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: openmp-tvos-simulator
|
|
path: openmp-tvos-simulator
|
|
- name: install-openmp
|
|
run: |
|
|
sudo cp openmp-tvos-simulator/include/* $DEVELOPER_DIR/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/usr/include
|
|
sudo cp openmp-tvos-simulator/lib/libomp.a $DEVELOPER_DIR/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/usr/lib
|
|
- name: build-x86_64
|
|
run: |
|
|
mkdir build-x86_64 && cd build-x86_64
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_TVOS -DARCHS="x86_64" ..
|
|
cmake --build . -j 4
|
|
cmake --build . --target install/strip
|
|
- name: build-arm64
|
|
run: |
|
|
mkdir build-arm64 && cd build-arm64
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_TVOS -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
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-tvos-simulator/lib/libomp.a openmp.framework/Versions/A/openmp
|
|
cp -a openmp-tvos-simulator/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-glslang
|
|
if: matrix.opt.vulkan == 'ON'
|
|
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/libSPIRV.a \
|
|
-o build-x86_64/install/lib/libglslang_combined.a
|
|
libtool -static \
|
|
build-arm64/install/lib/libglslang.a \
|
|
build-arm64/install/lib/libSPIRV.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-ncnn
|
|
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
|
|
- 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@v7
|
|
with:
|
|
name: ${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
openmp-visionos:
|
|
runs-on: macos-15-intel
|
|
env:
|
|
OPENMP_VERSION: '18.1.2'
|
|
OPENMP_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$VISIONOS_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DLIBOMP_ENABLE_SHARED=OFF \
|
|
-DLIBOMP_OMPT_SUPPORT=OFF \
|
|
-DLIBOMP_USE_HWLOC=OFF \
|
|
steps:
|
|
- name: cache-openmp
|
|
id: cache-openmp
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: openmp-install
|
|
key: openmp-visionos-release-18.1.2-20251004
|
|
- name: checkout
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
uses: actions/checkout@v7
|
|
- name: openmp
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
mv cmake-${{ env.OPENMP_VERSION }}.src/Modules/* openmp-${{ env.OPENMP_VERSION }}.src/cmake/
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
wget https://github.com/nihui/llvm-project/commit/ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
patch -p2 -i ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
wget https://github.com/nihui/llvm-project/commit/5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
patch -p2 -i 5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
- name: build-arm64
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-arm64 && cd build-arm64
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=VISIONOS -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
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-${{ env.OPENMP_VERSION }}.src/build-arm64/install/include $GITHUB_WORKSPACE/openmp-install
|
|
mkdir -p $GITHUB_WORKSPACE/openmp-install/lib
|
|
cp openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/lib/libomp.a $GITHUB_WORKSPACE/openmp-install/lib/libomp.a
|
|
- name: upload
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: openmp-visionos
|
|
path: openmp-install
|
|
|
|
visionos:
|
|
needs: [setup, openmp-visionos]
|
|
strategy:
|
|
matrix:
|
|
opt:
|
|
- { vulkan: OFF, id: visionos }
|
|
- { vulkan: ON, id: visionos-vulkan }
|
|
runs-on: macos-15-intel
|
|
env:
|
|
PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-${{ matrix.opt.id }}
|
|
NCNN_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$VISIONOS_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \
|
|
-DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \
|
|
-DOpenMP_libomp_LIBRARY="libomp.a" \
|
|
-DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \
|
|
-DNCNN_BUILD_BENCHMARK=OFF \
|
|
-DNCNN_VULKAN=${{ matrix.opt.vulkan }} \
|
|
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
- name: download-openmp-visionos
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: openmp-visionos
|
|
path: openmp-visionos
|
|
- name: install-openmp
|
|
run: |
|
|
sudo cp openmp-visionos/include/* $DEVELOPER_DIR/Platforms/XROS.platform/Developer/SDKs/XROS.sdk/usr/include
|
|
sudo cp openmp-visionos/lib/libomp.a $DEVELOPER_DIR/Platforms/XROS.platform/Developer/SDKs/XROS.sdk/usr/lib
|
|
- name: build-arm64
|
|
run: |
|
|
mkdir build-arm64 && cd build-arm64
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=VISIONOS -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
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-visionos/lib/libomp.a openmp.framework/Versions/A/openmp
|
|
cp -a openmp-visionos/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-glslang
|
|
if: matrix.opt.vulkan == 'ON'
|
|
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/libSPIRV.a \
|
|
-o build-arm64/install/lib/libglslang_combined.a
|
|
cp build-arm64/install/lib/libglslang_combined.a 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-ncnn
|
|
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
|
|
cp build-arm64/install/lib/libncnn.a 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
|
|
- 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@v7
|
|
with:
|
|
name: ${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
openmp-visionos-simulator:
|
|
runs-on: macos-15-intel
|
|
env:
|
|
OPENMP_VERSION: '18.1.2'
|
|
OPENMP_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$VISIONOS_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DLIBOMP_ENABLE_SHARED=OFF \
|
|
-DLIBOMP_OMPT_SUPPORT=OFF \
|
|
-DLIBOMP_USE_HWLOC=OFF \
|
|
steps:
|
|
- name: cache-openmp
|
|
id: cache-openmp
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: openmp-install
|
|
key: openmp-visionos-simulator-release-18.1.2-20251004
|
|
- name: checkout
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
uses: actions/checkout@v7
|
|
- name: openmp
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
tar -xf openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
|
|
mv cmake-${{ env.OPENMP_VERSION }}.src/Modules/* openmp-${{ env.OPENMP_VERSION }}.src/cmake/
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
wget https://github.com/nihui/llvm-project/commit/ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
patch -p2 -i ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
|
|
wget https://github.com/nihui/llvm-project/commit/5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
patch -p2 -i 5c12711f9a21f41bea70566bf15a4026804d6b20.patch
|
|
- name: build-x86_64
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-x86_64 && cd build-x86_64
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_VISIONOS -DARCHS="x86_64" ..
|
|
cmake --build . -j 4
|
|
cmake --build . --target install/strip
|
|
- name: build-arm64
|
|
if: steps.cache-openmp.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd openmp-${{ env.OPENMP_VERSION }}.src
|
|
mkdir -p build-arm64 && cd build-arm64
|
|
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_VISIONOS -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
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-${{ env.OPENMP_VERSION }}.src/build-x86_64/install/include $GITHUB_WORKSPACE/openmp-install
|
|
mkdir -p $GITHUB_WORKSPACE/openmp-install/lib
|
|
lipo -create \
|
|
openmp-${{ env.OPENMP_VERSION }}.src/build-x86_64/install/lib/libomp.a \
|
|
openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/lib/libomp.a \
|
|
-o $GITHUB_WORKSPACE/openmp-install/lib/libomp.a
|
|
- name: upload
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: openmp-visionos-simulator
|
|
path: openmp-install
|
|
|
|
visionos-simulator:
|
|
needs: [setup, openmp-visionos-simulator]
|
|
strategy:
|
|
matrix:
|
|
opt:
|
|
- { vulkan: OFF, id: visionos-simulator }
|
|
- { vulkan: ON, id: visionos-simulator-vulkan }
|
|
runs-on: macos-15-intel
|
|
env:
|
|
PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-${{ matrix.opt.id }}
|
|
NCNN_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake \
|
|
-DDEPLOYMENT_TARGET=$VISIONOS_DEPLOYMENT_TARGET \
|
|
-DENABLE_BITCODE=$ENABLE_BITCODE \
|
|
-DENABLE_ARC=$ENABLE_ARC \
|
|
-DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \
|
|
-DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \
|
|
-DOpenMP_libomp_LIBRARY="libomp.a" \
|
|
-DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \
|
|
-DNCNN_BUILD_BENCHMARK=OFF \
|
|
-DNCNN_VULKAN=${{ matrix.opt.vulkan }} \
|
|
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
- name: download-openmp-visionos-simulator
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: openmp-visionos-simulator
|
|
path: openmp-visionos-simulator
|
|
- name: install-openmp
|
|
run: |
|
|
sudo cp openmp-visionos-simulator/include/* $DEVELOPER_DIR/Platforms/XRSimulator.platform/Developer/SDKs/XRSimulator.sdk/usr/include
|
|
sudo cp openmp-visionos-simulator/lib/libomp.a $DEVELOPER_DIR/Platforms/XRSimulator.platform/Developer/SDKs/XRSimulator.sdk/usr/lib
|
|
- name: build-x86_64
|
|
run: |
|
|
mkdir build-x86_64 && cd build-x86_64
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_VISIONOS -DARCHS="x86_64" ..
|
|
cmake --build . -j 4
|
|
cmake --build . --target install/strip
|
|
- name: build-arm64
|
|
run: |
|
|
mkdir build-arm64 && cd build-arm64
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_VISIONOS -DARCHS="arm64" ..
|
|
cmake --build . -j 4
|
|
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-visionos-simulator/lib/libomp.a openmp.framework/Versions/A/openmp
|
|
cp -a openmp-visionos-simulator/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-glslang
|
|
if: matrix.opt.vulkan == 'ON'
|
|
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/libSPIRV.a \
|
|
-o build-x86_64/install/lib/libglslang_combined.a
|
|
libtool -static \
|
|
build-arm64/install/lib/libglslang.a \
|
|
build-arm64/install/lib/libSPIRV.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-ncnn
|
|
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
|
|
- 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@v7
|
|
with:
|
|
name: ${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
android:
|
|
needs: [setup]
|
|
strategy:
|
|
matrix:
|
|
opt:
|
|
- { vulkan: OFF, shared-lib: OFF, id: android }
|
|
- { vulkan: OFF, shared-lib: ON, id: android-shared }
|
|
- { vulkan: ON, shared-lib: OFF, id: android-vulkan }
|
|
- { vulkan: ON, shared-lib: ON, id: android-vulkan-shared }
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-${{ matrix.opt.id }}
|
|
NCNN_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake \
|
|
-DANDROID_PLATFORM=android-21 \
|
|
-DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False \
|
|
-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \
|
|
-DNCNN_BUILD_BENCHMARK=OFF \
|
|
-DNCNN_VULKAN=${{ matrix.opt.vulkan }} \
|
|
-DNCNN_SHARED_LIB=${{ matrix.opt.shared-lib }} \
|
|
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
- name: ndk-fix-debug
|
|
run: sed -i -e '/^ -g$/d' $ANDROID_NDK_LATEST_HOME/build/cmake/android-legacy.toolchain.cmake
|
|
- name: build-armeabi-v7a
|
|
run: |
|
|
mkdir build-armeabi-v7a && cd build-armeabi-v7a
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON ..
|
|
cmake --build . -j $(nproc)
|
|
cmake --build . --target install/strip
|
|
- name: build-arm64-v8a
|
|
run: |
|
|
mkdir build-arm64-v8a && cd build-arm64-v8a
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="arm64-v8a" ..
|
|
cmake --build . -j $(nproc)
|
|
cmake --build . --target install/strip
|
|
- name: build-x86
|
|
run: |
|
|
mkdir build-x86 && cd build-x86
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="x86" ..
|
|
cmake --build . -j $(nproc)
|
|
cmake --build . --target install/strip
|
|
- name: build-x86_64
|
|
run: |
|
|
mkdir build-x86_64 && cd build-x86_64
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="x86_64" ..
|
|
cmake --build . -j $(nproc)
|
|
cmake --build . --target install/strip
|
|
- name: build-riscv64
|
|
run: |
|
|
mkdir build-riscv64 && cd build-riscv64
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="riscv64" ..
|
|
cmake --build . -j $(nproc)
|
|
cmake --build . --target install/strip
|
|
- name: package
|
|
run: |
|
|
rm -rf ${{ env.PACKAGENAME }}
|
|
mkdir -p ${{ env.PACKAGENAME }}
|
|
cp -a build-armeabi-v7a/install ${{ env.PACKAGENAME }}/armeabi-v7a
|
|
cp -a build-arm64-v8a/install ${{ env.PACKAGENAME }}/arm64-v8a
|
|
cp -a build-x86/install ${{ env.PACKAGENAME }}/x86
|
|
cp -a build-x86_64/install ${{ env.PACKAGENAME }}/x86_64
|
|
cp -a build-riscv64/install ${{ env.PACKAGENAME }}/riscv64
|
|
rm -f ${{ env.PACKAGENAME }}.zip
|
|
zip -9 -y -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
|
|
- name: upload-zip
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: ${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
harmonyos:
|
|
needs: [setup]
|
|
strategy:
|
|
matrix:
|
|
opt:
|
|
- { vulkan: OFF, shared-lib: OFF, id: harmonyos }
|
|
- { vulkan: OFF, shared-lib: ON, id: harmonyos-shared }
|
|
- { vulkan: ON, shared-lib: OFF, id: harmonyos-vulkan }
|
|
- { vulkan: ON, shared-lib: ON, id: harmonyos-vulkan-shared }
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-${{ matrix.opt.id }}
|
|
OHOS_NDK_HOME: $GITHUB_WORKSPACE/ohos-sdk/linux/native
|
|
OHOS_NDK_CMAKE: $GITHUB_WORKSPACE/ohos-sdk/linux/native/build-tools/cmake/bin/cmake
|
|
NCNN_CMAKE_OPTIONS: |
|
|
-DCMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/ohos-sdk/linux/native/build/cmake/ohos.toolchain.cmake \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_INSTALL_PREFIX=install \
|
|
-DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \
|
|
-DNCNN_BUILD_BENCHMARK=OFF \
|
|
-DNCNN_VULKAN=${{ matrix.opt.vulkan }} \
|
|
-DNCNN_SHARED_LIB=${{ matrix.opt.shared-lib }} \
|
|
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
- name: setup-sdk
|
|
run: |
|
|
wget -q https://repo.huaweicloud.com/harmonyos/os/5.0.3-Release/ohos-sdk-windows_linux-public.tar.gz
|
|
tar -xf ohos-sdk-windows_linux-public.tar.gz
|
|
cd ohos-sdk/linux
|
|
unzip -q native-linux-x64-5.0.3.135-Release.zip
|
|
- name: build-armeabi-v7a
|
|
run: |
|
|
mkdir build-armeabi-v7a && cd build-armeabi-v7a
|
|
${{ env.OHOS_NDK_CMAKE }} ${{ env.NCNN_CMAKE_OPTIONS }} -DOHOS_ARCH="armeabi-v7a" ..
|
|
${{ env.OHOS_NDK_CMAKE }} --build . -j $(nproc)
|
|
${{ env.OHOS_NDK_CMAKE }} --build . --target install/strip
|
|
- name: build-arm64-v8a
|
|
run: |
|
|
mkdir build-arm64-v8a && cd build-arm64-v8a
|
|
${{ env.OHOS_NDK_CMAKE }} ${{ env.NCNN_CMAKE_OPTIONS }} -DOHOS_ARCH="arm64-v8a" ..
|
|
${{ env.OHOS_NDK_CMAKE }} --build . -j $(nproc)
|
|
${{ env.OHOS_NDK_CMAKE }} --build . --target install/strip
|
|
- name: build-x86_64
|
|
run: |
|
|
mkdir build-x86_64 && cd build-x86_64
|
|
${{ env.OHOS_NDK_CMAKE }} ${{ env.NCNN_CMAKE_OPTIONS }} -DOHOS_ARCH="x86_64" ..
|
|
${{ env.OHOS_NDK_CMAKE }} --build . -j $(nproc)
|
|
${{ env.OHOS_NDK_CMAKE }} --build . --target install/strip
|
|
- name: package
|
|
run: |
|
|
rm -rf ${{ env.PACKAGENAME }}
|
|
mkdir -p ${{ env.PACKAGENAME }}
|
|
cp -a build-armeabi-v7a/install ${{ env.PACKAGENAME }}/armeabi-v7a
|
|
cp -a build-arm64-v8a/install ${{ env.PACKAGENAME }}/arm64-v8a
|
|
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@v7
|
|
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@v7
|
|
- 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 $(nproc)
|
|
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 $(nproc)
|
|
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 $(nproc)
|
|
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 $(nproc)
|
|
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@v7
|
|
with:
|
|
name: ${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
windows:
|
|
needs: [setup]
|
|
strategy:
|
|
matrix:
|
|
opt:
|
|
- { shared-lib: OFF, os: windows-2022, toolset-version: v140, windows-sdk-version: 22621, id: vs2015 }
|
|
- { shared-lib: OFF, os: windows-2022, toolset-version: v141, windows-sdk-version: 22621, id: vs2017 }
|
|
- { shared-lib: OFF, os: windows-2022, toolset-version: v142, windows-sdk-version: 22621, id: vs2019 }
|
|
- { shared-lib: OFF, os: windows-2022, toolset-version: v143, windows-sdk-version: 26100, id: vs2022 }
|
|
- { shared-lib: ON, os: windows-2022, toolset-version: v140, windows-sdk-version: 22621, id: vs2015-shared }
|
|
- { shared-lib: ON, os: windows-2022, toolset-version: v141, windows-sdk-version: 22621, id: vs2017-shared }
|
|
- { shared-lib: ON, os: windows-2022, toolset-version: v142, windows-sdk-version: 22621, id: vs2019-shared }
|
|
- { shared-lib: ON, os: windows-2022, toolset-version: v143, windows-sdk-version: 26100, id: vs2022-shared }
|
|
runs-on: ${{ matrix.opt.os }}
|
|
env:
|
|
PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-windows-${{ matrix.opt.id }}
|
|
UseMultiToolTask: true
|
|
NCNN_CMAKE_OPTIONS: |
|
|
-T ${{ matrix.opt.toolset-version }},host=x64 `
|
|
-DCMAKE_BUILD_TYPE=Release `
|
|
-DCMAKE_INSTALL_PREFIX=install `
|
|
-DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" `
|
|
-DNCNN_BUILD_EXAMPLES=OFF `
|
|
-DNCNN_BUILD_TOOLS=ON `
|
|
-DNCNN_BUILD_BENCHMARK=OFF `
|
|
-DNCNN_VULKAN=ON `
|
|
-DNCNN_SHARED_LIB=${{ matrix.opt.shared-lib }} `
|
|
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Install VS 2017 (v141) Build Tools
|
|
if: matrix.opt.toolset-version == 'v141'
|
|
run: |
|
|
$vsInstallPath = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property installationPath
|
|
Start-Process -FilePath "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vs_installer.exe" -ArgumentList "modify --installPath `"$vsInstallPath`" --add Microsoft.VisualStudio.Component.VC.v141.x86.x64 --quiet --norestart --nocache" -Wait
|
|
- name: Install and Setup VS 2015 (v140) Build Tools
|
|
if: matrix.opt.toolset-version == 'v140'
|
|
run: |
|
|
$vs140Path = "C:/vs140_build_tools"
|
|
Invoke-WebRequest -Uri "https://aka.ms/vs/15/release/vs_buildtools.exe" -OutFile vs_buildtools.exe
|
|
Start-Process -FilePath "vs_buildtools.exe" -ArgumentList "--installPath `"$vs140Path`" --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.VC.140 --quiet --wait --norestart --nocache" -Wait
|
|
|
|
$vcvarsPath = (Get-ChildItem -Path $vs140Path -Filter "vcvars64.bat" -Recurse | Select-Object -First 1).FullName
|
|
$cmd = "`"$vcvarsPath`" && powershell -Command `"`$env:PATH;`$env:INCLUDE;`$env:LIB`""
|
|
$output = cmd.exe /c $cmd
|
|
$lines = $output -split "`r`n"
|
|
|
|
echo "PATH=$($lines[0]);$($env:PATH)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
echo "INCLUDE=$($lines[1])" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
echo "LIB=$($lines[2])" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
|
|
- uses: GuillaumeFalourd/setup-windows10-sdk-action@v2.5
|
|
with:
|
|
sdk-version: ${{ matrix.opt.windows-sdk-version }}
|
|
|
|
- name: cache-protobuf
|
|
id: cache-protobuf
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: "protobuf-install"
|
|
key: protobuf-${{ matrix.opt.toolset-version }}-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 ${{ matrix.opt.toolset-version }},host=x64 -A Win32,version=10.0.${{ matrix.opt.windows-sdk-version }}.0 -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x86" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake
|
|
cmake --build . --config Release -j 4
|
|
cmake --build . --config Release --target install
|
|
cd ..
|
|
mkdir build-x64; cd build-x64;
|
|
cmake -T ${{ matrix.opt.toolset-version }},host=x64 -A x64,version=10.0.${{ matrix.opt.windows-sdk-version }}.0 -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install\x64" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake
|
|
cmake --build . --config Release -j 4
|
|
cmake --build . --config Release --target install
|
|
- name: build-x86
|
|
run: |
|
|
mkdir build-x86; cd build-x86
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -A Win32,version=10.0.${{ matrix.opt.windows-sdk-version }}.0 -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x86\cmake" ..
|
|
cmake --build . --config Release -j 4
|
|
cmake --build . --config Release --target install
|
|
- name: build-x64
|
|
run: |
|
|
mkdir build-x64; cd build-x64
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -A x64,version=10.0.${{ matrix.opt.windows-sdk-version }}.0 -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x64\cmake" ..
|
|
cmake --build . --config Release -j 4
|
|
cmake --build . --config Release --target install
|
|
- name: build-arm64
|
|
if: matrix.opt.toolset-version == 'v142' || matrix.opt.toolset-version == 'v143'
|
|
run: |
|
|
mkdir build-arm64; cd build-arm64
|
|
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -A arm64,version=10.0.${{ matrix.opt.windows-sdk-version }}.0 ..
|
|
cmake --build . --config Release -j 4
|
|
cmake --build . --config Release --target install
|
|
- name: package
|
|
if: matrix.opt.toolset-version == 'v140' || matrix.opt.toolset-version == 'v141'
|
|
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: package
|
|
if: matrix.opt.toolset-version == 'v142' || matrix.opt.toolset-version == 'v143'
|
|
run: |
|
|
mkdir ${{ env.PACKAGENAME }}
|
|
mkdir ${{ env.PACKAGENAME }}/x86
|
|
mkdir ${{ env.PACKAGENAME }}/x64
|
|
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-arm64\install\*" -Destination "${{ env.PACKAGENAME }}\arm64"
|
|
7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }}
|
|
- name: upload-zip
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: ${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
|
|
apple:
|
|
needs: [setup, macos, ios, ios-simulator, mac-catalyst, watchos, watchos-simulator, tvos, tvos-simulator, visionos, visionos-simulator]
|
|
runs-on: macos-15-intel
|
|
env:
|
|
PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-apple
|
|
steps:
|
|
- run: sudo xcode-select --switch /Applications/Xcode_16.4.0.app
|
|
- name: download
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
path: artifacts
|
|
|
|
- name: unzip
|
|
run: |
|
|
mkdir -p ncnn-ios
|
|
mkdir -p ncnn-ios-vulkan
|
|
mkdir -p ncnn-ios-simulator
|
|
mkdir -p ncnn-ios-simulator-vulkan
|
|
mkdir -p ncnn-mac-catalyst
|
|
mkdir -p ncnn-mac-catalyst-vulkan
|
|
mkdir -p ncnn-macos
|
|
mkdir -p ncnn-macos-vulkan
|
|
mkdir -p ncnn-tvos
|
|
mkdir -p ncnn-tvos-vulkan
|
|
mkdir -p ncnn-tvos-simulator
|
|
mkdir -p ncnn-tvos-simulator-vulkan
|
|
mkdir -p ncnn-visionos
|
|
mkdir -p ncnn-visionos-vulkan
|
|
mkdir -p ncnn-visionos-simulator
|
|
mkdir -p ncnn-visionos-simulator-vulkan
|
|
mkdir -p ncnn-watchos
|
|
mkdir -p ncnn-watchos-simulator
|
|
|
|
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-vulkan/ncnn-${{ needs.setup.outputs.VERSION }}-ios-vulkan.zip -d ncnn-ios-vulkan
|
|
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 }}-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/ncnn-${{ needs.setup.outputs.VERSION }}-mac-catalyst.zip -d ncnn-mac-catalyst
|
|
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
|
|
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 }}-macos-vulkan/ncnn-${{ needs.setup.outputs.VERSION }}-macos-vulkan.zip -d ncnn-macos-vulkan
|
|
unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-tvos/ncnn-${{ needs.setup.outputs.VERSION }}-tvos.zip -d ncnn-tvos
|
|
unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-tvos-vulkan/ncnn-${{ needs.setup.outputs.VERSION }}-tvos-vulkan.zip -d ncnn-tvos-vulkan
|
|
unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-tvos-simulator/ncnn-${{ needs.setup.outputs.VERSION }}-tvos-simulator.zip -d ncnn-tvos-simulator
|
|
unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-tvos-simulator-vulkan/ncnn-${{ needs.setup.outputs.VERSION }}-tvos-simulator-vulkan.zip -d ncnn-tvos-simulator-vulkan
|
|
unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-visionos/ncnn-${{ needs.setup.outputs.VERSION }}-visionos.zip -d ncnn-visionos
|
|
unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-visionos-vulkan/ncnn-${{ needs.setup.outputs.VERSION }}-visionos-vulkan.zip -d ncnn-visionos-vulkan
|
|
unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-visionos-simulator/ncnn-${{ needs.setup.outputs.VERSION }}-visionos-simulator.zip -d ncnn-visionos-simulator
|
|
unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-visionos-simulator-vulkan/ncnn-${{ needs.setup.outputs.VERSION }}-visionos-simulator-vulkan.zip -d ncnn-visionos-simulator-vulkan
|
|
unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-watchos/ncnn-${{ needs.setup.outputs.VERSION }}-watchos.zip -d ncnn-watchos
|
|
unzip -q artifacts/ncnn-${{ needs.setup.outputs.VERSION }}-watchos-simulator/ncnn-${{ needs.setup.outputs.VERSION }}-watchos-simulator.zip -d ncnn-watchos-simulator
|
|
|
|
- name: create-xcframwork
|
|
run: |
|
|
rm -rf openmp.xcframework
|
|
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 \
|
|
-framework ncnn-watchos/openmp.framework \
|
|
-framework ncnn-watchos-simulator/openmp.framework \
|
|
-framework ncnn-tvos/openmp.framework \
|
|
-framework ncnn-tvos-simulator/openmp.framework \
|
|
-framework ncnn-visionos/openmp.framework \
|
|
-framework ncnn-visionos-simulator/openmp.framework \
|
|
-output openmp.xcframework
|
|
|
|
rm -rf ncnn.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 \
|
|
-framework ncnn-watchos/ncnn.framework \
|
|
-framework ncnn-watchos-simulator/ncnn.framework \
|
|
-framework ncnn-tvos/ncnn.framework \
|
|
-framework ncnn-tvos-simulator/ncnn.framework \
|
|
-framework ncnn-visionos/ncnn.framework \
|
|
-framework ncnn-visionos-simulator/ncnn.framework \
|
|
-output ncnn.xcframework
|
|
|
|
rm -f ${{ env.PACKAGENAME }}.zip
|
|
zip -9 -y -r ${{ env.PACKAGENAME }}.zip openmp.xcframework ncnn.xcframework
|
|
- name: create-xcframwork-vulkan
|
|
run: |
|
|
rm -rf openmp.xcframework
|
|
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 \
|
|
-framework ncnn-watchos/openmp.framework \
|
|
-framework ncnn-watchos-simulator/openmp.framework \
|
|
-framework ncnn-tvos-vulkan/openmp.framework \
|
|
-framework ncnn-tvos-simulator-vulkan/openmp.framework \
|
|
-framework ncnn-visionos/openmp.framework \
|
|
-framework ncnn-visionos-simulator/openmp.framework \
|
|
-output openmp.xcframework
|
|
|
|
rm -rf glslang.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 \
|
|
-framework ncnn-tvos-vulkan/glslang.framework \
|
|
-framework ncnn-tvos-simulator-vulkan/glslang.framework \
|
|
-framework ncnn-visionos-vulkan/glslang.framework \
|
|
-framework ncnn-visionos-simulator-vulkan/glslang.framework \
|
|
-output glslang.xcframework
|
|
|
|
rm -rf ncnn.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 \
|
|
-framework ncnn-watchos/ncnn.framework \
|
|
-framework ncnn-watchos-simulator/ncnn.framework \
|
|
-framework ncnn-tvos-vulkan/ncnn.framework \
|
|
-framework ncnn-tvos-simulator-vulkan/ncnn.framework \
|
|
-framework ncnn-visionos-vulkan/ncnn.framework \
|
|
-framework ncnn-visionos-simulator-vulkan/ncnn.framework \
|
|
-output ncnn.xcframework
|
|
|
|
rm -f ${{ env.PACKAGENAME }}-vulkan.zip
|
|
zip -9 -y -r ${{ env.PACKAGENAME }}-vulkan.zip openmp.xcframework glslang.xcframework ncnn.xcframework
|
|
- name: upload-zip
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: ${{ env.PACKAGENAME }}
|
|
path: ${{ env.PACKAGENAME }}.zip
|
|
- name: upload-zip-vulkan
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: ${{ env.PACKAGENAME }}-vulkan
|
|
path: ${{ env.PACKAGENAME }}-vulkan.zip
|
|
|
|
release:
|
|
permissions:
|
|
contents: write # for softprops/action-gh-release to create a release
|
|
needs: [setup, full-source, ubuntu, macos, ios, ios-simulator, mac-catalyst, watchos, watchos-simulator, tvos, tvos-simulator, android, harmonyos, webassembly, windows, apple]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: download
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
path: artifacts
|
|
|
|
- name: create-release
|
|
uses: softprops/action-gh-release@v3
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
tag_name: ${{ needs.setup.outputs.VERSION }}
|
|
name: Release ${{ needs.setup.outputs.VERSION }}
|
|
files: artifacts/*/*.zip
|