ncnn

Форк
0
/
watchos.yml 
170 строк · 7.2 Кб
1
name: watchos
2
on:
3
  push:
4
    branches: [master]
5
    paths:
6
    - '.github/workflows/watchos.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
  pull_request:
15
    branches: [master]
16
    paths:
17
    - '.github/workflows/watchos.yml'
18
    - 'toolchains/ios.toolchain.cmake'
19
    - 'CMakeLists.txt'
20
    - 'cmake/**'
21
    - 'src/*'
22
    - 'src/layer/*'
23
    - 'src/layer/arm/**'
24
    - 'src/layer/x86/**'
25
concurrency:
26
  group: watchos-${{ github.ref }}
27
  cancel-in-progress: true
28
env:
29
  DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer
30
  WATCHOS_DEPLOYMENT_TARGET: '6.0'
31
  ENABLE_BITCODE: OFF
32
  ENABLE_ARC: OFF
33
  ENABLE_VISIBILITY: OFF
34
permissions:
35
  contents: read
36

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

55
      NCNN_CMAKE_OPTIONS: |
56
        -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake \
57
        -DDEPLOYMENT_TARGET=$WATCHOS_DEPLOYMENT_TARGET \
58
        -DENABLE_BITCODE=$ENABLE_BITCODE \
59
        -DENABLE_ARC=$ENABLE_ARC \
60
        -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \
61
        -DCMAKE_INSTALL_PREFIX=install \
62
        -DCMAKE_BUILD_TYPE=Release \
63
        -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \
64
        -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \
65
        -DOpenMP_libomp_LIBRARY="libomp.a" \
66

67
    steps:
68
    - uses: actions/checkout@v4
69

70
    - name: cache-openmp
71
      id: cache-openmp
72
      uses: actions/cache@v4
73
      with:
74
        path: openmp-install
75
        key: openmp-watchos-install-20240402
76
    - name: openmp
77
      if: steps.cache-openmp.outputs.cache-hit != 'true'
78
      run: |
79
        wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
80
        tar -xf cmake-${{ env.OPENMP_VERSION }}.src.tar.xz
81
        wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ env.OPENMP_VERSION }}/openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
82
        tar -xf openmp-${{ env.OPENMP_VERSION }}.src.tar.xz
83
        mv cmake-${{ env.OPENMP_VERSION }}.src/Modules/* openmp-${{ env.OPENMP_VERSION }}.src/cmake/
84
        cd openmp-${{ env.OPENMP_VERSION }}.src
85
        wget https://github.com/nihui/llvm-project/commit/ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
86
        patch -p2 -i ef8c35bcf5d9cfdb0764ffde6a63c04ec715bc37.patch
87
        wget https://github.com/nihui/llvm-project/commit/5c12711f9a21f41bea70566bf15a4026804d6b20.patch
88
        patch -p2 -i 5c12711f9a21f41bea70566bf15a4026804d6b20.patch
89
    - name: openmp-armv7k
90
      if: steps.cache-openmp.outputs.cache-hit != 'true'
91
      run: |
92
        cd openmp-${{ env.OPENMP_VERSION }}.src
93
        mkdir -p build-armv7k && cd build-armv7k
94
        cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=WATCHOS -DARCHS="armv7k" ..
95
        cmake --build . -j 4
96
        cmake --build . --target install
97
    - name: openmp-arm64_32
98
      if: steps.cache-openmp.outputs.cache-hit != 'true'
99
      run: |
100
        cd openmp-${{ env.OPENMP_VERSION }}.src
101
        mkdir -p build-arm64_32 && cd build-arm64_32
102
        cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=WATCHOS -DARCHS="arm64_32" ..
103
        cmake --build . -j 4
104
        cmake --build . --target install
105
    - name: openmp-simulator-x86_64
106
      if: steps.cache-openmp.outputs.cache-hit != 'true'
107
      run: |
108
        cd openmp-${{ env.OPENMP_VERSION }}.src
109
        mkdir -p build-simulator-x86_64 && cd build-simulator-x86_64
110
        cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_WATCHOS -DARCHS="x86_64" ..
111
        cmake --build . -j 4
112
        cmake --build . --target install
113
    - name: openmp-simulator-arm64
114
      if: steps.cache-openmp.outputs.cache-hit != 'true'
115
      run: |
116
        cd openmp-${{ env.OPENMP_VERSION }}.src
117
        mkdir -p build-simulator-arm64 && cd build-simulator-arm64
118
        cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_WATCHOS -DARCHS="arm64" ..
119
        cmake --build . -j 4
120
        cmake --build . --target install
121
    - name: openmp-merge-fat-library
122
      if: steps.cache-openmp.outputs.cache-hit != 'true'
123
      run: |
124
        mkdir -p $GITHUB_WORKSPACE/openmp-install
125
        mkdir -p $GITHUB_WORKSPACE/openmp-install/watchos
126
        mkdir -p $GITHUB_WORKSPACE/openmp-install/watchos-simulator
127

128
        cp -a openmp-${{ env.OPENMP_VERSION }}.src/build-arm64_32/install/include $GITHUB_WORKSPACE/openmp-install/watchos
129
        mkdir -p $GITHUB_WORKSPACE/openmp-install/watchos/lib
130
        lipo -create \
131
            openmp-${{ env.OPENMP_VERSION }}.src/build-armv7k/install/lib/libomp.a \
132
            openmp-${{ env.OPENMP_VERSION }}.src/build-arm64_32/install/lib/libomp.a \
133
            -o $GITHUB_WORKSPACE/openmp-install/watchos/lib/libomp.a
134

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

142
    - name: install-openmp
143
      run: |
144
        sudo cp $GITHUB_WORKSPACE/openmp-install/watchos/include/* $DEVELOPER_DIR/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/usr/include
145
        sudo cp $GITHUB_WORKSPACE/openmp-install/watchos/lib/libomp.a $DEVELOPER_DIR/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/usr/lib
146

147
        sudo cp $GITHUB_WORKSPACE/openmp-install/watchos-simulator/include/* $DEVELOPER_DIR/Platforms/WatchSimulator.platform/Developer/SDKs/WatchSimulator.sdk/usr/include
148
        sudo cp $GITHUB_WORKSPACE/openmp-install/watchos-simulator/lib/libomp.a $DEVELOPER_DIR/Platforms/WatchSimulator.platform/Developer/SDKs/WatchSimulator.sdk/usr/lib
149

150
    - name: armv7k
151
      run: |
152
        mkdir build-armv7k && cd build-armv7k
153
        cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=WATCHOS -DARCHS="armv7k" ..
154
        cmake --build . -j 4
155
    - name: arm64_32
156
      run: |
157
        mkdir build-arm64_32 && cd build-arm64_32
158
        cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=WATCHOS -DARCHS="arm64_32" ..
159
        cmake --build . -j 4
160

161
    - name: simulator-x86_64
162
      run: |
163
        mkdir build-simulator-x86_64 && cd build-simulator-x86_64
164
        cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_WATCHOS -DARCHS="x86_64" ..
165
        cmake --build . -j 4
166
    - name: simulator-arm64
167
      run: |
168
        mkdir build-simulator-arm64 && cd build-simulator-arm64
169
        cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_WATCHOS -DARCHS="arm64" ..
170
        cmake --build . -j 4
171

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

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

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

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