-
Notifications
You must be signed in to change notification settings - Fork 0
/
conanfile.py
128 lines (87 loc) · 3.54 KB
/
conanfile.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/usr/bin/env python3
# (C) Copyright IBM Deutschland GmbH 2021, 2023
# (C) Copyright IBM Corp 2021, 2023
#
# non-exclusively licensed to gematik GmbH
###################################################################################################
from conans import CMake
from conans import ConanFile
from conans import tools
###################################################################################################
import os
###################################################################################################
class TpmClientPackage(ConanFile):
# custom properties for usage by this specific recipe's code, not by the Conan SDK
_build_tests_cmake_argument = 'BUILD_TESTS'
_hardware_tpm_cmake_argument = 'HARDWARE_TPM'
_test_build_requires = ['gtest/1.11.0']
_cmake = None
# Conan properties, used by the Conan SDK
name = 'tpmclient'
homepage = 'https://github.ibmgcloud.net/eRp/tpm-client'
description = 'The TPM client access library'
author = 'Theodor Serbana <theodor.serbana@ibm.com>'
license = 'proprietary'
url = 'https://github.ibmgcloud.net/eRp/tpm-client'
options = {'with_tests': [True, False]}
default_options = {'with_tests': False,
'gtest:build_gmock': False,
'gtest:shared': True,
'tss:with_tpm_1_2': False,
'tss:with_tpm_2_0': True,
'tss:with_hardware_tpm': False}
settings = {'os': ['Linux', 'Windows'],
'compiler': ['gcc', 'Visual Studio', 'clang'],
'build_type': ['Debug', 'Release', 'RelWithDebInfo'],
'arch': ['x86', 'x86_64']}
generators = ['cmake']
exports_sources = '*'
build_requires = []
requires = ['openssl/1.1.1l',
'swtpm2/1636',
'tss/1.6.0']
def _get_cmake(self):
if self._cmake:
return self._cmake
self._cmake = CMake(self, set_cmake_flags=True)
# build the tests if option was given
#
if self.options.with_tests:
self._cmake.definitions[self._build_tests_cmake_argument] = 1
if self.options['tss'].with_hardware_tpm:
self._cmake.definitions[self._hardware_tpm_cmake_argument] = 1
# call cmake configure
#
self._cmake.configure()
return self._cmake
def set_version(self):
if not self.version:
git = tools.Git()
self.version = git.run('describe --tags --abbrev=0 --match "v-[0-9\.]*"')[2:]
def build_requirements(self):
if self.options.with_tests:
for dependency in self._test_build_requires:
self.build_requires(dependency)
def build(self):
# build the source code
#
cmake = self._get_cmake()
cmake.build()
# run the tests if option was given
#
if self.options.with_tests:
cmake.test()
def package(self):
# call the CMake install target
#
cmake = self._get_cmake()
cmake.install()
def package_info(self):
self.cpp_info.libs = tools.collect_libs(self)
def imports(self):
self.copy('tpm_server*', os.path.join('simulator', 'bin'), 'bin')
self.copy('*crypto*.dll*', 'bin', 'bin')
self.copy('*tss*.dll*', 'bin', 'bin')
self.copy('*crypto*.so*', 'lib', 'lib')
self.copy('*tss*.so*', 'lib', 'lib')
###################################################################################################