-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathCMakeLists.txt
180 lines (156 loc) · 5.15 KB
/
CMakeLists.txt
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
cmake_minimum_required(VERSION 2.8)
project(tls_sig_api)
SET(CMAKE_CXX_FLAGS "-std=c++0x")
if(UNIX)
find_package(ZLIB REQUIRED)
find_package(OpenSSL REQUIRED)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
# 类 unix 系统使用 openssl 进行加解密
add_definitions(-DUSE_OPENSSL)
endif()
if(MSVC)
option(BUILD_STATIC_VCRUNTIME "static link vc runtime" OFF)
set(CompilerFlags
CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_RELEASE
CMAKE_C_FLAGS
CMAKE_C_FLAGS_DEBUG
CMAKE_C_FLAGS_RELEASE
)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING /D_CRT_SECURE_NO_WARNINGS")
add_definitions(/wd"4819")
foreach(CompilerFlag ${CompilerFlags})
if (BUILD_STATIC_VCRUNTIME)
string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
else()
string(REPLACE "/MT" "/MD" ${CompilerFlag} "${${CompilerFlag}}")
endif()
endforeach()
endif()
add_definitions(-DFMT_HEADER_ONLY -DRAPIDJSON_HAS_STDSTRING=1)
if(UNIX)
include_directories(
third/rapidjson/include
third/fmt
${ZLIB_INCLUDE_DIRS}
${OPENSSL_INCLUDE_DIR}
src
)
option(BUILD_SHARED "build tlsignature shared library" OFF)
if(BUILD_SHARED)
add_library(tlsignature SHARED src/tls_signature.cpp src/opensslthreadlock.cpp)
else()
add_library(tlsignature src/tls_signature.cpp src/opensslthreadlock.cpp)
endif()
target_link_libraries(tlsignature
-lz
${OPENSSL_CRYPTO_LIBRARIES}
)
add_executable(tls_licence_tools src/tls_licence_tools.cpp)
target_link_libraries(tls_licence_tools
tlsignature
-lz
${OPENSSL_CRYPTO_LIBRARIES}
)
add_executable(signature src/signature.cpp)
target_link_libraries(signature
tlsignature
-lz
${OPENSSL_CRYPTO_LIBRARIES}
)
add_library(tlsignaturecs SHARED src/sigcheck.cpp)
target_link_libraries(tlsignaturecs
tlsignature
-lz
${OPENSSL_CRYPTO_LIBRARIES}
)
endif()
if(MSVC)
include_directories(
third/rapidjson/include
third/fmt
third/mbedtls/include
# Windows 上 zlib include 路径需要手动指定
third/zlib-1.2.11
src
)
option(BUILD_SHARED "build tlsignature shared library" OFF)
if(BUILD_SHARED)
add_library(tlsignature SHARED src/tls_signature.cpp)
else()
add_library(tlsignature src/tls_signature.cpp)
endif()
if(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
set(ZLIB_NAME "third/zlib-1.2.11/Debug/zlibstaticd")
set(MBEDTLS_NAME "third/mbedtls/library/Debug/mbedcrypto")
endif()
if(${CMAKE_BUILD_TYPE} STREQUAL "Release")
set(ZLIB_NAME "third/zlib-1.2.11/Release/zlibstatic")
set(MBEDTLS_NAME "third/mbedtls/library/Release/mbedcrypto")
endif()
target_link_libraries(tlsignature
${ZLIB_NAME}
${MBEDTLS_NAME}
)
add_executable(tls_licence_tools src/tls_licence_tools.cpp)
target_link_libraries(tls_licence_tools
tlsignature
${ZLIB_NAME}
${MBEDTLS_NAME}
)
add_executable(signature src/signature.cpp)
target_link_libraries(signature
tlsignature
${ZLIB_NAME}
${MBEDTLS_NAME}
)
add_library(tlsignaturecs SHARED src/sigcheck.cpp)
target_link_libraries(tlsignaturecs
tlsignature
${ZLIB_NAME}
${MBEDTLS_NAME}
)
endif()
option(BUILD_JNI "build jni dynamic library" OFF)
if(BUILD_JNI)
find_package(JNI REQUIRED)
include_directories(${JNI_INCLUDE_DIRS})
add_library(jnisigcheck SHARED src/com_tls_sigcheck_tls_sigcheck.cpp)
target_link_libraries(jnisigcheck tlsignature)
install(TARGETS jnisigcheck
PERMISSIONS WORLD_READ WORLD_EXECUTE OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE
DESTINATION lib)
endif()
option(BUILD_JAVA "build java jni api" OFF)
if(BUILD_JAVA)
set(CMAKE_JAVA_TARGET_OUTPUT_DIR ${CMAKE_INSTALL_PREFIX}/lib)
find_package(Java REQUIRED COMPONENTS Development)
include(UseJava)
set(CMAKE_JAVA_COMPILE_FLAGS ${CMAKE_JAVA_COMPILE_FLAGS} -encoding UTF-8)
add_jar(tls_sigcheck java/com/tls/sigcheck/tls_sigcheck.java)
endif()
# option(BUILD_EXAMPLE "build example" OFF)
# if(BUILD_EXAMPLE)
# add_subdirectory(example)
# endif()
option(BUILD_TEST "build testcase" OFF)
if(BUILD_TEST)
enable_testing()
find_package(GTest REQUIRED)
include_directories(${PROJECT_SOURCE_DIR}/src)
add_executable(unit_tests test/unit_test.cpp)
target_link_libraries(unit_tests PRIVATE GTest::GTest GTest::Main
ZLIB::ZLIB
OpenSSL::Crypto)
add_test(unit_tests unit_tests)
endif()
install(TARGETS tlsignature
PERMISSIONS WORLD_READ OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE
DESTINATION lib)
install(TARGETS signature tlsignature
PERMISSIONS WORLD_READ WORLD_EXECUTE OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE
DESTINATION bin)
install(FILES src/tls_signature.h src/sigcheck.h
PERMISSIONS WORLD_READ OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE
DESTINATION include)