ncnn

Форк
0
184 строки · 8.0 Кб
1
name: tvos
2
on:
3
  push:
4
    branches: [master]
5
    paths:
6
    - '.github/workflows/tvos.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/tvos.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: tvos-${{ github.ref }}
29
  cancel-in-progress: true
30
env:
31
  DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer
32
  TVOS_DEPLOYMENT_TARGET: '11.0'
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=$TVOS_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=$TVOS_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-tvos-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-arm64
96
      if: steps.cache-openmp.outputs.cache-hit != 'true'
97
      run: |
98
        cd openmp-${{ env.OPENMP_VERSION }}.src
99
        mkdir -p build-arm64 && cd build-arm64
100
        cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=TVOS -DARCHS="arm64" ..
101
        cmake --build . -j 4
102
        cmake --build . --target install
103
    - name: openmp-arm64e
104
      if: steps.cache-openmp.outputs.cache-hit != 'true'
105
      run: |
106
        cd openmp-${{ env.OPENMP_VERSION }}.src
107
        mkdir -p build-arm64e && cd build-arm64e
108
        cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=TVOS -DARCHS="arm64e" ..
109
        cmake --build . -j 4
110
        cmake --build . --target install
111
    - name: openmp-simulator-x86_64
112
      if: steps.cache-openmp.outputs.cache-hit != 'true'
113
      run: |
114
        cd openmp-${{ env.OPENMP_VERSION }}.src
115
        mkdir -p build-simulator-x86_64 && cd build-simulator-x86_64
116
        cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_TVOS -DARCHS="x86_64" ..
117
        cmake --build . -j 4
118
        cmake --build . --target install
119
    - name: openmp-simulator-arm64
120
      if: steps.cache-openmp.outputs.cache-hit != 'true'
121
      run: |
122
        cd openmp-${{ env.OPENMP_VERSION }}.src
123
        mkdir -p build-simulator-arm64 && cd build-simulator-arm64
124
        cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_TVOS -DARCHS="arm64" ..
125
        cmake --build . -j 4
126
        cmake --build . --target install
127
    - name: openmp-merge-fat-library
128
      if: steps.cache-openmp.outputs.cache-hit != 'true'
129
      run: |
130
        mkdir -p $GITHUB_WORKSPACE/openmp-install
131
        mkdir -p $GITHUB_WORKSPACE/openmp-install/tvos
132
        mkdir -p $GITHUB_WORKSPACE/openmp-install/tvos-simulator
133

134
        cp -a openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/include $GITHUB_WORKSPACE/openmp-install/tvos
135
        mkdir -p $GITHUB_WORKSPACE/openmp-install/tvos/lib
136
        lipo -create \
137
            openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/lib/libomp.a \
138
            openmp-${{ env.OPENMP_VERSION }}.src/build-arm64e/install/lib/libomp.a \
139
            -o $GITHUB_WORKSPACE/openmp-install/tvos/lib/libomp.a
140

141
        cp -a openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-x86_64/install/include $GITHUB_WORKSPACE/openmp-install/tvos-simulator
142
        mkdir -p $GITHUB_WORKSPACE/openmp-install/tvos-simulator/lib
143
        lipo -create \
144
            openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-x86_64/install/lib/libomp.a \
145
            openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-arm64/install/lib/libomp.a \
146
            -o $GITHUB_WORKSPACE/openmp-install/tvos-simulator/lib/libomp.a
147

148
    - name: install-openmp
149
      run: |
150
        sudo cp $GITHUB_WORKSPACE/openmp-install/tvos/include/* $DEVELOPER_DIR/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/include
151
        sudo cp $GITHUB_WORKSPACE/openmp-install/tvos/lib/libomp.a $DEVELOPER_DIR/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/lib
152

153
        sudo cp $GITHUB_WORKSPACE/openmp-install/tvos-simulator/include/* $DEVELOPER_DIR/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/usr/include
154
        sudo cp $GITHUB_WORKSPACE/openmp-install/tvos-simulator/lib/libomp.a $DEVELOPER_DIR/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/usr/lib
155

156
    - name: moltenvk
157
      run: |
158
        wget -q https://github.com/KhronosGroup/MoltenVK/releases/download/${{ env.MOLTENVK_VERSION }}/MoltenVK-all.tar
159
        tar -xf MoltenVK-all.tar
160

161
    - name: arm64
162
      run: |
163
        mkdir build-arm64 && cd build-arm64
164
        cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=TVOS -DARCHS="arm64" \
165
            -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/static/MoltenVK.xcframework/tvos-arm64_arm64e/libMoltenVK.a ..
166
        cmake --build . -j 4
167
    - name: arm64e
168
      run: |
169
        mkdir build-arm64e && cd build-arm64e
170
        cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=TVOS -DARCHS="arm64e" \
171
            -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/static/MoltenVK.xcframework/tvos-arm64_arm64e/libMoltenVK.a ..
172
        cmake --build . -j 4
173
    - name: simulator-x86_64
174
      run: |
175
        mkdir build-simulator-x86_64 && cd build-simulator-x86_64
176
        cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_TVOS -DARCHS="x86_64" \
177
            -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/static/MoltenVK.xcframework/tvos-arm64_x86_64-simulator/libMoltenVK.a ..
178
        cmake --build . -j 4
179
    - name: simulator-arm64
180
      run: |
181
        mkdir build-simulator-arm64 && cd build-simulator-arm64
182
        cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATORARM64_TVOS -DARCHS="arm64" \
183
            -DVulkan_LIBRARY=$GITHUB_WORKSPACE/MoltenVK/MoltenVK/static/MoltenVK.xcframework/tvos-arm64_x86_64-simulator/libMoltenVK.a ..
184
        cmake --build . -j 4
185

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

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

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

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