Open
Conversation
Fix: CMake LTO Config
Changes to ci-comprehensive-build-test.yml: 1. Add fix-cmake-lto to branch dropdown options 2. Fix validate-ref to accept valid branch names (not just master + PR refs) 3. Add 8 LTO/IPO matrix entries testing all CMakeLists.txt branches: - User override OFF/ON (should be respected unconditionally) - Auto-enable for Release builds - Auto-disable for Debug/RelWithDebInfo - Auto-disable when ASAN or Coverage enabled - User override wins over sanitizer auto-disable 4. Add LTO validation step: captures cmake output, greps for status messages, validates CMakeCache values match expectations 5. Fix Windows double build (duplicated cmake --build command) 6. Fix summary: replace hardcoded checkmarks with result_icon() that maps actual job results to emoji (success/failure/cancelled/skipped) 7. Normalize sed patterns: use sed -i.bak and preserve indentation in commented-out lines across all 5 occurrences Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CMakeLists.txt uses set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) without CACHE for auto-enable cases, so the variable does NOT appear in CMakeCache.txt. Only user -D overrides create cache entries. Restructured validation: - Primary: cmake status message (works for all cases) - Secondary: CMakeCache check (only for user-override cases) - Tertiary: CMakeFiles property propagation check (informational) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The second cmake --build invocation is intentional — IccXML2.dll import library must be generated before iccFromXml/iccToXml can link against it. Without it, LNK1181 fatal error on Release builds. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Root cause: shared libraries (IccProfLib2.dll, IccXML2.dll) have no __declspec(dllexport) annotations — MSVC generates .dll but NO .lib import library. A POST_BUILD workaround copies the static .lib as an alias, but MSBuild's parallel build races: tools start linking before the alias is created, causing LNK1181. Fixes: - Add WINDOWS_EXPORT_ALL_SYMBOLS ON to both shared library targets so MSVC generates proper import libraries alongside DLLs - Fix tool dependencies (IccFromXml, IccToXml): when both shared and static libs are enabled, depend on BOTH targets to ensure the POST_BUILD alias completes before the tool link phase This eliminates the need for a second deterministic build pass on Windows MSVC to resolve link ordering failures. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The ref input defaulted to 'master' (choice type), which is truthy and always takes precedence over github.ref_name in the CHECKOUT_REF expression. Changed to string type with empty default so --ref flag naturally flows through the || chain. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
cmake -E __create_def exits with 0xC0000005 (ACCESS_VIOLATION) when scanning IccProfLib2 object files on GitHub Actions Windows runners. Revert to the proven static alias + second build pass approach. Dependency ordering fix (IccFromXml/IccToXml → both shared+static) is retained as defense-in-depth. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
ChrisCoxArt
approved these changes
Mar 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix: CMake LTO Config
(#715)
Pull Request Checklist