6
- '.github/workflows/tvos.yml'
7
- 'toolchains/ios.toolchain.cmake'
14
- 'src/layer/vulkan/**'
18
- '.github/workflows/tvos.yml'
19
- 'toolchains/ios.toolchain.cmake'
26
- 'src/layer/vulkan/**'
28
group: tvos-${{ github.ref }}
29
cancel-in-progress: true
31
DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer
32
TVOS_DEPLOYMENT_TARGET: '11.0'
35
ENABLE_VISIBILITY: OFF
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 \
57
MOLTENVK_VERSION: 'v1.2.8'
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" \
72
- uses: actions/checkout@v4
78
uses: actions/cache@v4
81
key: openmp-tvos-install-20240403
83
if: steps.cache-openmp.outputs.cache-hit != 'true'
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
96
if: steps.cache-openmp.outputs.cache-hit != 'true'
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" ..
102
cmake --build . --target install
103
- name: openmp-arm64e
104
if: steps.cache-openmp.outputs.cache-hit != 'true'
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" ..
110
cmake --build . --target install
111
- name: openmp-simulator-x86_64
112
if: steps.cache-openmp.outputs.cache-hit != 'true'
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" ..
118
cmake --build . --target install
119
- name: openmp-simulator-arm64
120
if: steps.cache-openmp.outputs.cache-hit != 'true'
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" ..
126
cmake --build . --target install
127
- name: openmp-merge-fat-library
128
if: steps.cache-openmp.outputs.cache-hit != 'true'
130
mkdir -p $GITHUB_WORKSPACE/openmp-install
131
mkdir -p $GITHUB_WORKSPACE/openmp-install/tvos
132
mkdir -p $GITHUB_WORKSPACE/openmp-install/tvos-simulator
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
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
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
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
148
- name: install-openmp
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
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
158
wget -q https://github.com/KhronosGroup/MoltenVK/releases/download/${{ env.MOLTENVK_VERSION }}/MoltenVK-all.tar
159
tar -xf MoltenVK-all.tar
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 ..
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 ..
173
- name: simulator-x86_64
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 ..
179
- name: simulator-arm64
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 ..