From 7ab98620ec5e6a3de6176d59044b83d116fd3b52 Mon Sep 17 00:00:00 2001 From: Tim Paine <3105306+timkpaine@users.noreply.github.com> Date: Sun, 12 Jan 2025 23:08:38 -0500 Subject: [PATCH] Fix library qualified name on windows --- hatch_cpp/plugin.py | 7 ++----- hatch_cpp/structs.py | 9 +++++++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/hatch_cpp/plugin.py b/hatch_cpp/plugin.py index 4166551..2e29539 100644 --- a/hatch_cpp/plugin.py +++ b/hatch_cpp/plugin.py @@ -83,8 +83,5 @@ def initialize(self, version: str, build_data: dict[str, t.Any]) -> None: # force include libraries for library in libraries: - if build_plan.platform.platform == "win32": - suffix = "dll" - else: - suffix = "so" - build_data["force_include"][f"{library.name}.{suffix}"] = f"{library.name}.{suffix}" + name = library.get_qualified_name(build_plan.platform.platform) + build_data["force_include"][name] = name diff --git a/hatch_cpp/structs.py b/hatch_cpp/structs.py index 26f846d..1492720 100644 --- a/hatch_cpp/structs.py +++ b/hatch_cpp/structs.py @@ -52,6 +52,15 @@ class HatchCppLibrary(BaseModel): export_symbols: List[str] = Field(default_factory=list, alias="export-symbols") depends: List[str] = Field(default_factory=list) + def get_qualified_name(self, platform): + if platform == "win32": + suffix = "dll" if self.binding == "none" else "pyd" + elif platform == "darwin" and self.binding == "none": + suffix = "dylib" + else: + suffix = "so" + return f"{self.name}.{suffix}" + class HatchCppPlatform(BaseModel): cc: str