forked from liblogicalaccess/liblogicalaccess
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconanfile.py
150 lines (131 loc) · 6.1 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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
from conan import ConanFile
from conan.tools.cmake import CMakeToolchain, CMakeDeps, CMake, cmake_layout
class LLAConan(ConanFile):
name = "logicalaccess"
version = "3.2.0"
license = "https://github.com/liblogicalaccess/liblogicalaccess/blob/develop/LICENSE"
url = "https://github.com/liblogicalaccess/liblogicalaccess"
description = "LLA RFID library"
settings = "os", "compiler", "build_type", "arch"
requires = 'boost/1.83.0', 'openssl/1.1.1w', 'nlohmann_json/3.11.3', 'zlib/1.3.1'
options = {'LLA_BUILD_PKCS': [True, False], 'LLA_BUILD_LIBUSB': [True, False]}
revision_mode = "scm"
exports_sources = "plugins*", "src*", "include*", "CMakeLists.txt", "cmake*", "liblogicalaccess.config", "tests*", "samples*"
def config_options(self):
self.options.LLA_BUILD_PKCS = True
self.options.LLA_BUILD_LIBUSB = False
self.options['openssl'].shared = True
self.options['gtest'].shared = True
if self.settings.os == "Windows":
self.options['openssl'].no_asm = True
self.options['boost'].shared = False
else:
self.options['boost'].shared = True
def requirements(self):
if self.options.LLA_BUILD_PKCS:
self.requires('cppkcs11/1.2')
if self.options.LLA_BUILD_LIBUSB:
self.requires('libusb/1.0.26')
def build_requirements(self):
self.test_requires('gtest/1.15.0')
def imports(self):
if self.settings.os == "Windows":
self.copy("*.dll", "bin", "bin")
def layout(self):
cmake_layout(self)
def generate(self):
tc = CMakeToolchain(self)
if self.settings.os == 'Android':
# Workaround to avoid conan passing -stdlib=libc++
# to compiler. See https://github.com/conan-io/conan/issues/2856
tc.variables['CONAN_LIBCXX'] = ''
tc.variables['LLA_BOOST_ASIO_HAS_STD_STRING_VIEW'] = 1
if self.options.LLA_BUILD_PKCS:
tc.variables['LLA_BUILD_PKCS'] = True
else:
tc.variables['LLA_BUILD_PKCS'] = False
if self.options.LLA_BUILD_LIBUSB:
tc.variables['LLA_BUILD_LIBUSB'] = True
else:
tc.variables['LLA_BUILD_LIBUSB'] = False
tc.variables['LIBLOGICALACCESS_VERSION_STRING'] = self.version
tc.variables['LIBLOGICALACCESS_WINDOWS_VERSION'] = self.version.replace('.', ',') + ',0'
tc.variables['TARGET_ARCH'] = self.settings.arch
if self.settings.os == "Windows":
# For MSVC we need to restrict configuration type to avoid issues.
tc.variables['CMAKE_CONFIGURATION_TYPES'] = self.settings.build_type
tc.generate()
deps = CMakeDeps(self)
deps.generate()
def build(self):
cmake = CMake(self)
cmake.configure()
cmake.build()
def package(self):
cmake = CMake(self)
cmake.install()
def package_info(self):
if self.settings.os == 'Android':
# For Android we only package a subsets of libraries.
self.cpp_info.libs.append('logicalaccess')
self.cpp_info.libs.append('llacommon')
self.cpp_info.libs.append('logicalaccess-cryptolib')
self.cpp_info.libs.append('iso7816readers')
self.cpp_info.libs.append('desfirecards')
self.cpp_info.libs.append('mifarecards')
self.cpp_info.libs.append('iso7816cards')
self.cpp_info.libs.append('samavcards')
self.cpp_info.libs.append('epasscards')
self.cpp_info.libs.append('seoscards')
return
if self.settings.os == 'Windows':
# Those are some windows specific stuff.
self.cpp_info.libs.append('keyboardreaders')
if self.settings.arch == 'x86_64':
self.cpp_info.libs.append('islogkbdhooklib64')
else:
self.cpp_info.libs.append('islogkbdhooklib32')
# Linux / Windows common plugins.
self.cpp_info.libs.append('llacommon')
self.cpp_info.libs.append('logicalaccess-cryptolib')
self.cpp_info.libs.append('cps3cards')
self.cpp_info.libs.append('deisterreaders')
self.cpp_info.libs.append('desfirecards')
self.cpp_info.libs.append('elatecreaders')
self.cpp_info.libs.append('em4102cards')
self.cpp_info.libs.append('em4135cards')
self.cpp_info.libs.append('felicacards')
self.cpp_info.libs.append('generictagcards')
self.cpp_info.libs.append('gunneboreaders')
self.cpp_info.libs.append('icode1cards')
self.cpp_info.libs.append('icode2cards')
self.cpp_info.libs.append('indalacards')
self.cpp_info.libs.append('infineonmydcards')
self.cpp_info.libs.append('iso15693cards')
self.cpp_info.libs.append('iso7816cards')
self.cpp_info.libs.append('iso7816readers')
self.cpp_info.libs.append('legicprimecards')
if self.options.LLA_BUILD_LIBUSB:
self.cpp_info.libs.append('libusbreaders')
self.cpp_info.libs.append('logicalaccess')
self.cpp_info.libs.append('mifarecards')
self.cpp_info.libs.append('mifarepluscards')
self.cpp_info.libs.append('mifareultralightcards')
self.cpp_info.libs.append('ok5553readers')
self.cpp_info.libs.append('osdpreaders')
self.cpp_info.libs.append('pcscreaders')
self.cpp_info.libs.append('proxcards')
self.cpp_info.libs.append('proxlitecards')
self.cpp_info.libs.append('samavcards')
self.cpp_info.libs.append('seoscards')
self.cpp_info.libs.append('smartframecards')
self.cpp_info.libs.append('stidstrreaders')
self.cpp_info.libs.append('stmlri512cards')
self.cpp_info.libs.append('tagitcards')
self.cpp_info.libs.append('topazcards')
self.cpp_info.libs.append('twiccards')
self.cpp_info.libs.append('epasscards')
self.cpp_info.libs.append('yubikeycards')
def package_id(self):
self.info.requires["boost"].full_package_mode()
self.info.requires["openssl"].full_package_mode()