2017-06-23 15:34:56 +02:00
|
|
|
#!/usr/bin/env python
|
2020-10-31 18:58:57 +01:00
|
|
|
from conans import ConanFile, CMake, tools
|
2017-06-23 15:34:56 +02:00
|
|
|
|
|
|
|
class CatchConan(ConanFile):
|
2020-01-25 18:48:59 +01:00
|
|
|
name = "catch2"
|
|
|
|
description = "A modern, C++-native, framework for unit-tests, TDD and BDD"
|
2020-01-20 20:20:59 +01:00
|
|
|
topics = ("conan", "catch2", "unit-test", "tdd", "bdd")
|
2018-06-11 10:48:10 +02:00
|
|
|
url = "https://github.com/catchorg/Catch2"
|
2018-11-16 12:45:07 +01:00
|
|
|
homepage = url
|
|
|
|
license = "BSL-1.0"
|
2020-01-25 18:48:59 +01:00
|
|
|
|
2018-11-16 12:45:07 +01:00
|
|
|
exports = "LICENSE.txt"
|
2020-01-14 19:36:36 +01:00
|
|
|
exports_sources = ("src/*", "CMakeLists.txt", "CMake/*", "extras/*")
|
2020-01-25 18:48:59 +01:00
|
|
|
|
2020-01-14 19:36:36 +01:00
|
|
|
settings = "os", "compiler", "build_type", "arch"
|
2020-01-25 18:48:59 +01:00
|
|
|
|
2020-10-31 18:58:57 +01:00
|
|
|
generators = "cmake"
|
|
|
|
|
2020-01-14 19:36:36 +01:00
|
|
|
def _configure_cmake(self):
|
2018-06-19 07:14:46 +02:00
|
|
|
cmake = CMake(self)
|
|
|
|
cmake.definitions["BUILD_TESTING"] = "OFF"
|
|
|
|
cmake.definitions["CATCH_INSTALL_DOCS"] = "OFF"
|
2022-01-06 10:53:26 +01:00
|
|
|
cmake.definitions["CATCH_INSTALL_EXTRAS"] = "ON"
|
2020-01-14 19:36:36 +01:00
|
|
|
cmake.configure(build_folder="build")
|
|
|
|
return cmake
|
|
|
|
|
|
|
|
def build(self):
|
2020-10-31 19:24:23 +01:00
|
|
|
# We need this workaround until the toolchains feature
|
|
|
|
# to inject stuff like MD/MT
|
2020-10-31 18:58:57 +01:00
|
|
|
line_to_replace = 'list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/CMake")'
|
|
|
|
tools.replace_in_file("CMakeLists.txt", line_to_replace,
|
|
|
|
'''{}
|
2020-10-31 19:24:23 +01:00
|
|
|
include("{}/conanbuildinfo.cmake")
|
|
|
|
conan_basic_setup()'''.format(line_to_replace, self.install_folder.replace("\\", "/")))
|
2020-10-31 18:58:57 +01:00
|
|
|
|
2020-01-14 19:36:36 +01:00
|
|
|
cmake = self._configure_cmake()
|
|
|
|
cmake.build()
|
2018-06-19 07:14:46 +02:00
|
|
|
|
2020-01-14 19:36:36 +01:00
|
|
|
def package(self):
|
2018-06-19 07:14:46 +02:00
|
|
|
self.copy(pattern="LICENSE.txt", dst="licenses")
|
2020-01-14 19:36:36 +01:00
|
|
|
cmake = self._configure_cmake()
|
|
|
|
cmake.install()
|
2017-10-31 15:17:21 +01:00
|
|
|
|
2020-01-14 19:36:36 +01:00
|
|
|
def package_info(self):
|
2022-02-05 19:32:06 +01:00
|
|
|
lib_suffix = "d" if self.settings.build_type == "Debug" else ""
|
|
|
|
|
2020-01-14 19:36:36 +01:00
|
|
|
self.cpp_info.names["cmake_find_package"] = "Catch2"
|
|
|
|
self.cpp_info.names["cmake_find_package_multi"] = "Catch2"
|
2020-10-31 19:53:25 +01:00
|
|
|
# Catch2
|
|
|
|
self.cpp_info.components["catch2base"].names["cmake_find_package"] = "Catch2"
|
|
|
|
self.cpp_info.components["catch2base"].names["cmake_find_package_multi"] = "Catch2"
|
|
|
|
self.cpp_info.components["catch2base"].names["pkg_config"] = "Catch2"
|
2022-02-05 19:32:06 +01:00
|
|
|
self.cpp_info.components["catch2base"].libs = ["Catch2" + lib_suffix]
|
2020-10-31 19:53:25 +01:00
|
|
|
# Catch2WithMain
|
|
|
|
self.cpp_info.components["catch2main"].names["cmake_find_package"] = "Catch2WithMain"
|
|
|
|
self.cpp_info.components["catch2main"].names["cmake_find_package_multi"] = "Catch2WithMain"
|
|
|
|
self.cpp_info.components["catch2main"].names["pkg_config"] = "Catch2WithMain"
|
2022-02-05 19:32:06 +01:00
|
|
|
self.cpp_info.components["catch2main"].libs = ["Catch2Main" + lib_suffix]
|
2020-10-31 19:53:25 +01:00
|
|
|
self.cpp_info.components["catch2main"].requires = ["catch2base"]
|