Skip to content

🐛 Fix shared-library builds and packaging - #2353

Closed
burgholzer wants to merge 1 commit into
mainfrom
codex/internal-compiler-static-linkage
Closed

burgholzer wants to merge 1 commit into
mainfrom
codex/internal-compiler-static-linkage

Conversation

@burgholzer

Copy link
Copy Markdown
Member

🤖 AI text below 🤖

Description

Fix the BUILD_SHARED_LIBS=ON configuration failure noted in #2352, now merged into main.

  • Keep private compiler libraries and bundled jeff dependencies static. Public Core libraries still honor the shared-build option; the QDMI device no longer requires unexported compiler shared libraries.
  • Remove the global install-RPATH override so shared libraries can find their dependencies before installation.
  • Place the shared QDMI driver beside the device manifests it discovers.
  • Add a debug-shared preset and use it in the existing Linux Debug CI job. Document the linkage policy.

Validation on Linux ARM64 with LLVM/MLIR 23.1.0:

  • Shared Debug and static Release builds: 3,812 tests passed and one expected skip each.
  • Installed the Core Runtime/Development and QDMI Development components, relocated the prefix, then configured, built, and ran a separate find_package(mqt-core) consumer. It discovered and loaded DDSIM without compiler targets or private compiler shared libraries.
  • uvx nox -s lint and git diff --check passed. No C++ sources changed.

Codex assisted with implementation, validation, and this description. No standalone changelog entry is added for this unreleased compiler infrastructure fix.

Checklist

  • The pull request only contains commits that are focused and relevant to this change.
  • I have added appropriate tests that cover the new/changed functionality.
  • I have updated the documentation to reflect these changes.
  • I have added entries to the changelog for any noteworthy additions, changes, fixes, or removals.
  • I have added migration instructions to the upgrade guide (if needed).
  • The changes follow the project's style guidelines and introduce no new warnings.
  • The changes are fully tested and pass the CI checks.
  • I have reviewed my own code changes.

If PR contains AI-assisted content:

  • Any agent that created, edited, or submitted GitHub content was explicitly authorized for that scope, as required by our AI Usage Guidelines.
  • Every agent-authored or agent-edited public text body begins with the visible disclosure 🤖 *AI text below* 🤖 (titles are exempt).
  • I have disclosed AI assistance in the PR description.
  • I confirm that I have personally reviewed and understood all AI-generated content, and accept full responsibility for it.

Keep internal compiler and jeff libraries static so installed QDMI
devices do not depend on unexported compiler shared libraries.

Use CMake's build-tree RPATH and place the shared QDMI driver beside
its device manifests. Run the existing Linux Debug CI lane with global
BUILD_SHARED_LIBS enabled to cover configuration and runtime loading.

Assisted-by: Codex
@burgholzer burgholzer added continuous integration Anything related to the CI setup fix Fix for something that isn't working packaging Anything related to Python packaging MLIR Anything related to MLIR QDMI Anything related to QDMI skip-changelog Changes that do not need to show up in the changelog labels Sep 3, 2026
@burgholzer burgholzer self-assigned this Sep 3, 2026
@burgholzer

Copy link
Copy Markdown
Member Author

Closing this one. We do not build with BUILD_SHARED_LIBS enabled for a reason.

@burgholzer burgholzer closed this Sep 3, 2026
@codecov

codecov Bot commented Sep 3, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

continuous integration Anything related to the CI setup fix Fix for something that isn't working MLIR Anything related to MLIR packaging Anything related to Python packaging QDMI Anything related to QDMI skip-changelog Changes that do not need to show up in the changelog

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant