@@ -65,16 +65,193 @@ jobs:
6565 - name : Check CMake Version
6666 run : cmake --version
6767
68- - name : Configure
69- run : cmake --preset ${{ matrix.preset }} -B build/${{ matrix.preset }}
68+ # -----------------------------------------------------------------------
69+ # Static library build
70+ # -----------------------------------------------------------------------
71+ - name : Configure (static)
72+ run : cmake --preset ${{ matrix.preset }} -B build/${{ matrix.preset }}-static
7073
71- - name : Build (Debug)
72- run : cmake --build build/${{ matrix.preset }} --config Debug
74+ - name : Build (static, Debug)
75+ run : cmake --build build/${{ matrix.preset }}-static --config Debug
7376
74- - name : Run example (Debug)
77+ - name : Run example (static, Debug)
7578 continue-on-error : true
7679 shell : bash
77- run : build/${{ matrix.preset }}/example/Debug/eggs_assert_example
80+ run : build/${{ matrix.preset }}-static /example/Debug/eggs_assert_example
7881
79- - name : Build (Release)
80- run : cmake --build build/${{ matrix.preset }} --config Release
82+ - name : Build (static, Release)
83+ run : cmake --build build/${{ matrix.preset }}-static --config Release
84+
85+ # -----------------------------------------------------------------------
86+ # Shared library build
87+ # -----------------------------------------------------------------------
88+ - name : Configure (shared)
89+ run : cmake --preset ${{ matrix.preset }} -B build/${{ matrix.preset }}-shared
90+ -DBUILD_SHARED_LIBS=ON
91+
92+ - name : Build (shared, Debug)
93+ run : cmake --build build/${{ matrix.preset }}-shared --config Debug
94+
95+ - name : Run example (shared, Debug)
96+ continue-on-error : true
97+ shell : bash
98+ run : |
99+ [ "$RUNNER_OS" = "Windows" ] && cp build/${{ matrix.preset }}-shared/Debug/*.dll build/${{ matrix.preset }}-shared/example/Debug/
100+ build/${{ matrix.preset }}-shared/example/Debug/eggs_assert_example
101+
102+ - name : Build (shared, Release)
103+ run : cmake --build build/${{ matrix.preset }}-shared --config Release
104+
105+ # -----------------------------------------------------------------------
106+ # FetchContent variant — simulates embedding via FetchContent_MakeAvailable
107+ # -----------------------------------------------------------------------
108+ - name : Copy Preset (FetchContent)
109+ run : |
110+ cp ./CMakePresets.json test/cmake-fetch_content
111+ cp ./example/main.cpp test/cmake-fetch_content
112+
113+ - name : Test Consumer (FetchContent, static) — Configure
114+ working-directory : test/cmake-fetch_content
115+ run : cmake --preset ${{ matrix.preset }} -B build-consumer-fetch_content
116+ -DEGGS_ASSERT_SOURCE_DIR=${{ github.workspace }}
117+
118+ - name : Test Consumer (FetchContent, static) — Build
119+ working-directory : test/cmake-fetch_content
120+ run : cmake --build build-consumer-fetch_content --config Debug
121+
122+ - name : Test Consumer (FetchContent, static) — Test
123+ working-directory : test/cmake-fetch_content
124+ run : ctest --test-dir build-consumer-fetch_content --build-config Debug -V
125+
126+ - name : Test Consumer (FetchContent, shared) — Configure
127+ working-directory : test/cmake-fetch_content
128+ run : cmake --preset ${{ matrix.preset }} -B build-consumer-fetch_content-shared
129+ -DEGGS_ASSERT_SOURCE_DIR=${{ github.workspace }}
130+ -DEGGS_ASSERT_BUILD_SHARED_LIBS=ON
131+
132+ - name : Test Consumer (FetchContent, shared) — Build
133+ working-directory : test/cmake-fetch_content
134+ run : cmake --build build-consumer-fetch_content-shared --config Debug
135+
136+ - name : Test Consumer (FetchContent, shared) — Test
137+ working-directory : test/cmake-fetch_content
138+ run : ctest --test-dir build-consumer-fetch_content-shared --build-config Debug -V
139+
140+ # -----------------------------------------------------------------------
141+ # Install variant — simulates a real end-user find_package workflow
142+ # -----------------------------------------------------------------------
143+ - name : Test Install (static, Debug)
144+ run : cmake --install build/${{ matrix.preset }}-static
145+ --prefix ${{ runner.temp }}/eggs-assert-install-static-debug
146+ --config Debug
147+
148+ - name : Upload installed package (static, Debug)
149+ uses : actions/upload-artifact@v6
150+ with :
151+ name : installed-package-${{ matrix.compiler }}-static-debug
152+ path : ${{ runner.temp }}/eggs-assert-install-static-debug
153+ if-no-files-found : error
154+ retention-days : 7
155+
156+ - name : Test Install (static, Release)
157+ run : cmake --install build/${{ matrix.preset }}-static
158+ --prefix ${{ runner.temp }}/eggs-assert-install-static-release
159+ --config Release
160+
161+ - name : Upload installed package (static, Release)
162+ uses : actions/upload-artifact@v6
163+ with :
164+ name : installed-package-${{ matrix.compiler }}-static-release
165+ path : ${{ runner.temp }}/eggs-assert-install-static-release
166+ if-no-files-found : error
167+ retention-days : 7
168+
169+ - name : Test Install (shared, Debug)
170+ run : cmake --install build/${{ matrix.preset }}-shared
171+ --prefix ${{ runner.temp }}/eggs-assert-install-shared-debug
172+ --config Debug
173+
174+ - name : Upload installed package (shared, Debug)
175+ uses : actions/upload-artifact@v6
176+ with :
177+ name : installed-package-${{ matrix.compiler }}-shared-debug
178+ path : ${{ runner.temp }}/eggs-assert-install-shared-debug
179+ if-no-files-found : error
180+ retention-days : 7
181+
182+ - name : Test Install (shared, Release)
183+ run : cmake --install build/${{ matrix.preset }}-shared
184+ --prefix ${{ runner.temp }}/eggs-assert-install-shared-release
185+ --config Release
186+
187+ - name : Upload installed package (shared, Release)
188+ uses : actions/upload-artifact@v6
189+ with :
190+ name : installed-package-${{ matrix.compiler }}-shared-release
191+ path : ${{ runner.temp }}/eggs-assert-install-shared-release
192+ if-no-files-found : error
193+ retention-days : 7
194+
195+ - name : Clean Source and Build Tree
196+ run : cmake -E rm -rf ./include ./src ./build
197+
198+ - name : Copy Preset (find_package)
199+ run : |
200+ cp ./CMakePresets.json test/cmake-find_package
201+ cp ./example/main.cpp test/cmake-find_package
202+
203+ - name : Test Consumer (find_package, static, Debug) — Configure
204+ working-directory : test/cmake-find_package
205+ run : cmake --preset ${{ matrix.preset }} -B build-consumer-find_package-static-debug
206+ -DCMAKE_PREFIX_PATH=${{ runner.temp }}/eggs-assert-install-static-debug
207+ --debug-find-pkg=Eggs.Assert
208+
209+ - name : Test Consumer (find_package, static, Debug) — Build
210+ working-directory : test/cmake-find_package
211+ run : cmake --build build-consumer-find_package-static-debug --config Debug
212+
213+ - name : Test Consumer (find_package, static, Debug) — Test
214+ working-directory : test/cmake-find_package
215+ run : ctest --test-dir build-consumer-find_package-static-debug --build-config Debug -V
216+
217+ - name : Test Consumer (find_package, static, Release) — Configure
218+ working-directory : test/cmake-find_package
219+ run : cmake --preset ${{ matrix.preset }} -B build-consumer-find_package-static-release
220+ -DCMAKE_PREFIX_PATH=${{ runner.temp }}/eggs-assert-install-static-release
221+ --debug-find-pkg=Eggs.Assert
222+
223+ - name : Test Consumer (find_package, static, Release) — Build
224+ working-directory : test/cmake-find_package
225+ run : cmake --build build-consumer-find_package-static-release --config Release
226+
227+ - name : Test Consumer (find_package, static, Release) — Test
228+ working-directory : test/cmake-find_package
229+ run : ctest --test-dir build-consumer-find_package-static-release --build-config Release -V
230+
231+ - name : Test Consumer (find_package, shared, Debug) — Configure
232+ working-directory : test/cmake-find_package
233+ run : cmake --preset ${{ matrix.preset }} -B build-consumer-find_package-shared-debug
234+ -DCMAKE_PREFIX_PATH=${{ runner.temp }}/eggs-assert-install-shared-debug
235+ --debug-find-pkg=Eggs.Assert
236+
237+ - name : Test Consumer (find_package, shared, Debug) — Build
238+ working-directory : test/cmake-find_package
239+ run : cmake --build build-consumer-find_package-shared-debug --config Debug
240+
241+ - name : Test Consumer (find_package, shared, Debug) — Test
242+ working-directory : test/cmake-find_package
243+ run : ctest --test-dir build-consumer-find_package-shared-debug --build-config Debug -V
244+
245+ - name : Test Consumer (find_package, shared, Release) — Configure
246+ working-directory : test/cmake-find_package
247+ run : cmake --preset ${{ matrix.preset }} -B build-consumer-find_package-shared-release
248+ -DCMAKE_PREFIX_PATH=${{ runner.temp }}/eggs-assert-install-shared-release
249+ --debug-find-pkg=Eggs.Assert
250+
251+ - name : Test Consumer (find_package, shared, Release) — Build
252+ working-directory : test/cmake-find_package
253+ run : cmake --build build-consumer-find_package-shared-release --config Release
254+
255+ - name : Test Consumer (find_package, shared, Release) — Test
256+ working-directory : test/cmake-find_package
257+ run : ctest --test-dir build-consumer-find_package-shared-release --build-config Release -V
0 commit comments