Commit 812c83e
committed
feat: comprehensive CLI tool enhancements with GLFW integration and multi-platform builds
This is a comprehensive update that enhances the CLI tool with advanced features,
complete GLFW 3.4 integration, multi-platform CI/CD pipelines, and support for
both glibc and musl C library variants.
Version:
- Bump version to 1.4.1
CLI Features:
- Add CCAP_BUILD_CLI_STANDALONE option for independent CLI builds
- Integrate full GLFW 3.4 source for cross-platform preview functionality
- Add automatic GLFW dependency detection on Linux with Wayland/X11 support
- Add JPG/PNG image format support via stb_image_write with quality control
- Add comprehensive build information display in --version output
- Add runtime linking information (static/dynamic) detection and display
- Add libc type detection (glibc/musl) in version output
- Improve help and version output formatting
- Enhance error handling and warning messages
Build Optimizations:
- Enable LTO (Link Time Optimization) for Release builds
- Add automatic symbol stripping in Release builds
- Fix MSVC static runtime configuration for CMake < 3.15
- Improve Linux static linking strategy with optional fallback
CI/CD Enhancements:
- Add complete Wayland and X11 development dependencies for GLFW builds
- Implement glibc and musl build variants for Linux
- Add ARM64 cross-compilation support with QEMU verification
- Add clean container-based verification for Linux CLI builds
- Pin Ubuntu versions for package compatibility (ubuntu-20.04 for glibc builds)
- Use ubuntu-latest with Docker containers for better isolation
- Add Alpine container tests for musl builds with QEMU support
- Add comprehensive CLI tool verification in release workflow
- Add pkg-config to Docker builds for better dependency detection
- Improve static binary verification logic across all variants
Platform Support:
- Windows: Full GLFW support with static linking
- Linux (glibc): Tested on Ubuntu 20.04, 24.04 with Wayland/X11
- Linux (musl): Tested on Alpine with full static linking
- ARM64: Cross-compilation support for both glibc and musl
Development Experience:
- Add dev.cmake.example updates with new CLI options
- Update VS Code tasks for CLI tool builds
- Improve copilot-instructions with dev.cmake usage guidance
- Add CLI build verification scripts
- Extract reusable functions in release.sh for better maintainability
- Remove unnecessary GLFW files (examples, tests, docs) to reduce size
Documentation:
- Remove redundant GLFW_STATIC_LINKING_LIMITATION.md (content covered in cli.md)
- Add comprehensive static linking documentation
- Update CMAKE_OPTIONS.md with new build options
Dependencies:
- GLFW 3.4: Full source integration for preview functionality
- stb_image_write: For JPG/PNG output support
- Wayland/X11: Dynamic detection and linking on Linux
- pkg-config: For dependency discovery in Docker builds1 parent 5eddb09 commit 812c83e
40 files changed
Lines changed: 18675 additions & 834 deletions
File tree
- .github
- workflows
- .vscode
- cli
- cmake
- docs
- content
- examples
- desktop/glfw
- deps
- glad
- mingw
- wayland
- include
- scripts
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
| 9 | + | |
| 10 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
28 | 30 | | |
29 | 31 | | |
30 | 32 | | |
| |||
50 | 52 | | |
51 | 53 | | |
52 | 54 | | |
53 | | - | |
| 55 | + | |
54 | 56 | | |
55 | 57 | | |
56 | 58 | | |
| |||
177 | 179 | | |
178 | 180 | | |
179 | 181 | | |
180 | | - | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
181 | 185 | | |
182 | 186 | | |
183 | 187 | | |
| |||
197 | 201 | | |
198 | 202 | | |
199 | 203 | | |
200 | | - | |
| 204 | + | |
201 | 205 | | |
202 | 206 | | |
203 | 207 | | |
| |||
277 | 281 | | |
278 | 282 | | |
279 | 283 | | |
280 | | - | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
281 | 287 | | |
282 | 288 | | |
283 | 289 | | |
| |||
298 | 304 | | |
299 | 305 | | |
300 | 306 | | |
301 | | - | |
| 307 | + | |
302 | 308 | | |
303 | 309 | | |
304 | 310 | | |
| |||
400 | 406 | | |
401 | 407 | | |
402 | 408 | | |
403 | | - | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
404 | 412 | | |
405 | 413 | | |
406 | 414 | | |
| |||
415 | 423 | | |
416 | 424 | | |
417 | 425 | | |
418 | | - | |
| 426 | + | |
419 | 427 | | |
420 | 428 | | |
421 | 429 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | | - | |
| 33 | + | |
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| |||
0 commit comments