From f149d269371b6c907ee930530fd3176ef9ce925d Mon Sep 17 00:00:00 2001 From: Tim Paine <3105306+timkpaine@users.noreply.github.com> Date: Tue, 28 Jul 2026 13:42:58 -0400 Subject: [PATCH] Add optional vcpkg support Signed-off-by: Tim Paine <3105306+timkpaine@users.noreply.github.com> --- copier.yaml | 6 ++++++ cpp/.github/workflows/build.yaml.jinja | 4 ++++ cpp/.gitignore.jinja | 6 ++++++ cpp/pyproject.toml.jinja | 5 +++++ cpp/{% if add_vcpkg %}vcpkg-overlays{% endif %}/.gitkeep | 1 + cpp/{% if add_vcpkg %}vcpkg.json{% endif %}.jinja | 8 ++++++++ cppjswasm/.github/workflows/build.yaml.jinja | 4 ++++ cppjswasm/.gitignore.jinja | 6 ++++++ cppjswasm/pyproject.toml.jinja | 5 +++++ .../{% if add_vcpkg %}vcpkg-overlays{% endif %}/.gitkeep | 1 + cppjswasm/{% if add_vcpkg %}vcpkg.json{% endif %}.jinja | 8 ++++++++ examples/cpp.yaml | 1 + examples/cppjswasm.yaml | 1 + 13 files changed, 56 insertions(+) create mode 100644 cpp/{% if add_vcpkg %}vcpkg-overlays{% endif %}/.gitkeep create mode 100644 cpp/{% if add_vcpkg %}vcpkg.json{% endif %}.jinja create mode 100644 cppjswasm/{% if add_vcpkg %}vcpkg-overlays{% endif %}/.gitkeep create mode 100644 cppjswasm/{% if add_vcpkg %}vcpkg.json{% endif %}.jinja diff --git a/copier.yaml b/copier.yaml index 5b7b096..16f9151 100644 --- a/copier.yaml +++ b/copier.yaml @@ -54,6 +54,12 @@ add_extension: _subdirectory: "{{ add_extension }}" +add_vcpkg: + type: bool + default: false + help: Add vcpkg dependency management + when: "{{ add_extension in ['cpp', 'cppjswasm'] }}" + python_version_primary: type: str default: 3.11 diff --git a/cpp/.github/workflows/build.yaml.jinja b/cpp/.github/workflows/build.yaml.jinja index 19e0b30..af9be29 100644 --- a/cpp/.github/workflows/build.yaml.jinja +++ b/cpp/.github/workflows/build.yaml.jinja @@ -61,6 +61,10 @@ jobs: - uses: actions-ext/cpp/setup@51c484ef64088c62434226039d0e3359f5fc8df6 + {% if add_vcpkg -%} + - uses: actions-ext/cpp/setup-vcpkg-cache@6ded4958b7e13d73428138a01d53c33cb941121d + + {% endif -%} - name: Install dependencies run: make develop diff --git a/cpp/.gitignore.jinja b/cpp/.gitignore.jinja index f57991a..0be369b 100644 --- a/cpp/.gitignore.jinja +++ b/cpp/.gitignore.jinja @@ -13,6 +13,12 @@ __pycache__/ *.exp *.lib +{% if add_vcpkg -%} +# vcpkg +vcpkg/ +vcpkg_installed/ + +{% endif -%} # Rust target target-capi diff --git a/cpp/pyproject.toml.jinja b/cpp/pyproject.toml.jinja index f1aad71..e4b328b 100644 --- a/cpp/pyproject.toml.jinja +++ b/cpp/pyproject.toml.jinja @@ -135,6 +135,11 @@ packages = [ "{{ module }}", "cpp", ] +{% if add_vcpkg %} +[tool.hatch.build.targets.sdist.force-include] +"vcpkg.json" = "vcpkg.json" +"vcpkg-overlays" = "vcpkg-overlays" +{% endif %} [tool.hatch.build.targets.wheel] packages = [ diff --git a/cpp/{% if add_vcpkg %}vcpkg-overlays{% endif %}/.gitkeep b/cpp/{% if add_vcpkg %}vcpkg-overlays{% endif %}/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/cpp/{% if add_vcpkg %}vcpkg-overlays{% endif %}/.gitkeep @@ -0,0 +1 @@ + diff --git a/cpp/{% if add_vcpkg %}vcpkg.json{% endif %}.jinja b/cpp/{% if add_vcpkg %}vcpkg.json{% endif %}.jinja new file mode 100644 index 0000000..edcd9e1 --- /dev/null +++ b/cpp/{% if add_vcpkg %}vcpkg.json{% endif %}.jinja @@ -0,0 +1,8 @@ +{ + "dependencies": [], + "configuration": { + "overlay-ports": [ + "vcpkg-overlays" + ] + } +} diff --git a/cppjswasm/.github/workflows/build.yaml.jinja b/cppjswasm/.github/workflows/build.yaml.jinja index 31f51f0..14480b7 100644 --- a/cppjswasm/.github/workflows/build.yaml.jinja +++ b/cppjswasm/.github/workflows/build.yaml.jinja @@ -49,6 +49,10 @@ jobs: - uses: actions-ext/cpp/setup@51c484ef64088c62434226039d0e3359f5fc8df6 + {% if add_vcpkg -%} + - uses: actions-ext/cpp/setup-vcpkg-cache@6ded4958b7e13d73428138a01d53c33cb941121d + + {% endif -%} - uses: mymindstorm/setup-emsdk@4528d102f7230f0e7b276855c01ea1159be0e984 # v16 - name: Install dependencies diff --git a/cppjswasm/.gitignore.jinja b/cppjswasm/.gitignore.jinja index f57991a..0be369b 100644 --- a/cppjswasm/.gitignore.jinja +++ b/cppjswasm/.gitignore.jinja @@ -13,6 +13,12 @@ __pycache__/ *.exp *.lib +{% if add_vcpkg -%} +# vcpkg +vcpkg/ +vcpkg_installed/ + +{% endif -%} # Rust target target-capi diff --git a/cppjswasm/pyproject.toml.jinja b/cppjswasm/pyproject.toml.jinja index f00689d..2e0ca24 100644 --- a/cppjswasm/pyproject.toml.jinja +++ b/cppjswasm/pyproject.toml.jinja @@ -153,6 +153,11 @@ packages = [ "cpp", "js", ] +{% if add_vcpkg %} +[tool.hatch.build.targets.sdist.force-include] +"vcpkg.json" = "vcpkg.json" +"vcpkg-overlays" = "vcpkg-overlays" +{% endif %} [tool.hatch.build.targets.wheel] packages = [ diff --git a/cppjswasm/{% if add_vcpkg %}vcpkg-overlays{% endif %}/.gitkeep b/cppjswasm/{% if add_vcpkg %}vcpkg-overlays{% endif %}/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/cppjswasm/{% if add_vcpkg %}vcpkg-overlays{% endif %}/.gitkeep @@ -0,0 +1 @@ + diff --git a/cppjswasm/{% if add_vcpkg %}vcpkg.json{% endif %}.jinja b/cppjswasm/{% if add_vcpkg %}vcpkg.json{% endif %}.jinja new file mode 100644 index 0000000..edcd9e1 --- /dev/null +++ b/cppjswasm/{% if add_vcpkg %}vcpkg.json{% endif %}.jinja @@ -0,0 +1,8 @@ +{ + "dependencies": [], + "configuration": { + "overlay-ports": [ + "vcpkg-overlays" + ] + } +} diff --git a/examples/cpp.yaml b/examples/cpp.yaml index 62853fc..71b927d 100644 --- a/examples/cpp.yaml +++ b/examples/cpp.yaml @@ -1,5 +1,6 @@ --- add_docs: true +add_vcpkg: true add_wiki: true add_extension: cpp email: 3105306+timkpaine@users.noreply.github.com diff --git a/examples/cppjswasm.yaml b/examples/cppjswasm.yaml index 0cbde15..dfa020d 100644 --- a/examples/cppjswasm.yaml +++ b/examples/cppjswasm.yaml @@ -1,5 +1,6 @@ --- add_docs: true +add_vcpkg: true add_wiki: true add_extension: cppjswasm email: 3105306+timkpaine@users.noreply.github.com