Skip to content

Drop consumer-side libcint pkg-config probe from Config.cmake.in#92

Merged
joshkamm merged 1 commit into
mainfrom
fix-88-drop-config-libcint-probe
May 30, 2026
Merged

Drop consumer-side libcint pkg-config probe from Config.cmake.in#92
joshkamm merged 1 commit into
mainfrom
fix-88-drop-config-libcint-probe

Conversation

@joshkamm

Copy link
Copy Markdown
Member

Summary

  • Removes the pkg_check_modules(LIBCINT REQUIRED libcint>=5.3.0) (and the find_dependency(PkgConfig REQUIRED) it required) from SlaterGPUConfig.cmake.in.
  • The probe had no functional value — its LIBCINT_* output vars were never wired into SlaterGPU_LIBRARIES or any imported target. libcint is already carried as a transitive dep via IMPORTED_LINK_DEPENDENT_LIBRARIES_RELEASE -> SlaterGPU::cint (auto-promoted from the find_library path during install(EXPORT)).
  • The probe also broke downstream pixi consumer builds whenever libcint isn't exposed via pkg-config in the consumer's environment — surfacing as No package 'libcint' found at consumer-side find_package(SlaterGPU) time. This was previously masked in ZEST and XCtera by a workaround block that bypassed CONFIG mode entirely (see Investigate imported-target workaround in downstream consumers; fix or simplify #88).

Why it's safe

After this change, a consumer doing find_package(SlaterGPU) + target_link_libraries(... SlaterGPU::cintw) still gets a clean link chain — verified locally with both ZEST and XCtera builds, both Release and Debug consumer configurations. ldd on the resulting binaries shows the full chain:

libio.so => ...
libcintw.so => ...
libcint.so.5 => ...

CMake's documented IMPORTED_CONFIGURATIONS auto-fallback handles Debug consumers linking against the only-available Release artifacts, so no MAP_IMPORTED_CONFIG_* shim is needed.

Sequencing

This PR should merge before the companion ZEST and XCtera cleanup PRs (filed under #88), since those PRs delete the workaround that has been masking this bug.

Test plan

  • Local: pixi build of SlaterGPU from this branch succeeds
  • Local: pixi build of ZEST (with workaround removed) against this SlaterGPU succeeds; ldd clean
  • Local: pixi build of XCtera (with workaround removed) against this SlaterGPU succeeds; ldd clean
  • Local: cmake -DCMAKE_BUILD_TYPE=Debug configure of ZEST against this SlaterGPU produces a clean link.txt with all four expected artifacts
  • CI green

Refs #88.

🤖 Generated with Claude Code

The pkg_check_modules(LIBCINT REQUIRED libcint>=5.3.0) call ran at
consumer find_package(SlaterGPU) time but had no functional value:
its LIBCINT_* output variables were never appended to SlaterGPU_LIBRARIES
or otherwise wired up. libcint is already carried as a transitive dep
via IMPORTED_LINK_DEPENDENT_LIBRARIES_RELEASE -> SlaterGPU::cint,
auto-promoted from the find_library path during install(EXPORT).

The probe also broke downstream pixi builds where libcint isn't on
pkg-config's search path, surfacing as the configure-time error
"No package 'libcint' found". This was previously masked in ZEST and
XCtera by a workaround that bypassed CONFIG mode entirely.

Refs #88.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@joshkamm joshkamm merged commit a7f971f into main May 30, 2026
1 check passed
@joshkamm joshkamm deleted the fix-88-drop-config-libcint-probe branch May 30, 2026 21:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant