Skip to content

Support independent nested installs and Windows DLL consumers - #27

Merged
sean-parent merged 7 commits into
mainfrom
execution-support
Oct 6, 2026
Merged

sean-parent merged 7 commits into
mainfrom
execution-support

Conversation

@sean-parent

@sean-parent sean-parent commented Oct 2, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Add optional INSTALL_OPTION and target-scoped deferred install metadata, allowing independent same-namespace package installation.
  • Preserve installed transitive linkage between separately installed nested packages.
  • Keep compiled library type under consumer control through BUILD_SHARED_LIBS (static by default); no explicit library-type override is introduced.
  • Automatically deploy runtime DLL dependencies beside toolkit-created test/example executables on Windows, with CMake 3.24-compatible handling of empty lists and already-adjacent DLLs.
  • Add Windows static/shared installed-consumer CI coverage using an explicitly exported, versioned C ABI leaf and transitive parent package.
  • Document stlab-execution's explicit .def export pattern, ABI-boundary responsibilities, and downstream application deployment ownership.

This enables the standalone stlab/stlab-execution extraction and STLab's transitive dependency.

Validation

  • All 11 nested configure/build/install/consumer cases passed on Windows with CMake 3.24.4 and 4.3.1, including shared/static consumers, independently staged test/example DLLs, paths containing spaces, empty DLL lists, and already-adjacent DLLs.
  • All 4 target-type configure cases passed with both CMake versions: compiled static/shared and header-only defaults, with the parent BUILD_SHARED_LIBS setting preserved.
  • The new shared-consumer regression failed before deployment was implemented because the installed DLL was absent beside the executable.
  • Existing dependency/provider/version baselines passed (32 dependency cases passed, one existing case skipped).
  • Hosted Ubuntu/Windows checks run separately from these local results.

No release is created by this PR. Merge/release this support before publishing execution, then STLab. The execution companion needs its corresponding configuration and pin update for the standard BUILD_SHARED_LIBS policy; that repository is not modified here.

Generated with GitHub Copilot CLI

sean-parent and others added 3 commits October 1, 2026 19:46
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

The installed parent target drops its transitive leaf linkage because the dependency is build-interface-only.

Review effort: Balanced
Findings: 1 Medium severity

Open (1)
What changed in this PR

Adds explicit compiled-library types and package-specific install controls for nested libraries.

Changes:

  • Adds LIBRARY_TYPE STATIC|SHARED and INSTALL_OPTION.
  • Scopes deferred installation metadata per target.
  • Adds nested-install and target-type regressions to CI.
File Description
cpp-library.cmake Parses and forwards new options.
cmake/​cpp-library-setup.cmake Creates explicit static/shared targets.
cmake/​cpp-library-install.cmake Adds independent install options and target-scoped metadata.
README.md Documents new APIs and regressions.
.github/​workflows/​ci.yml Runs added tests.
tests/​setup/​test_target_type.cmake Tests target-type behavior and diagnostics.
tests/​setup/​fixtures/​target_type/​CMakeLists.txt Configures target-type cases.
tests/​setup/​fixtures/​target_type/​src/​sample.cpp Provides compiled fixture source.
tests/​setup/​fixtures/​target_type/​include/​fixture/​sample.hpp Provides fixture API.
tests/​install/​test_nested_install.cmake Exercises nested installation scenarios.
tests/​install/​fixtures/​nested/​CMakeLists.txt Defines the parent package and dependency.
tests/​install/​fixtures/​nested/​include/​stlab/​parent.hpp Provides parent fixture API.
tests/​install/​fixtures/​nested/​leaf/​CMakeLists.txt Defines the nested leaf package.
tests/​install/​fixtures/​nested/​leaf/​include/​stlab/​leaf.hpp Provides leaf fixture API.
tests/​install/​fixtures/​consumer/​CMakeLists.txt Configures the installed-package consumer.
tests/​install/​fixtures/​consumer/​main.cpp Exercises installed fixture APIs.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread tests/install/fixtures/nested/CMakeLists.txt Outdated
sean-parent and others added 2 commits October 2, 2026 01:21
Exercise transitive linkage with a compiled leaf and a parent-only consumer. Document deferred install-interface target resolution for separately installed dependencies.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@sean-parent
sean-parent requested a balanced review from Copilot October 2, 2026 08:26

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Keep compiled target selection under consumer control through BUILD_SHARED_LIBS. Remove override parsing and cases, retain default target type coverage, and update documentation and nested fixtures.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@sean-parent sean-parent changed the title Support explicit library types and independent nested package installs Support independent nested package installs Oct 6, 2026
Exercise static and explicitly exported shared nested packages with installed test/example consumers on Windows CI. Stage runtime DLL dependencies for toolkit-owned executables, including empty and already-adjacent DLL cases on CMake 3.24. Document execution's explicit .def-based C ABI pattern and downstream deployment responsibilities.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@sean-parent sean-parent changed the title Support independent nested package installs Support independent nested installs and Windows DLL consumers Oct 6, 2026
@sean-parent
sean-parent merged commit 8294f62 into main Oct 6, 2026
4 checks passed
@sean-parent
sean-parent deleted the execution-support branch October 6, 2026 22:04
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.

2 participants