6
- '.github/workflows/watchos.yml'
7
- 'toolchains/ios.toolchain.cmake'
17
- '.github/workflows/watchos.yml'
18
- 'toolchains/ios.toolchain.cmake'
26
group: watchos-${{ github.ref }}
27
cancel-in-progress: true
29
DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer
30
WATCHOS_DEPLOYMENT_TARGET: '6.0'
33
ENABLE_VISIBILITY: OFF
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 \
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" \
68
- uses: actions/checkout@v4
72
uses: actions/cache@v4
75
key: openmp-watchos-install-20240402
77
if: steps.cache-openmp.outputs.cache-hit != 'true'
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
90
if: steps.cache-openmp.outputs.cache-hit != 'true'
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" ..
96
cmake --build . --target install
97
- name: openmp-arm64_32
98
if: steps.cache-openmp.outputs.cache-hit != 'true'
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" ..
104
cmake --build . --target install
105
- name: openmp-simulator-x86_64
106
if: steps.cache-openmp.outputs.cache-hit != 'true'
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" ..
112
cmake --build . --target install
113
- name: openmp-simulator-arm64
114
if: steps.cache-openmp.outputs.cache-hit != 'true'
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" ..
120
cmake --build . --target install
121
- name: openmp-merge-fat-library
122
if: steps.cache-openmp.outputs.cache-hit != 'true'
124
mkdir -p $GITHUB_WORKSPACE/openmp-install
125
mkdir -p $GITHUB_WORKSPACE/openmp-install/watchos
126
mkdir -p $GITHUB_WORKSPACE/openmp-install/watchos-simulator
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
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
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
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
142
- name: install-openmp
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
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
152
mkdir build-armv7k && cd build-armv7k
153
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=WATCHOS -DARCHS="armv7k" ..
157
mkdir build-arm64_32 && cd build-arm64_32
158
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=WATCHOS -DARCHS="arm64_32" ..
161
- name: simulator-x86_64
163
mkdir build-simulator-x86_64 && cd build-simulator-x86_64
164
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_WATCHOS -DARCHS="x86_64" ..
166
- name: simulator-arm64
168
mkdir build-simulator-arm64 && cd build-simulator-arm64
169
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_WATCHOS -DARCHS="arm64" ..