Skip to content

Commit

Permalink
mpdecimal: Fix cxx+shared, remove unnecessary automake dependency (#2…
Browse files Browse the repository at this point in the history
…5903)

* Fix shared + cxx in 2.5.1+
  • Loading branch information
Ahajha authored Nov 15, 2024
1 parent a7af27e commit 7abb9ee
Showing 1 changed file with 11 additions and 16 deletions.
27 changes: 11 additions & 16 deletions recipes/mpdecimal/2.5.x/conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,6 @@ class MpdecimalConan(ConanFile):
"cxx": True,
}

@property
def _settings_build(self):
return getattr(self, "setings_build", self.settings)

def export_sources(self):
export_conandata_patches(self)

Expand All @@ -57,20 +53,16 @@ def validate(self):
if is_msvc(self) and self.settings.arch not in ("x86", "x86_64"):
raise ConanInvalidConfiguration(
f"{self.ref} currently does not supported {self.settings.arch}. Contributions are welcomed")
if self.options.cxx:
if self.options.cxx and Version(self.version) < "2.5.1":
if self.options.shared and self.settings.os == "Windows":
raise ConanInvalidConfiguration(
"A shared libmpdec++ is not possible on Windows (due to non-exportable thread local storage)")

def build_requirements(self):
if is_msvc(self):
self.tool_requires("automake/1.16.5")
else:
# required to support windows as a build machine
if self._settings_build.os == "Windows":
self.win_bash = True
if not self.conf.get("tools.microsoft.bash:path", check_type=str):
self.tool_requires("msys2/cci.latest")
if not is_msvc(self) and self.settings_build.os == "Windows":
self.win_bash = True
if not self.conf.get("tools.microsoft.bash:path", check_type=str):
self.tool_requires("msys2/cci.latest")

def source(self):
get(self, **self.conan_data["sources"][self.version], strip_root=True)
Expand Down Expand Up @@ -141,13 +133,16 @@ def _build_msvc(self):
copy(self, "mpdecimal.h", libmpdec_folder, dist_folder)
if self.options.shared:
copy(self, f"libmpdec-{self.version}.dll", libmpdec_folder, dist_folder)
copy(self, f"libmpdec-{self.version}.dll.exp", libmpdec_folder, dist_folder)
copy(self, f"libmpdec-{self.version}.dll.lib", libmpdec_folder, dist_folder)
else:
copy(self, f"libmpdec-{self.version}.lib", libmpdec_folder, dist_folder)
if self.options.cxx:
if self.options.shared:
copy(self, f"libmpdec++-{self.version}.dll", libmpdecpp_folder, dist_folder)
copy(self, f"libmpdec++-{self.version}.dll.lib", libmpdecpp_folder, dist_folder)
else:
copy(self, f"libmpdec++-{self.version}.lib", libmpdecpp_folder, dist_folder)
copy(self, "decimal.hh", libmpdecpp_folder, dist_folder)
copy(self, f"libmpdec++-{self.version}.lib", libmpdecpp_folder, dist_folder)

@property
def _shared_suffix(self):
Expand Down Expand Up @@ -239,4 +234,4 @@ def package_info(self):
if self.settings.os in ["Linux", "FreeBSD"]:
self.cpp_info.components["libmpdecimal++"].system_libs = ["pthread"]
if self.options.shared and Version(self.version) >= "2.5.1":
self.cpp_info.components["libmpdecimal"].defines = ["MPDECIMALXX_DLL"]
self.cpp_info.components["libmpdecimal++"].defines = ["MPDECIMALXX_DLL"]

0 comments on commit 7abb9ee

Please sign in to comment.