-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
146 lines (125 loc) · 4.41 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
#Licensed under the MIT license. See LICENSE file in the project root for full license information.
cmake_minimum_required(VERSION 3.18)
#Use solution folders.
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
project(patchcords)
option(patchcords_ut "Include unittest in build" OFF)
option(patchcords_int "Include integration test in build" OFF)
option(patchcords_samples "Include samples in build" OFF)
option(enable_tls_lib "Turn on the TLS libraries" OFF)
if (CMAKE_BUILD_TYPE MATCHES "Debug" AND NOT WIN32)
set(DEBUG_CONFIG ON)
set(ENABLE_COVERAGE ON)
else()
set(ENABLE_COVERAGE OFF)
set(DEBUG_CONFIG OFF)
endif()
include("${CMAKE_CURRENT_LIST_DIR}/cmake_configs/proj_config.cmake")
set_default_build_options()
# Add dependencies
if ((NOT TARGET c_build_tools) AND (EXISTS ${CMAKE_CURRENT_LIST_DIR}/deps/c-build-tools/CMakeLists.txt))
set(run_traceability OFF)
set(build_traceability_tool OFF)
add_subdirectory(deps/c-build-tools)
endif()
if ((NOT TARGET macro_utils_c) AND (EXISTS ${CMAKE_CURRENT_LIST_DIR}/deps/macro-utils-c/CMakeLists.txt))
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/deps/macro-utils-c)
include_directories(${MACRO_UTILS_INC_FOLDER})
endif()
if ((NOT TARGET c_logging) AND (EXISTS ${CMAKE_CURRENT_LIST_DIR}/deps/c-logging/CMakeLists.txt))
add_subdirectory(deps/c-logging)
include_directories(deps/c-logging/inc)
endif()
if (NOT TARGET umock_c)
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/deps/umock-c)
include_directories(${UMOCK_C_INC_FOLDER})
endif()
if (NOT TARGET lib-util-c)
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/deps/lib-util-c)
include_directories(${CMAKE_CURRENT_LIST_DIR}/deps/lib-util-c/inc/)
endif()
include_directories(${CMAKE_CURRENT_LIST_DIR}/inc)
#these are the C source files
set(source_c_files
${CMAKE_CURRENT_LIST_DIR}/src/socket_debug_shim.c
${CMAKE_CURRENT_LIST_DIR}/src/patchcord_client.c
)
#these are the C headers
set(source_h_files
${CMAKE_CURRENT_LIST_DIR}/inc/patchcords/socket_debug_shim.h
${CMAKE_CURRENT_LIST_DIR}/inc/patchcords/patchcord_client.h
${CMAKE_CURRENT_LIST_DIR}/inc/patchcords/version_patchcord.h
)
#this is the product (a library)
add_library(patchcords ${source_c_files} ${source_h_files})
addCompileSettings(patchcords)
compileTargetAsC99(patchcords)
# Berkley socket library
set(socket_h_files
./inc/patchcords/cord_socket_client.h
)
set(socket_lib)
set(dependent_libs)
if (WIN32)
set(socket_c_files
./src/cord_client_winsock.c
)
set(socket_h_files
${socket_h_files}
./inc/patchcords/version_winsock.h
)
set(socket_lib cord_winsock)
set(dependent_libs ws2_32)
endif()
if (UNIX)
set(socket_c_files
./src/cord_client_berkley.c
)
set(socket_h_files
${socket_h_files}
./inc/patchcords/version_berkley.h
)
set(socket_lib cord_berkley)
endif()
add_library(${socket_lib} ${socket_c_files} ${socket_h_files})
target_link_libraries(${socket_lib} patchcords lib-util-c ${dependent_libs})
addCompileSettings(${socket_lib})
compileTargetAsC99(${socket_lib})
if (${enable_tls_lib})
if (WIN32)
set(tls_c_files
./src/cord_client_schannel.c
)
set(socket_lib cord_schannel)
set(dependent_libs crypt32 ws2_32 secur32 advapi32 ncrypt)
else()
set(tls_c_files
./src/cord_client_openssl.c
)
set(socket_lib cord_openssl)
set(dependent_libs ssl crypto)
endif()
set(tls_h_files
./inc/patchcords/cord_tls_client.h
)
add_library(${socket_lib} ${tls_c_files} ${tls_h_files})
target_link_libraries(${socket_lib} patchcords lib-util-c ${dependent_libs})
endif()
if (${patchcords_ut})
enable_testing()
include (CTest)
include("${CMAKE_CURRENT_LIST_DIR}/cmake_configs/proj_testing.cmake")
enable_coverage_testing()
if ((NOT TARGET ctest) AND (EXISTS ${CMAKE_CURRENT_LIST_DIR}/deps/ctest/CMakeLists.txt))
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/deps/ctest)
include_directories(${CTEST_INC_FOLDER})
endif()
if ((NOT TARGET testrunnerswitcher) AND (EXISTS ${CMAKE_CURRENT_LIST_DIR}/deps/c-testrunnerswitcher/CMakeLists.txt))
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/deps/c-testrunnerswitcher)
include_directories(${TESTRUNNERSWITCHER_INC_FOLDER})
endif()
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tests)
endif()
if (${patchcords_samples})
add_subdirectory(samples)
endif()