Skip to content

Commit

Permalink
Improve min compiler version support
Browse files Browse the repository at this point in the history
  • Loading branch information
miklelappo committed Dec 3, 2022
1 parent b6a1892 commit 3cfca45
Showing 1 changed file with 23 additions and 2 deletions.
25 changes: 23 additions & 2 deletions recipes/perfetto/all/conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,16 @@ class PerfettoConan(ConanFile):
def _minimum_cpp_standard(self):
return 11 if Version(self.version) < "31.0" else 17

@property
def _minimum_compilers_version(self):
return {
"Visual Studio": "15" if Version(self.version) < "31.0" else "16",
"msvc": "190",
"gcc": "7",
"clang": "3.3" if Version(self.version) < "31.0" else "5",
"apple-clang": "5.0" if Version(self.version) < "31.0" else "9.1",
}

def export_sources(self):
copy(self, "CMakeLists.txt", src=self.recipe_folder, dst=self.export_sources_folder)
export_conandata_patches(self)
Expand All @@ -50,11 +60,22 @@ def layout(self):
cmake_layout(self, src_folder="src")

def validate(self):
if self.info.settings.compiler == "gcc" and Version(self.info.settings.compiler.version) < 7:
raise ConanInvalidConfiguration ("perfetto requires gcc >= 7")
if self.info.settings.compiler.get_safe("cppstd"):
check_min_cppstd(self, self._minimum_cpp_standard)

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]

compiler = self.info.settings.compiler
min_version = self._minimum_compilers_version.get(str(compiler))
if min_version and loose_lt_semver(str(compiler.version), min_version):
raise ConanInvalidConfiguration(
f"{self.ref} requires {compiler} {min_version}. The current compiler is {compiler} {compiler.version}."
)

def source(self):
get(self, **self.conan_data["sources"][self.version],
destination=self.source_folder, strip_root=True)
Expand Down

0 comments on commit 3cfca45

Please sign in to comment.