Skip to content

Commit fafb897

Browse files
authored
update ios toolchain, add visionos ci, update watchos, ncnn target ilp32 (#5399)
1 parent 824b79a commit fafb897

File tree

10 files changed

+529
-188
lines changed

10 files changed

+529
-188
lines changed

.github/workflows/tvos-cpu.yml

-73
This file was deleted.

.github/workflows/tvos.yml

+153
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
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+
pull_request:
15+
branches: [master]
16+
paths:
17+
- '.github/workflows/tvos.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: tvos-${{ github.ref }}
27+
cancel-in-progress: true
28+
env:
29+
DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer
30+
TVOS_DEPLOYMENT_TARGET: '9.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=$TVOS_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=$TVOS_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-tvos-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-arm64
90+
if: steps.cache-openmp.outputs.cache-hit != 'true'
91+
run: |
92+
cd openmp-${{ env.OPENMP_VERSION }}.src
93+
mkdir -p build-arm64 && cd build-arm64
94+
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=TVOS -DARCHS="arm64" ..
95+
cmake --build . -j 4
96+
cmake --build . --target install
97+
- name: openmp-simulator-x86_64
98+
if: steps.cache-openmp.outputs.cache-hit != 'true'
99+
run: |
100+
cd openmp-${{ env.OPENMP_VERSION }}.src
101+
mkdir -p build-simulator-x86_64 && cd build-simulator-x86_64
102+
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_TVOS -DARCHS="x86_64" ..
103+
cmake --build . -j 4
104+
cmake --build . --target install
105+
- name: openmp-simulator-arm64
106+
if: steps.cache-openmp.outputs.cache-hit != 'true'
107+
run: |
108+
cd openmp-${{ env.OPENMP_VERSION }}.src
109+
mkdir -p build-simulator-arm64 && cd build-simulator-arm64
110+
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_TVOS -DARCHS="arm64" ..
111+
cmake --build . -j 4
112+
cmake --build . --target install
113+
- name: openmp-merge-fat-library
114+
if: steps.cache-openmp.outputs.cache-hit != 'true'
115+
run: |
116+
mkdir -p $GITHUB_WORKSPACE/openmp-install
117+
mkdir -p $GITHUB_WORKSPACE/openmp-install/tvos
118+
mkdir -p $GITHUB_WORKSPACE/openmp-install/tvos-simulator
119+
120+
cp -a openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/include $GITHUB_WORKSPACE/openmp-install/tvos
121+
mkdir -p $GITHUB_WORKSPACE/openmp-install/tvos/lib
122+
cp openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/lib/libomp.a $GITHUB_WORKSPACE/openmp-install/tvos/lib/libomp.a
123+
124+
cp -a openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-x86_64/install/include $GITHUB_WORKSPACE/openmp-install/tvos-simulator
125+
mkdir -p $GITHUB_WORKSPACE/openmp-install/tvos-simulator/lib
126+
lipo -create \
127+
openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-x86_64/install/lib/libomp.a \
128+
openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-arm64/install/lib/libomp.a \
129+
-o $GITHUB_WORKSPACE/openmp-install/tvos-simulator/lib/libomp.a
130+
131+
- name: install-openmp
132+
run: |
133+
sudo cp $GITHUB_WORKSPACE/openmp-install/tvos/include/* $DEVELOPER_DIR/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/include
134+
sudo cp $GITHUB_WORKSPACE/openmp-install/tvos/lib/libomp.a $DEVELOPER_DIR/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/lib
135+
136+
sudo cp $GITHUB_WORKSPACE/openmp-install/tvos-simulator/include/* $DEVELOPER_DIR/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/usr/include
137+
sudo cp $GITHUB_WORKSPACE/openmp-install/tvos-simulator/lib/libomp.a $DEVELOPER_DIR/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/usr/lib
138+
139+
- name: arm64
140+
run: |
141+
mkdir build-arm64 && cd build-arm64
142+
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=TVOS -DARCHS="arm64" ..
143+
cmake --build . -j 4
144+
- name: simulator-x86_64
145+
run: |
146+
mkdir build-simulator-x86_64 && cd build-simulator-x86_64
147+
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_TVOS -DARCHS="x86_64" ..
148+
cmake --build . -j 4
149+
- name: simulator-arm64
150+
run: |
151+
mkdir build-simulator-arm64 && cd build-simulator-arm64
152+
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATORARM64_TVOS -DARCHS="arm64" ..
153+
cmake --build . -j 4

.github/workflows/visionos.yml

+153
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
name: visionos
2+
on:
3+
push:
4+
branches: [master]
5+
paths:
6+
- '.github/workflows/visionos.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/visionos.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: visionos-${{ github.ref }}
27+
cancel-in-progress: true
28+
env:
29+
DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer
30+
VISIONOS_DEPLOYMENT_TARGET: '1.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=$VISIONOS_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=$VISIONOS_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-visionos-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-arm64
90+
if: steps.cache-openmp.outputs.cache-hit != 'true'
91+
run: |
92+
cd openmp-${{ env.OPENMP_VERSION }}.src
93+
mkdir -p build-arm64 && cd build-arm64
94+
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=VISIONOS -DARCHS="arm64" ..
95+
cmake --build . -j 4
96+
cmake --build . --target install
97+
- name: openmp-simulator-x86_64
98+
if: steps.cache-openmp.outputs.cache-hit != 'true'
99+
run: |
100+
cd openmp-${{ env.OPENMP_VERSION }}.src
101+
mkdir -p build-simulator-x86_64 && cd build-simulator-x86_64
102+
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_VISIONOS -DARCHS="x86_64" ..
103+
cmake --build . -j 4
104+
cmake --build . --target install
105+
- name: openmp-simulator-arm64
106+
if: steps.cache-openmp.outputs.cache-hit != 'true'
107+
run: |
108+
cd openmp-${{ env.OPENMP_VERSION }}.src
109+
mkdir -p build-simulator-arm64 && cd build-simulator-arm64
110+
cmake ${{ env.OPENMP_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_VISIONOS -DARCHS="arm64" ..
111+
cmake --build . -j 4
112+
cmake --build . --target install
113+
- name: openmp-merge-fat-library
114+
if: steps.cache-openmp.outputs.cache-hit != 'true'
115+
run: |
116+
mkdir -p $GITHUB_WORKSPACE/openmp-install
117+
mkdir -p $GITHUB_WORKSPACE/openmp-install/visionos
118+
mkdir -p $GITHUB_WORKSPACE/openmp-install/visionos-simulator
119+
120+
cp -a openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/include $GITHUB_WORKSPACE/openmp-install/visionos
121+
mkdir -p $GITHUB_WORKSPACE/openmp-install/visionos/lib
122+
cp openmp-${{ env.OPENMP_VERSION }}.src/build-arm64/install/lib/libomp.a $GITHUB_WORKSPACE/openmp-install/visionos/lib/libomp.a
123+
124+
cp -a openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-x86_64/install/include $GITHUB_WORKSPACE/openmp-install/visionos-simulator
125+
mkdir -p $GITHUB_WORKSPACE/openmp-install/visionos-simulator/lib
126+
lipo -create \
127+
openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-x86_64/install/lib/libomp.a \
128+
openmp-${{ env.OPENMP_VERSION }}.src/build-simulator-arm64/install/lib/libomp.a \
129+
-o $GITHUB_WORKSPACE/openmp-install/visionos-simulator/lib/libomp.a
130+
131+
- name: install-openmp
132+
run: |
133+
sudo cp $GITHUB_WORKSPACE/openmp-install/visionos/include/* $DEVELOPER_DIR/Platforms/XROS.platform/Developer/SDKs/XROS.sdk/usr/include
134+
sudo cp $GITHUB_WORKSPACE/openmp-install/visionos/lib/libomp.a $DEVELOPER_DIR/Platforms/XROS.platform/Developer/SDKs/XROS.sdk/usr/lib
135+
136+
sudo cp $GITHUB_WORKSPACE/openmp-install/visionos-simulator/include/* $DEVELOPER_DIR/Platforms/XRSimulator.platform/Developer/SDKs/XRSimulator.sdk/usr/include
137+
sudo cp $GITHUB_WORKSPACE/openmp-install/visionos-simulator/lib/libomp.a $DEVELOPER_DIR/Platforms/XRSimulator.platform/Developer/SDKs/XRSimulator.sdk/usr/lib
138+
139+
- name: arm64
140+
run: |
141+
mkdir build-arm64 && cd build-arm64
142+
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=VISIONOS -DARCHS="arm64" ..
143+
cmake --build . -j 4
144+
- name: simulator-x86_64
145+
run: |
146+
mkdir build-simulator-x86_64 && cd build-simulator-x86_64
147+
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_VISIONOS -DARCHS="x86_64" ..
148+
cmake --build . -j 4
149+
- name: simulator-arm64
150+
run: |
151+
mkdir build-simulator-arm64 && cd build-simulator-arm64
152+
cmake ${{ env.NCNN_CMAKE_OPTIONS }} -DPLATFORM=SIMULATOR_VISIONOS -DARCHS="arm64" ..
153+
cmake --build . -j 4

0 commit comments

Comments
 (0)