[catch2] Sundry improvements including C++20 support (#41199)
* Add `url_list` to facilitate finding new versions. * `cxxstd` is not meaningful when `@:2.99.99` as it was a header-only package before v3. * Support C++20/23, remove C++14 support. * Add @greenc-FNAL to maintainers. * Add CMake arguments to support testing, build of extras and examples.
This commit is contained in:
parent
03ae2eb223
commit
58a7912435
@ -11,9 +11,10 @@ class Catch2(CMakePackage):
|
|||||||
supports Objective-C (and maybe C)."""
|
supports Objective-C (and maybe C)."""
|
||||||
|
|
||||||
homepage = "https://github.com/catchorg/Catch2"
|
homepage = "https://github.com/catchorg/Catch2"
|
||||||
url = "https://github.com/catchorg/Catch2/archive/v2.13.10.tar.gz"
|
url = "https://github.com/catchorg/Catch2/archive/refs/tags/v3.3.1.tar.gz"
|
||||||
|
list_url = "https://github.com/catchorg/Catch2/releases/"
|
||||||
git = "https://github.com/catchorg/Catch2.git"
|
git = "https://github.com/catchorg/Catch2.git"
|
||||||
maintainers("ax3l")
|
maintainers("ax3l", "greenc-FNAL")
|
||||||
|
|
||||||
# In-Development
|
# In-Development
|
||||||
version("develop", branch="devel")
|
version("develop", branch="devel")
|
||||||
@ -105,24 +106,58 @@ class Catch2(CMakePackage):
|
|||||||
version("1.3.5", sha256="f15730d81b4173fb860ce3561768de7d41bbefb67dc031d7d1f5ae2c07f0a472")
|
version("1.3.5", sha256="f15730d81b4173fb860ce3561768de7d41bbefb67dc031d7d1f5ae2c07f0a472")
|
||||||
version("1.3.0", sha256="245f6ee73e2fea66311afa1da59e5087ddab8b37ce64994ad88506e8af28c6ac")
|
version("1.3.0", sha256="245f6ee73e2fea66311afa1da59e5087ddab8b37ce64994ad88506e8af28c6ac")
|
||||||
|
|
||||||
|
variant(
|
||||||
|
"cxxstd",
|
||||||
|
when="@3:",
|
||||||
|
default="17",
|
||||||
|
values=("17", "20", "23"),
|
||||||
|
multi=False,
|
||||||
|
sticky=True,
|
||||||
|
description="C++ standard",
|
||||||
|
)
|
||||||
variant(
|
variant(
|
||||||
"pic", when="@3: ~shared", default=True, description="Build with position-independent code"
|
"pic", when="@3: ~shared", default=True, description="Build with position-independent code"
|
||||||
)
|
)
|
||||||
variant("shared", when="@3:", default=False, description="Build shared library")
|
variant("shared", when="@3:", default=False, description="Build shared library")
|
||||||
|
|
||||||
variant(
|
def patch(self):
|
||||||
"cxxstd", default="14", values=("14", "17"), multi=False, description="Define C++ standard"
|
filter_file(
|
||||||
)
|
r"#include \<catch2",
|
||||||
|
"#include <cstdint>\n#include <catch2",
|
||||||
|
"src/catch2/internal/catch_string_manip.hpp",
|
||||||
|
)
|
||||||
|
filter_file(
|
||||||
|
r"#include <string>",
|
||||||
|
"#include <string>\n#include <cstdint>",
|
||||||
|
"src/catch2/catch_test_case_info.hpp",
|
||||||
|
)
|
||||||
|
filter_file(
|
||||||
|
r"#include <iomanip>",
|
||||||
|
"#include <iomanip>\n#include <cstdint>",
|
||||||
|
"src/catch2/internal/catch_xmlwriter.cpp",
|
||||||
|
)
|
||||||
|
|
||||||
def cmake_args(self):
|
def cmake_args(self):
|
||||||
spec = self.spec
|
spec = self.spec
|
||||||
args = [self.define_from_variant("CMAKE_CXX_STANDARD", "cxxstd")]
|
args = []
|
||||||
# 1.7.0-1.9.3: no control over test builds
|
# 1.7.0-1.9.3: no control over test builds
|
||||||
if spec.satisfies("@1.9.4:2.1.0"):
|
if spec.satisfies("@1.9.4:2.1.0"):
|
||||||
args.append("-DNO_SELFTEST={0}".format("OFF" if self.run_tests else "ON"))
|
args.append("-DNO_SELFTEST={0}".format("OFF" if self.run_tests else "ON"))
|
||||||
elif spec.satisfies("@2.1.1:"):
|
elif spec.satisfies("@2.1.1:"):
|
||||||
args.append(self.define("BUILD_TESTING", self.run_tests))
|
args.append(self.define("BUILD_TESTING", self.run_tests))
|
||||||
if spec.satisfies("@3:"):
|
if spec.satisfies("@3:"):
|
||||||
|
args.extend(
|
||||||
|
[
|
||||||
|
self.define("BUILD_TESTING", self.run_tests),
|
||||||
|
self.define("CATCH_BUILD_EXAMPLES", True),
|
||||||
|
self.define("CATCH_BUILD_EXTRA_TESTS", self.run_tests),
|
||||||
|
self.define("CATCH_BUILD_TESTING", self.run_tests),
|
||||||
|
self.define("CATCH_ENABLE_WERROR", True),
|
||||||
|
self.define("CATCH_INSTALL_EXTRAS", True),
|
||||||
|
self.define_from_variant("CMAKE_CXX_STANDARD", "cxxstd"),
|
||||||
|
self.define("CMAKE_CXX_STANDARD_REQUIRED", True),
|
||||||
|
]
|
||||||
|
)
|
||||||
args.append(self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"))
|
args.append(self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"))
|
||||||
args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared"))
|
args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared"))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user