From 3703cd354da99c8c123876a8a5eaeee2d308d3b0 Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Tue, 24 Sep 2024 23:58:12 +0300 Subject: [PATCH 1/8] samarium: migrate to Conan v2, drop old version --- recipes/samarium/all/conandata.yml | 28 +---- recipes/samarium/all/conanfile.py | 102 ++++++++++-------- .../1.0.0-Grid.hpp-include-vector.patch | 12 --- .../1.0.0-RandomGenerator.cpp-link.patch | 22 ---- .../1.0.0-RandomGenerator.hpp-link.patch | 34 ------ .../all/patches/1.0.0-updated-cmake.patch | 39 ------- .../samarium/all/test_package/conanfile.py | 4 +- recipes/samarium/config.yml | 2 - 8 files changed, 61 insertions(+), 182 deletions(-) delete mode 100644 recipes/samarium/all/patches/1.0.0-Grid.hpp-include-vector.patch delete mode 100644 recipes/samarium/all/patches/1.0.0-RandomGenerator.cpp-link.patch delete mode 100644 recipes/samarium/all/patches/1.0.0-RandomGenerator.hpp-link.patch delete mode 100644 recipes/samarium/all/patches/1.0.0-updated-cmake.patch diff --git a/recipes/samarium/all/conandata.yml b/recipes/samarium/all/conandata.yml index 06463f7d62302..fb4e60ac44d44 100644 --- a/recipes/samarium/all/conandata.yml +++ b/recipes/samarium/all/conandata.yml @@ -1,28 +1,4 @@ sources: - "1.0.0": - sha256: 943de75803f492f78c5d55fe43be298fbb66156cc22946a3c6cc6b0634efc2e2 - url: https://github.com/strangeQuark1041/samarium/archive/refs/tags/v1.0.0.tar.gz "1.0.1": - sha256: 3748ad1095805338d0d54ca7b60a155520188970946b247d56cc9b5eeb397358 - url: https://github.com/strangeQuark1041/samarium/archive/refs/tags/v1.0.1.tar.gz -patches: - "1.0.0": - - patch_file: "patches/1.0.0-updated-cmake.patch" - patch_description: "Use find_package for CMakeDeps" - patch_type: "conan" - sha256: "2be2eadc468fe676f547793fc7ec48bc38ce6f1daa47a497cd2535aaa493fa9a" - - - patch_file: "patches/1.0.0-Grid.hpp-include-vector.patch" - patch_description: "add missing #include " - patch_type: "portability" - sha256: "0326eb790fc55630efe138bc9b359754d2de23c4aa37179faa04821f83efa9c3" - - - patch_file: "patches/1.0.0-RandomGenerator.hpp-link.patch" - patch_description: "Fix static function linking" - patch_type: "portability" - sha256: "218318c017500ab4c6360dafaf0523736295ddac323c04aaad5fc8a31867b4f0" - - - patch_file: "patches/1.0.0-RandomGenerator.cpp-link.patch" - patch_description: "Fix static function linking" - patch_type: "portability" - sha256: "f5d0cc6a108bb3f5f22a88c29f5eda1ddf73c25720e894e7ac3c67396e687087" + url: "https://github.com/jjbel/samarium/archive/refs/tags/v1.0.1.tar.gz" + sha256: "3748ad1095805338d0d54ca7b60a155520188970946b247d56cc9b5eeb397358" diff --git a/recipes/samarium/all/conanfile.py b/recipes/samarium/all/conanfile.py index 6f1215fe6e6c6..a35480bd85c35 100644 --- a/recipes/samarium/all/conanfile.py +++ b/recipes/samarium/all/conanfile.py @@ -1,10 +1,11 @@ -from os import path +import os from conan import ConanFile -from conan.tools.cmake import CMake, cmake_layout -from conan.tools.files import patch, copy, get -from conan.tools.scm import Version from conan.errors import ConanInvalidConfiguration +from conan.tools.build import check_min_cppstd +from conan.tools.cmake import CMake, cmake_layout, CMakeToolchain, CMakeDeps +from conan.tools.files import copy, get +from conan.tools.scm import Version required_conan_version = ">=1.47.0" @@ -12,73 +13,84 @@ class SamariumConan(ConanFile): name = "samarium" description = "2-D physics simulation library" - homepage = "https://strangequark1041.github.io/samarium/" + homepage = "https://jjbel.github.io/samarium/" url = "https://github.com/conan-io/conan-center-index/" license = "MIT" topics = ("cpp20", "physics", "2d", "simulation") - generators = "CMakeDeps", "CMakeToolchain" - requires = "fmt/9.0.0", "sfml/2.5.1", "range-v3/0.12.0", "stb/cci.20210910", "tl-expected/20190710" - settings = "os", "compiler", "build_type", "arch" - options = {"shared": [True, False], "fPIC": [ - True, False]} - default_options = {"shared": False, "fPIC": True} + package_type = "library" + settings = "os", "arch", "compiler", "build_type" + options = { + "shared": [True, False], + "fPIC": [True, False], + } + default_options = { + "shared": False, + "fPIC": True, + } + + @property + def _min_cppstd(self): + return 20 @property def _compilers_minimum_version(self): return { - "gcc": "11.0", - "Visual Studio": "16", + "gcc": "11", "clang": "13", "apple-clang": "13", + "msvc": "192", + "Visual Studio": "16", } - def source(self): - get(self, **self.conan_data["sources"] - [str(self.version)], strip_root=True) - - def configure(self): - if self.options.shared: - del self.options.fPIC - def config_options(self): if self.settings.os == "Windows": del self.options.fPIC - def validate(self): - if self.version == "1.0.0" and self.settings.os == "Macos": - raise ConanInvalidConfiguration("Macos not supported for v1.0.0") - - compiler = str(self.settings.compiler) - if compiler not in self._compilers_minimum_version: - self.output.warn( - "Unknown compiler, assuming it supports at least C++20") - return - - version = Version(self.settings.compiler.version) - if version < self._compilers_minimum_version[compiler]: - raise ConanInvalidConfiguration( - f"{self.name} requires a compiler that supports at least C++20") + def configure(self): + if self.options.shared: + self.options.rm_safe("fPIC") def layout(self): cmake_layout(self, src_folder="src") - def export_sources(self): - for patch in self.conan_data.get("patches", {}).get(self.version, []): - self.copy(patch["patch_file"]) + def requirements(self): + self.requires("fmt/10.2.1", transitive_headers=True, transitive_libs=True) + self.requires("sfml/2.6.1", transitive_headers=True, transitive_libs=True) + self.requires("range-v3/cci.20240905", transitive_headers=True, transitive_libs=True) + self.requires("stb/cci.20230920") + self.requires("tl-expected/20190710", transitive_headers=True, transitive_libs=True) - def build(self): - for patch_ in self.conan_data.get("patches", {}).get(self.version, []): - patch(self, **patch_) + def validate(self): + if self.settings.compiler.cppstd: + check_min_cppstd(self, self._min_cppstd) + minimum_version = self._compilers_minimum_version.get(str(self.settings.compiler), False) + if minimum_version and Version(self.settings.compiler.version) < minimum_version: + raise ConanInvalidConfiguration( + f"{self.ref} requires C++{self._min_cppstd}, which your compiler does not support." + ) + + def source(self): + get(self, **self.conan_data["sources"][str(self.version)], strip_root=True) + + def generate(self): + tc = CMakeToolchain(self) + tc.cache_variables["RUN_CONAN"] = False + tc.cache_variables["BUILD_UNIT_TESTS"] = False + tc.cache_variables["BUILD_EXAMPLES"] = False + tc.cache_variables["BUILD_DOCS"] = False + tc.cache_variables["BUILD_DOCS_TARGET"] = False + tc.generate() + deps = CMakeDeps(self) + deps.generate() + def build(self): cmake = CMake(self) - cmake.configure(build_script_folder="src") + cmake.configure() cmake.build() def package(self): - copy(self, "LICENSE.md", src=self.folders.source_folder, - dst=path.join(self.package_folder, "licenses")) - + copy(self, "LICENSE.md", self.source_folder, os.path.join(self.package_folder, "licenses")) cmake = CMake(self) cmake.install() diff --git a/recipes/samarium/all/patches/1.0.0-Grid.hpp-include-vector.patch b/recipes/samarium/all/patches/1.0.0-Grid.hpp-include-vector.patch deleted file mode 100644 index 9ce690f42e82c..0000000000000 --- a/recipes/samarium/all/patches/1.0.0-Grid.hpp-include-vector.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/src/samarium/graphics/Grid.hpp b/src/samarium/graphics/Grid.hpp -index 25ba647..0f0ccac 100644 ---- a/src/samarium/graphics/Grid.hpp -+++ b/src/samarium/graphics/Grid.hpp -@@ -10,6 +10,7 @@ - #include - #include - #include -+#include - - #include "fmt/format.h" - #include "range/v3/algorithm/copy.hpp" diff --git a/recipes/samarium/all/patches/1.0.0-RandomGenerator.cpp-link.patch b/recipes/samarium/all/patches/1.0.0-RandomGenerator.cpp-link.patch deleted file mode 100644 index 8b951e545c4d1..0000000000000 --- a/recipes/samarium/all/patches/1.0.0-RandomGenerator.cpp-link.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/src/samarium/util/RandomGenerator.cpp b/src/samarium/util/RandomGenerator.cpp -index d1a17d6..84c964b 100644 ---- a/src/samarium/util/RandomGenerator.cpp -+++ b/src/samarium/util/RandomGenerator.cpp -@@ -75,17 +75,6 @@ void RandomGenerator::reseed(u64 new_seed) - ranges::generate(cache, [this] { return this->next_scaled(); }); - } - --[[nodiscard]] auto RandomGenerator::next() noexcept -> u64 --{ -- const auto oldstate = this->state; -- // Advance internal state -- this->state = oldstate * magic_number + (this->inc | 1); -- // Calculate output function (XSH RR), uses old state for max ILP -- const auto xorshifted = static_cast(((oldstate >> 18UL) ^ oldstate) >> 27UL); -- const auto rot = static_cast(oldstate >> 59UL); -- return (xorshifted >> rot) | (xorshifted << ((-rot) & 31)); --} -- - [[nodiscard]] auto RandomGenerator::next_scaled() noexcept -> f64 - { - return static_cast(this->next()) / static_cast(std::numeric_limits::max()); diff --git a/recipes/samarium/all/patches/1.0.0-RandomGenerator.hpp-link.patch b/recipes/samarium/all/patches/1.0.0-RandomGenerator.hpp-link.patch deleted file mode 100644 index 15444d4236758..0000000000000 --- a/recipes/samarium/all/patches/1.0.0-RandomGenerator.hpp-link.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/src/samarium/util/RandomGenerator.hpp b/src/samarium/util/RandomGenerator.hpp -index b86224f..4f48424 100644 ---- a/src/samarium/util/RandomGenerator.hpp -+++ b/src/samarium/util/RandomGenerator.hpp -@@ -49,14 +49,27 @@ struct RandomGenerator - } - state = new_state * magic_number + (new_inc | 1); - -- ranges::generate(cache, [this] { return this->next_scaled(); }); -+ ranges::generate(cache, -+ [this] { -+ return static_cast(this->next()) / -+ static_cast(std::numeric_limits::max()); -+ }); - } - - void resize(u64 new_size); - - void reseed(u64 new_seed); - -- [[nodiscard]] auto next() noexcept -> u64; -+ [[nodiscard]] auto next() noexcept -> u64 -+ { -+ const auto oldstate = this->state; -+ // Advance internal state -+ this->state = oldstate * magic_number + (this->inc | 1); -+ // Calculate output function (XSH RR), uses old state for max ILP -+ const auto xorshifted = static_cast(((oldstate >> 18UL) ^ oldstate) >> 27UL); -+ const auto rot = static_cast(oldstate >> 59UL); -+ return (xorshifted >> rot) | (xorshifted << ((-rot) & 31)); -+ } - - [[nodiscard]] auto next_scaled() noexcept -> f64; - diff --git a/recipes/samarium/all/patches/1.0.0-updated-cmake.patch b/recipes/samarium/all/patches/1.0.0-updated-cmake.patch deleted file mode 100644 index db7d5eb7a83be..0000000000000 --- a/recipes/samarium/all/patches/1.0.0-updated-cmake.patch +++ /dev/null @@ -1,39 +0,0 @@ -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 0cc8517..aff82dd 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt -@@ -42,28 +42,13 @@ if(WARNINGS) - target_compile_options(samarium PUBLIC ${WARNINGS}) - endif() - --option(SAMARIUM_USE_CONAN "Use Conan to find dependencies" TRUE) --if(SAMARIUM_USE_CONAN) -- message(STATUS "src/CMakeLists.txt: Using Conan for deps") -+find_package(SFML 2.5 CONFIG REQUIRED) -+find_package(fmt CONFIG REQUIRED) -+find_package(range-v3 CONFIG REQUIRED) - -- include(conanbuildinfo) -- conan_basic_setup(TARGETS) -- -- target_link_libraries(samarium PRIVATE CONAN_PKG::fmt) -- target_link_libraries(samarium PRIVATE CONAN_PKG::sfml) -- target_link_libraries(samarium PRIVATE CONAN_PKG::range-v3) -- --else() -- find_package( -- SFML 2.5 -- COMPONENTS system window graphics -- REQUIRED -- ) -- -- find_package(fmt REQUIRED) -- target_link_libraries(samarium PRIVATE fmt::fmt) -- target_link_libraries(samarium PRIVATE sfml-system sfml-window sfml-graphics) --endif() -+target_link_libraries(samarium PRIVATE fmt::fmt) -+target_link_libraries(samarium PRIVATE sfml-system sfml-window sfml-graphics) -+target_link_libraries(samarium PRIVATE range-v3::range-v3) - - install( - TARGETS samarium diff --git a/recipes/samarium/all/test_package/conanfile.py b/recipes/samarium/all/test_package/conanfile.py index fd0c8a7b2b6cb..290d9e9c4504e 100644 --- a/recipes/samarium/all/test_package/conanfile.py +++ b/recipes/samarium/all/test_package/conanfile.py @@ -23,5 +23,5 @@ def build(self): def test(self): if not cross_building(self): - bin_path = os.path.join(self.cpp.build.bindirs[0], "test_package") - self.run(bin_path, run_environment=True) + bin_path = os.path.join(self.cpp.build.bindir, "test_package") + self.run(bin_path, env="conanrun") diff --git a/recipes/samarium/config.yml b/recipes/samarium/config.yml index 5e61e3082c4f0..715e55357a17b 100644 --- a/recipes/samarium/config.yml +++ b/recipes/samarium/config.yml @@ -1,5 +1,3 @@ versions: - "1.0.0": - folder: all "1.0.1": folder: all From e9c69051bc800a5d3e79d352d50dc1aef8923b22 Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Wed, 25 Sep 2024 16:13:50 +0300 Subject: [PATCH 2/8] samarium: force-disable tests --- recipes/samarium/all/conanfile.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/recipes/samarium/all/conanfile.py b/recipes/samarium/all/conanfile.py index a35480bd85c35..1e3c7d6ec6f7f 100644 --- a/recipes/samarium/all/conanfile.py +++ b/recipes/samarium/all/conanfile.py @@ -4,7 +4,7 @@ from conan.errors import ConanInvalidConfiguration from conan.tools.build import check_min_cppstd from conan.tools.cmake import CMake, cmake_layout, CMakeToolchain, CMakeDeps -from conan.tools.files import copy, get +from conan.tools.files import copy, get, save from conan.tools.scm import Version required_conan_version = ">=1.47.0" @@ -84,7 +84,12 @@ def generate(self): deps = CMakeDeps(self) deps.generate() + def _patch_sources(self): + # Force-disable all tests + save(self, os.path.join(self.source_folder, "test", "CMakeLists.txt"), "") + def build(self): + self._patch_sources() cmake = CMake(self) cmake.configure() cmake.build() From 79db54b98d8aa6d39e2c856247adc1d43ed6fdfd Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Thu, 26 Sep 2024 16:28:05 +0300 Subject: [PATCH 3/8] samarium: require shared=False for SFML --- recipes/samarium/all/conanfile.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/recipes/samarium/all/conanfile.py b/recipes/samarium/all/conanfile.py index 1e3c7d6ec6f7f..3e97e055f09d3 100644 --- a/recipes/samarium/all/conanfile.py +++ b/recipes/samarium/all/conanfile.py @@ -50,6 +50,10 @@ def config_options(self): def configure(self): if self.options.shared: self.options.rm_safe("fPIC") + # samarium relies on stb_image_write.h being instantiated in SFML with STB_IMAGE_WRITE_IMPLEMENTATION, + # but it is not build with --whole-archive, so some symbols expected by samarium are not found. + # Adding STB_IMAGE_WRITE_IMPLEMENTATION in samarium would lead to issues on apple-clang and MSVC due to multiple definitions. + self.options["sfml"].shared = False def layout(self): cmake_layout(self, src_folder="src") @@ -70,6 +74,9 @@ def validate(self): f"{self.ref} requires C++{self._min_cppstd}, which your compiler does not support." ) + if self.dependencies["sfml"].options.shared: + raise ConanInvalidConfiguration("SFML dependency must be built as a static library") + def source(self): get(self, **self.conan_data["sources"][str(self.version)], strip_root=True) From 9be8f09bd2737092d8f9d8d07101b34e38940920 Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Thu, 26 Sep 2024 16:29:33 +0300 Subject: [PATCH 4/8] samarium: remove some transitive_libs=True --- recipes/samarium/all/conanfile.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/samarium/all/conanfile.py b/recipes/samarium/all/conanfile.py index 3e97e055f09d3..d86602bc0004a 100644 --- a/recipes/samarium/all/conanfile.py +++ b/recipes/samarium/all/conanfile.py @@ -61,9 +61,9 @@ def layout(self): def requirements(self): self.requires("fmt/10.2.1", transitive_headers=True, transitive_libs=True) self.requires("sfml/2.6.1", transitive_headers=True, transitive_libs=True) - self.requires("range-v3/cci.20240905", transitive_headers=True, transitive_libs=True) + self.requires("range-v3/cci.20240905", transitive_headers=True) self.requires("stb/cci.20230920") - self.requires("tl-expected/20190710", transitive_headers=True, transitive_libs=True) + self.requires("tl-expected/20190710", transitive_headers=True) def validate(self): if self.settings.compiler.cppstd: From 431269bdcda292aad730d9e1279a9f21623a0311 Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Thu, 26 Sep 2024 16:30:26 +0300 Subject: [PATCH 5/8] smarium: typo --- recipes/samarium/all/conanfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/samarium/all/conanfile.py b/recipes/samarium/all/conanfile.py index d86602bc0004a..6ef6b984285d0 100644 --- a/recipes/samarium/all/conanfile.py +++ b/recipes/samarium/all/conanfile.py @@ -51,7 +51,7 @@ def configure(self): if self.options.shared: self.options.rm_safe("fPIC") # samarium relies on stb_image_write.h being instantiated in SFML with STB_IMAGE_WRITE_IMPLEMENTATION, - # but it is not build with --whole-archive, so some symbols expected by samarium are not found. + # but it is not built with --whole-archive, so some symbols expected by samarium are not found. # Adding STB_IMAGE_WRITE_IMPLEMENTATION in samarium would lead to issues on apple-clang and MSVC due to multiple definitions. self.options["sfml"].shared = False From f27ff08cd7f0f10987157f6f04f4554cf16668a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abril=20Rinc=C3=B3n=20Blanco?= Date: Fri, 27 Sep 2024 18:36:40 +0200 Subject: [PATCH 6/8] Notes, improve test_package --- recipes/samarium/all/conanfile.py | 13 ++++++++----- recipes/samarium/all/test_package/test_package.cpp | 12 +++++++++--- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/recipes/samarium/all/conanfile.py b/recipes/samarium/all/conanfile.py index 6ef6b984285d0..f0a8f6eb557d5 100644 --- a/recipes/samarium/all/conanfile.py +++ b/recipes/samarium/all/conanfile.py @@ -59,11 +59,14 @@ def layout(self): cmake_layout(self, src_folder="src") def requirements(self): - self.requires("fmt/10.2.1", transitive_headers=True, transitive_libs=True) - self.requires("sfml/2.6.1", transitive_headers=True, transitive_libs=True) - self.requires("range-v3/cci.20240905", transitive_headers=True) - self.requires("stb/cci.20230920") - self.requires("tl-expected/20190710", transitive_headers=True) + # Undefined symbols for architecture arm64: "void fmt::v10::detail::vformat_to..." when using sm::print + self.requires("fmt/10.2.1", transitive_headers=True, transitive_libs=True) + # Undefined symbols for architecture arm64: "sf::Keyboard::isKeyPressed(sf::Keyboard::Key)" + # when using inlined is_key_pressed function + self.requires("sfml/2.6.1", transitive_headers=True, transitive_libs=True) + self.requires("range-v3/cci.20240905", transitive_headers=True) + self.requires("stb/cci.20230920") + self.requires("tl-expected/20190710", transitive_headers=True) def validate(self): if self.settings.compiler.cppstd: diff --git a/recipes/samarium/all/test_package/test_package.cpp b/recipes/samarium/all/test_package/test_package.cpp index f16dd948c92df..bbbcbc882407b 100644 --- a/recipes/samarium/all/test_package/test_package.cpp +++ b/recipes/samarium/all/test_package/test_package.cpp @@ -1,8 +1,14 @@ #include "samarium/samarium.hpp" - +#include int main() { const auto im = sm::Image{sm::dimsFHD}; - fmt::print(fmt::emphasis::bold, "\nSuccessful installation!\n"); - fmt::print(fmt::emphasis::bold, "Welcome to {}\n", sm::version); + std::cout << "Version: " << sm::version.major << '.' << sm::version.minor << '.' << sm::version.patch << std::endl; + std::cout << "Image size: " << im.size() << std::endl; + const auto as_sfml = sm::sfml(sm::Vector2_t{1.0, 2.0}); + sm::print("A Vector2:", sm::Vector2{.x = 5, .y = -3}); + sm::print("A Color: ", sm::Color{.r = 5, .g = 200, .b = 255}); + sm::print("Is space pressed?", sm::Keyboard::is_key_pressed(sm::Keyboard::Key::Space)); + return 0; + } From 0238f37d1cca809d863d148dc39b89154eb6ad00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abril=20Rinc=C3=B3n=20Blanco?= Date: Fri, 27 Sep 2024 19:24:58 +0200 Subject: [PATCH 7/8] Party pooper --- recipes/samarium/all/test_package/test_package.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/samarium/all/test_package/test_package.cpp b/recipes/samarium/all/test_package/test_package.cpp index bbbcbc882407b..dccb597004e45 100644 --- a/recipes/samarium/all/test_package/test_package.cpp +++ b/recipes/samarium/all/test_package/test_package.cpp @@ -7,8 +7,8 @@ int main() std::cout << "Image size: " << im.size() << std::endl; const auto as_sfml = sm::sfml(sm::Vector2_t{1.0, 2.0}); sm::print("A Vector2:", sm::Vector2{.x = 5, .y = -3}); - sm::print("A Color: ", sm::Color{.r = 5, .g = 200, .b = 255}); - sm::print("Is space pressed?", sm::Keyboard::is_key_pressed(sm::Keyboard::Key::Space)); + // sm::print("A Color: ", sm::Color{.r = 5, .g = 200, .b = 255}); + // sm::print("Is space pressed?", sm::Keyboard::is_key_pressed(sm::Keyboard::Key::Space)); return 0; } From 7f582db4601490b14f3afd466c28a21979d69040 Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Wed, 16 Oct 2024 16:12:43 +0300 Subject: [PATCH 8/8] samarium: add non-x86 compatibility --- recipes/samarium/all/conanfile.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/recipes/samarium/all/conanfile.py b/recipes/samarium/all/conanfile.py index f0a8f6eb557d5..ce95941fcb901 100644 --- a/recipes/samarium/all/conanfile.py +++ b/recipes/samarium/all/conanfile.py @@ -4,7 +4,7 @@ from conan.errors import ConanInvalidConfiguration from conan.tools.build import check_min_cppstd from conan.tools.cmake import CMake, cmake_layout, CMakeToolchain, CMakeDeps -from conan.tools.files import copy, get, save +from conan.tools.files import copy, get, save, replace_in_file from conan.tools.scm import Version required_conan_version = ">=1.47.0" @@ -97,6 +97,10 @@ def generate(self): def _patch_sources(self): # Force-disable all tests save(self, os.path.join(self.source_folder, "test", "CMakeLists.txt"), "") + # Disable SSE4.1 for non-x86 architectures + if self.settings.arch not in ["x86", "x86_64"]: + replace_in_file(self, os.path.join(self.source_folder, "src", "CMakeLists.txt"), + "-msse4.1;-mpclmul;", "") def build(self): self._patch_sources()