84 lines
2.4 KiB
Python
84 lines
2.4 KiB
Python
import os
|
|
import re
|
|
from conans import load, tools, ConanFile, CMake
|
|
|
|
|
|
def get_version():
|
|
try:
|
|
version = os.getenv('PROJECT_VERSION', None)
|
|
if version:
|
|
return version
|
|
|
|
content = load('CMakeLists.txt')
|
|
version = re.search('set\(PROJECT_VERSION (.*)\)', content).group(1)
|
|
return version.strip()
|
|
except:
|
|
return None
|
|
|
|
class JsonSchemaValidatorConan(ConanFile):
|
|
name = 'JsonSchemaValidator'
|
|
version = get_version()
|
|
url = 'https://github.com/pboettch/json-schema-validator'
|
|
license = 'MIT'
|
|
settings = 'os', 'compiler', 'build_type', 'arch'
|
|
options = {
|
|
'shared': [True, False],
|
|
'fPIC': [True, False],
|
|
'build_examples': [True, False],
|
|
'build_tests': [True, False]
|
|
}
|
|
default_options = {
|
|
'shared': False,
|
|
'fPIC': True,
|
|
'build_examples': True,
|
|
'build_tests': False
|
|
}
|
|
generators = "CMakeDeps"
|
|
exports_sources = [
|
|
'CMakeLists.txt',
|
|
'nlohmann_json_schema_validatorConfig.cmake.in',
|
|
'src/*',
|
|
'app/*',
|
|
'test/*',
|
|
]
|
|
requires = (
|
|
'nlohmann_json/3.11.2'
|
|
)
|
|
_cmake = None
|
|
|
|
def _configure_cmake(self):
|
|
if self._cmake:
|
|
return self._cmake
|
|
self._cmake = CMake(self)
|
|
self._cmake.definitions['JSON_VALIDATOR_BUILD_EXAMPLES'] = self.options.build_examples
|
|
self._cmake.definitions['JSON_VALIDATOR_BUILD_TESTS'] = self.options.build_tests
|
|
self._cmake.configure()
|
|
return self._cmake
|
|
|
|
def layout(self):
|
|
build_type = str(self.settings.build_type).lower()
|
|
self.folders.build = "build-{}".format(build_type)
|
|
|
|
def build(self):
|
|
cmake = self._configure_cmake()
|
|
cmake.configure()
|
|
cmake.build()
|
|
|
|
def package(self):
|
|
cmake = self._configure_cmake()
|
|
cmake.install()
|
|
|
|
def package_info(self):
|
|
includedir = os.path.join(self.package_folder, "include")
|
|
self.cpp_info.includedirs = [includedir]
|
|
|
|
libdir = os.path.join(self.package_folder, "lib")
|
|
self.cpp_info.libdirs = [libdir]
|
|
self.cpp_info.libs += tools.collect_libs(self, libdir)
|
|
|
|
bindir = os.path.join(self.package_folder, "bin")
|
|
self.output.info("Appending PATH environment variable: {}".format(bindir))
|
|
self.env_info.PATH.append(bindir)
|
|
|
|
self.user_info.VERSION = self.version
|