Skip to content

Commit ca5a967

Browse files
committed
Modernize CMake embedding and portability
Bundle the remaining embedding work into PR #1511 so downstream projects can consume one stable target without source rewrites or platform-specific dependency glue. Key changes: - use standard CMAKE_OSX_* architecture/sysroot/deployment settings with legacy input compatibility; - add canonical MATSDK_* build options and explicit STATIC/SHARED library selection; - make warnings, Werror, ARC, visibility, and dead-strip policy target-local; - add explicit SYSTEM/MINIMAL/VENDORED SQLite and zlib providers with self-contained static installs; - preserve static/dynamic and pinned-source vcpkg compatibility; - add FetchContent consumer CI for Linux, Windows, macOS universal/arm64, iOS device/simulator, and Android under warnings-as-errors; - update build scripts/docs and route legacy installation through cmake --install. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: b12c5862-01e3-45e4-bf91-6389c20cae41
1 parent 9df5b11 commit ca5a967

23 files changed

Lines changed: 802 additions & 586 deletions
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
name: Source embedding matrix
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- master
8+
- dev
9+
pull_request:
10+
branches:
11+
- main
12+
- master
13+
- dev
14+
15+
permissions:
16+
contents: read
17+
18+
concurrency:
19+
group: ${{ github.workflow }}-${{ github.ref }}
20+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
21+
22+
jobs:
23+
linux:
24+
runs-on: ubuntu-latest
25+
strategy:
26+
matrix:
27+
include:
28+
- dependencies: system
29+
library-type: STATIC
30+
fetchcontent: OFF
31+
- dependencies: system
32+
library-type: SHARED
33+
fetchcontent: ON
34+
- dependencies: self-contained
35+
library-type: STATIC
36+
fetchcontent: ON
37+
steps:
38+
- uses: actions/checkout@v4
39+
- name: Install system dependencies
40+
if: matrix.dependencies == 'system'
41+
run: sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev libsqlite3-dev ninja-build zlib1g-dev
42+
- name: Configure
43+
shell: bash
44+
run: |
45+
options=(
46+
-G Ninja
47+
-S tests/embedding
48+
-B build-embedding
49+
-DCMAKE_BUILD_TYPE=Release
50+
-DMATSDK_EMBEDDING_USE_FETCHCONTENT=${{ matrix.fetchcontent }}
51+
-DMATSDK_LIBRARY_TYPE=${{ matrix.library-type }}
52+
)
53+
if [[ "${{ matrix.dependencies }}" == "self-contained" ]]; then
54+
options+=(
55+
-DMATSDK_CURL_PROVIDER=FETCH
56+
-DMATSDK_CURL_TLS_BACKEND=MBEDTLS
57+
-DMATSDK_SQLITE_PROVIDER=MINIMAL
58+
-DMATSDK_ZLIB_PROVIDER=VENDORED
59+
)
60+
else
61+
options+=(
62+
-DMATSDK_SQLITE_PROVIDER=SYSTEM
63+
-DMATSDK_ZLIB_PROVIDER=SYSTEM
64+
)
65+
fi
66+
cmake "${options[@]}"
67+
- name: Build and run
68+
run: |
69+
cmake --build build-embedding --target embedding_test --parallel 4
70+
./build-embedding/embedding_test
71+
72+
windows:
73+
runs-on: windows-2022
74+
steps:
75+
- uses: actions/checkout@v4
76+
- name: Configure
77+
run: >
78+
cmake -S tests/embedding -B build-embedding -A x64
79+
-DMATSDK_EMBEDDING_USE_FETCHCONTENT=ON
80+
-DMATSDK_SQLITE_PROVIDER=VENDORED
81+
-DMATSDK_ZLIB_PROVIDER=VENDORED
82+
- name: Build and run
83+
shell: pwsh
84+
run: |
85+
cmake --build build-embedding --config Release --target embedding_test -- /m
86+
& .\build-embedding\Release\embedding_test.exe
87+
88+
macos:
89+
runs-on: macos-latest
90+
strategy:
91+
matrix:
92+
architectures: [arm64, "arm64;x86_64"]
93+
steps:
94+
- uses: actions/checkout@v4
95+
- name: Configure
96+
run: >
97+
cmake -G Ninja -S tests/embedding -B build-embedding
98+
-DCMAKE_BUILD_TYPE=Release
99+
"-DCMAKE_OSX_ARCHITECTURES=${{ matrix.architectures }}"
100+
-DMATSDK_EMBEDDING_USE_FETCHCONTENT=ON
101+
-DMATSDK_SQLITE_PROVIDER=SYSTEM
102+
-DMATSDK_ZLIB_PROVIDER=SYSTEM
103+
- name: Build
104+
run: cmake --build build-embedding --target embedding_test --parallel 4
105+
106+
ios:
107+
runs-on: macos-latest
108+
strategy:
109+
matrix:
110+
sdk: [iphoneos, iphonesimulator]
111+
steps:
112+
- uses: actions/checkout@v4
113+
- name: Configure
114+
run: >
115+
cmake -G Xcode -S tests/embedding -B build-embedding
116+
-DCMAKE_SYSTEM_NAME=iOS
117+
-DCMAKE_OSX_SYSROOT=${{ matrix.sdk }}
118+
-DCMAKE_OSX_ARCHITECTURES=arm64
119+
-DCMAKE_OSX_DEPLOYMENT_TARGET=13.0
120+
-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=NO
121+
-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=NO
122+
-DMATSDK_BUILD_IOS=ON
123+
-DMATSDK_EMBEDDING_USE_FETCHCONTENT=ON
124+
-DMATSDK_SQLITE_PROVIDER=SYSTEM
125+
-DMATSDK_ZLIB_PROVIDER=SYSTEM
126+
- name: Build
127+
run: cmake --build build-embedding --config Release --target embedding_test --parallel 4
128+
129+
android:
130+
runs-on: ubuntu-latest
131+
steps:
132+
- uses: actions/checkout@v4
133+
- name: Configure
134+
run: >
135+
cmake -G Ninja -S tests/embedding -B build-embedding
136+
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_LATEST_HOME}/build/cmake/android.toolchain.cmake
137+
-DANDROID_ABI=arm64-v8a
138+
-DANDROID_PLATFORM=23
139+
-DCMAKE_BUILD_TYPE=Release
140+
-DMATSDK_EMBEDDING_USE_FETCHCONTENT=ON
141+
-DMATSDK_SQLITE_PROVIDER=VENDORED
142+
-DMATSDK_ZLIB_PROVIDER=VENDORED
143+
- name: Build
144+
run: cmake --build build-embedding --target embedding_test --parallel 4

0 commit comments

Comments
 (0)