ncnn

Форк
0
/
mac-catalyst.yml 
145 строк · 5.8 Кб
1
name: mac-catalyst
2
on:
3
  push:
4
    branches: [master]
5
    paths:
6
    - '.github/workflows/mac-catalyst.yml'
7
    - 'toolchains/ios.toolchain.cmake'
8
    - 'CMakeLists.txt'
9
    - 'cmake/**'
10
    - 'src/*'
11
    - 'src/layer/*'
12
    - 'src/layer/arm/**'
13
    - 'src/layer/x86/**'
14
    - 'src/layer/vulkan/**'
15
  pull_request:
16
    branches: [master]
17
    paths:
18
    - '.github/workflows/mac-catalyst.yml'
19
    - 'toolchains/ios.toolchain.cmake'
20
    - 'CMakeLists.txt'
21
    - 'cmake/**'
22
    - 'src/*'
23
    - 'src/layer/*'
24
    - 'src/layer/arm/**'
25
    - 'src/layer/x86/**'
26
    - 'src/layer/vulkan/**'
27
concurrency:
28
  group: mac-catalyst-${{ github.ref }}
29
  cancel-in-progress: true
30
env:
31
  DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer
32
  MAC_CATALYST_DEPLOYMENT_TARGET: '13.1'
33
  ENABLE_BITCODE: OFF
34
  ENABLE_ARC: OFF
35
  ENABLE_VISIBILITY: OFF
36
permissions:
37
  contents: read
38

39
jobs:
40
  build:
41
    runs-on: macos-13
42
    env:
43
      OPENMP_VERSION: '18.1.2'
44
      OPENMP_CMAKE_OPTIONS: |
45
        -DCMAKE_TOOLCHAIN_FILE=../../toolchains/ios.toolchain.cmake \
46
        -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET \
47
        -DENABLE_BITCODE=$ENABLE_BITCODE \
48
        -DENABLE_ARC=$ENABLE_ARC \
49
        -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
50
        -DCMAKE_INSTALL_PREFIX=install \
51
        -DCMAKE_BUILD_TYPE=Release \
52
        -DPERL_EXECUTABLE=/usr/local/bin/perl \
53
        -DLIBOMP_ENABLE_SHARED=OFF \
54
        -DLIBOMP_OMPT_SUPPORT=OFF \
55
        -DLIBOMP_USE_HWLOC=OFF \
56

57
      MOLTENVK_VERSION: 'v1.2.8'
58
      NCNN_CMAKE_OPTIONS: |
59
        -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake \
60
        -DDEPLOYMENT_TARGET=$MAC_CATALYST_DEPLOYMENT_TARGET \
61
        -DENABLE_BITCODE=$ENABLE_BITCODE \
62
        -DENABLE_ARC=$ENABLE_ARC \
63
        -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
64
        -DCMAKE_INSTALL_PREFIX=install \
65
        -DCMAKE_BUILD_TYPE=Release \
66
        -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \
67
        -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \
68
        -DOpenMP_libomp_LIBRARY="libomp.a" \
69
        -DNCNN_VULKAN=ON \
70

71
    steps:
72
    - uses: actions/checkout@v4
73
      with:
74
        submodules: true
75

76
    - name: cache-openmp
77
      id: cache-openmp
78
      uses: actions/cache@v4
79
      with:
80
        path: openmp-install
81
        key: openmp-mac-catalyst-install-20240403
82
    - name: openmp
83
      if: steps.cache-openmp.outputs.cache-hit != 'true'
84
      run: |
85
        wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
86
        tar -xf cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
87
        wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
88
        tar -xf openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
89
        mv cmake-${{ env.OPENMP_VERSION }}.src/Modules/* openmp-${{ env.OPENMP_VERSION }}.src/cmake/
90
        cd openmp-${{ env.OPENMP_VERSION }}.src
91
        wget https://github.com/nihui/llvm-project/commit/ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
92
        patch -p2 -i ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
93
        wget https://github.com/nihui/llvm-project/commit/5c12711f9a21f41bea70566bf15a4026804d6b20.patch
94
        patch -p2 -i 5c12711f9a21f41bea70566bf15a4026804d6b20.patch
95
    - name: openmp-x86_64
96
      if: steps.cache-openmp.outputs.cache-hit != 'true'
97
      run: |
98
        cd openmp-${{ env.OPENMP_VERSION }}.src
99
        mkdir -p build-x86_64 && cd build-x86_64
100
        cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=MAC_CATALYST -DARCHS="x86_64" ..
101
        cmake --build . -j 4
102
        cmake --build . --target install
103
    - name: openmp-arm64
104
      if: steps.cache-openmp.outputs.cache-hit != 'true'
105
      run: |
106
        cd openmp-${{ env.OPENMP_VERSION }}.src
107
        mkdir -p build-arm64 && cd build-arm64
108
        cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=MAC_CATALYST_ARM64 -DARCHS="arm64" ..
109
        cmake --build . -j 4
110
        cmake --build . --target install
111
    - name: openmp-merge-fat-library
112
      if: steps.cache-openmp.outputs.cache-hit != 'true'
113
      run: |
114
        mkdir -p $GITHUB_WORKSPACE/openmp-install
115
        mkdir -p $GITHUB_WORKSPACE/openmp-install/mac-catalyst
116

117
        cp -a openmp-${{ env.OPENMP_VERSION }}.src/build-x86_64/install/include $GITHUB_WORKSPACE/openmp-install/mac-catalyst
118
        mkdir -p $GITHUB_WORKSPACE/openmp-install/mac-catalyst/lib
119
        lipo -create \
120
            openmp-${{ env.OPENMP_VERSION }}.src/build-x86_64/install/lib/libomp.a \
121
            openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/lib/libomp.a \
122
            -o $GITHUB_WORKSPACE/openmp-install/mac-catalyst/lib/libomp.a
123

124
    - name: install-openmp
125
      run: |
126
        sudo cp $GITHUB_WORKSPACE/openmp-install/mac-catalyst/include/* $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
127
        sudo cp $GITHUB_WORKSPACE/openmp-install/mac-catalyst/lib/libomp.a $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib
128

129
    - name: moltenvk
130
      run: |
131
        wget -q https://github.com/KhronosGroup/MoltenVK/releases/download/${{ env.MOLTENVK_VERSION }}/MoltenVK-all.tar
132
        tar -xf MoltenVK-all.tar
133

134
    - name: x86_64
135
      run: |
136
        mkdir build-x86_64 && cd build-x86_64
137
        cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=MAC_CATALYST -DARCHS="x86_64" \
138
            -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/static/MoltenVK.xcframework/ios-arm64_x86_64-maccatalyst/libMoltenVK.a ..
139
        cmake --build . -j 4
140
    - name: arm64
141
      run: |
142
        mkdir build-arm64 && cd build-arm64
143
        cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=MAC_CATALYST_ARM64 -DARCHS="arm64" \
144
            -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/static/MoltenVK.xcframework/ios-arm64_x86_64-maccatalyst/libMoltenVK.a ..
145
        cmake --build . -j 4
146

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.