diff --git a/recipes/mpdecimal/2.4.2/conanfile.py b/recipes/mpdecimal/2.4.2/conanfile.py index b5cc04c7adcdc..30ef75727a43f 100644 --- a/recipes/mpdecimal/2.4.2/conanfile.py +++ b/recipes/mpdecimal/2.4.2/conanfile.py @@ -30,10 +30,12 @@ def _source_subfolder(self): _autotools = None def configure(self): - if self.settings.arch not in ("x86", "x86_64"): + if self.settings.os != "Macos" and self.settings.arch not in ("x86", "x86_64"): raise ConanInvalidConfiguration("Arch is unsupported") del self.settings.compiler.libcxx del self.settings.compiler.cppstd + if self.options.shared: + del self.options.fPIC def config_options(self): if self.settings.os == "Windows": @@ -161,6 +163,8 @@ def _configure_autotools(self): if self._autotools: return self._autotools self._autotools = AutoToolsBuildEnvironment(self, win_bash=tools.os_info.is_windows) + if self.settings.os == "Macos" and self.settings.arch == "armv8": + self._autotools.link_flags.append("-arch arm64") self._autotools .configure() return self._autotools diff --git a/recipes/mpdecimal/2.5.x/conanfile.py b/recipes/mpdecimal/2.5.x/conanfile.py index dbb649446394a..5c34e916decbc 100644 --- a/recipes/mpdecimal/2.5.x/conanfile.py +++ b/recipes/mpdecimal/2.5.x/conanfile.py @@ -55,7 +55,7 @@ def build_requirements(self): self.build_requires("msys2/cci.latest") def validate(self): - if self.settings.arch not in ("x86", "x86_64"): + if self.settings.os != "Macos" and self.settings.arch not in ("x86", "x86_64"): raise ConanInvalidConfiguration("Arch is unsupported") if self.options.cxx: if self.options.shared and self.settings.os == "Windows": @@ -123,10 +123,14 @@ def _configure_autotools(self): if self._autotools: return self._autotools self._autotools = AutoToolsBuildEnvironment(self, win_bash=tools.os_info.is_windows) + conf_vars = self._autotools.vars + if self.settings.os == "Macos" and self.settings.arch == "armv8": + conf_vars["LDFLAGS"] += " -arch arm64" + conf_vars["LDXXFLAGS"] = "-arch arm64" conf_args = [ "--enable-cxx" if self.options.cxx else "--disable-cxx" ] - self._autotools.configure(args=conf_args) + self._autotools.configure(args=conf_args, vars=conf_vars) return self._autotools @property diff --git a/recipes/mpdecimal/2.5.x/test_package/CMakeLists.txt b/recipes/mpdecimal/2.5.x/test_package/CMakeLists.txt index 0207168301a5f..f452aa64e4430 100644 --- a/recipes/mpdecimal/2.5.x/test_package/CMakeLists.txt +++ b/recipes/mpdecimal/2.5.x/test_package/CMakeLists.txt @@ -4,6 +4,11 @@ project(test_package) include("${CMAKE_BINARY_DIR}/conanbuildinfo.cmake") conan_basic_setup(TARGETS) +# Workaround for -rpath on arm64: https://cmake.org/cmake/help/latest/release/3.20.html#id2 +if(CMAKE_VERSION VERSION_LESS "3.20.1" AND CMAKE_OSX_ARCHITECTURES STREQUAL "arm64") + set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,") +endif() + # This is a non-official mpdecimal module! find_package(mpdecimal REQUIRED)