build: conanfile updated after review on ConanCenter

This commit is contained in:
Mateusz Pusz
2024-06-20 14:56:54 +02:00
parent 579b658a4d
commit 3e863b2d20

View File

@ -28,17 +28,11 @@ from conan.errors import ConanInvalidConfiguration
from conan.tools.build import can_run, default_cppstd, valid_min_cppstd from conan.tools.build import can_run, default_cppstd, valid_min_cppstd
from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout
from conan.tools.files import copy, load, rmdir from conan.tools.files import copy, load, rmdir
from conan.tools.scm import Version
required_conan_version = ">=2.0.0" required_conan_version = ">=2.0.0"
def loose_lt_semver(v1, v2):
lv1 = [int(v) for v in v1.split(".")]
lv2 = [int(v) for v in v2.split(".")]
min_length = min(len(lv1), len(lv2))
return lv1[:min_length] < lv2[:min_length]
class MPUnitsConan(ConanFile): class MPUnitsConan(ConanFile):
name = "mp-units" name = "mp-units"
homepage = "https://github.com/mpusz/mp-units" homepage = "https://github.com/mpusz/mp-units"
@ -74,7 +68,7 @@ class MPUnitsConan(ConanFile):
"string_view_ret": "auto", "string_view_ret": "auto",
"no_crtp": "auto", "no_crtp": "auto",
"contracts": "gsl-lite", "contracts": "gsl-lite",
"freestanding": "False", "freestanding": False,
} }
tool_requires = "cmake/[>=3.29]" tool_requires = "cmake/[>=3.29]"
implements = "auto_header_only" implements = "auto_header_only"
@ -113,7 +107,7 @@ class MPUnitsConan(ConanFile):
}, },
"cxx_modules": { "cxx_modules": {
"std": "20", "std": "20",
"compiler": {"gcc": "14", "clang": "17", "apple-clang": "", "msvc": ""}, "compiler": {"gcc": "", "clang": "17", "apple-clang": "", "msvc": ""},
}, },
"static_constexpr_vars_in_constexpr_func": { "static_constexpr_vars_in_constexpr_func": {
"std": "23", "std": "23",
@ -159,7 +153,7 @@ class MPUnitsConan(ConanFile):
raise ConanInvalidConfiguration( raise ConanInvalidConfiguration(
f"'{name}' is not yet supported by any known {compiler} compiler" f"'{name}' is not yet supported by any known {compiler} compiler"
) )
if loose_lt_semver(str(compiler.version), min_version): if Version(compiler.version) < min_version:
raise ConanInvalidConfiguration( raise ConanInvalidConfiguration(
f"'{name}' requires at least {compiler}-{min_version} ({compiler}-{compiler.version} in use)" f"'{name}' requires at least {compiler}-{min_version} ({compiler}-{compiler.version} in use)"
) )
@ -175,7 +169,7 @@ class MPUnitsConan(ConanFile):
or ( or (
opt == "auto" opt == "auto"
and min_version and min_version
and not loose_lt_semver(str(compiler.version), min_version) and Version(compiler.version) >= min_version
) )
) )
@ -206,6 +200,10 @@ class MPUnitsConan(ConanFile):
).group(1) ).group(1)
self.version = version.strip() self.version = version.strip()
def configure(self):
if self.options.freestanding:
self.options.rm_safe("std_format")
def requirements(self): def requirements(self):
if not self.options.freestanding: if not self.options.freestanding:
if self.options.contracts == "gsl-lite": if self.options.contracts == "gsl-lite":
@ -269,7 +267,8 @@ class MPUnitsConan(ConanFile):
def build(self): def build(self):
cmake = CMake(self) cmake = CMake(self)
cmake.configure(build_script_folder=None if self._build_all else "src") cmake.configure(build_script_folder=None if self._build_all else "src")
cmake.build() if self._build_all or self._build_cxx_modules:
cmake.build()
if self._build_all: if self._build_all:
cmake.build(target="all_verify_interface_header_sets") cmake.build(target="all_verify_interface_header_sets")
if can_run(self): if can_run(self):