-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
100 lines (79 loc) · 3.4 KB
/
Copy pathCMakeLists.txt
File metadata and controls
100 lines (79 loc) · 3.4 KB
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
#***********************************************************
#***********************************************************
cmake_minimum_required(VERSION 3.16.0)
project(crosscache)
#***********************************************************
#***********************************************************
add_definitions(-D__LINUX_USR__)
add_definitions(-D__USE_GNU)
add_definitions(-D__POSIX_SOURCE)
add_definitions(-D_GNU_SOURCE)
add_definitions(-D_FILE_OFFSET_BITS=64)
#***********************************************************
#***********************************************************
include(TestBigEndian)
TEST_BIG_ENDIAN(BIGENDIAN)
if (${BIGENDIAN})
message(">>> Big Endian")
add_definitions(-D_CMAKE_BIGENDIAN)
else()
message(">>> Little Endian")
endif(${BIGENDIAN})
#***********************************************************
#***********************************************************
EXECUTE_PROCESS(COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCH)
if (${ARCH} STREQUAL "x86_64" OR ${ARCH} STREQUAL "aarch64")
message(STATUS "Architecture: ${ARCH}")
else()
message(STATUS "Invalid Architecture: ${ARCH}")
return()
endif()
#***********************************************************
#***********************************************************
set(BASE_FLAGS "-g -Wall -Werror -fno-strict-overflow -rdynamic")
set(SP_C_FLAGS "-std=gnu99")
set(SP_C++_FLAGS "-std=c++17")
set(SP_RELEASE_FLAGS "-O2")
set(SP_DEBUG_FLAGS "-O0")
set(SEC_REQ_FLAGS "-fstack-protector-all -fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack")
set(SEC_SUG_BASE_FLAGS "-Wformat=2")
set(SEC_SUG_SP_C_FLAGS "-Wshadow")
set(C_FLAGS "${BASE_FLAGS} ${SP_C_FLAGS}")
set(C++_FLAGS "${BASE_FLAGS} ${SP_C++_FLAGS}")
set(SEC_C_FLAGS "${SEC_REQ_FLAGS} ${SEC_SUG_BASE_FLAGS} ${SEC_SUG_SP_C_FLAGS}")
set(SEC_C++_FLAGS "${SEC_REQ_FLAGS} ${SEC_SUG_BASE_FLAGS}")
set(DEPC_FLAGS "-Wno-error=deprecated-declarations -Wno-deprecated-declarations")
if(CMAKE_BUILD_TYPE MATCHES "Release")
message(">>> Release Mode")
set(CMAKE_C_FLAGS "${C_FLAGS} ${SP_RELEASE_FLAGS} ${SEC_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${C++_FLAGS} ${SP_RELEASE_FLAGS} ${SEC_C++_FLAGS} ${DEPC_FLAGS}")
else()
message(">>> Debug Mode")
add_definitions(-D_DEBUG)
set(CMAKE_C_FLAGS "${C_FLAGS} ${SP_DEBUG_FLAGS} ${SEC_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${C++_FLAGS} ${SP_DEBUG_FLAGS} ${SEC_C++_FLAGS} ${DEPC_FLAGS}")
set(COVERAGE_FLAGS "-coverage")
set(COVERAGE_LINK "gcov")
endif()
message(STATUS ">>> Source Dir: " ${PROJECT_SOURCE_DIR})
message(STATUS ">>> Binary Dir: " ${PROJECT_BINARY_DIR})
message(STATUS ">>> C_FLAGS : " ${CMAKE_C_FLAGS})
message(STATUS ">>> CXX_FLAGS : " ${CMAKE_CXX_FLAGS})
#***********************************************************
#***********************************************************
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
#***********************************************************
#***********************************************************
if (DEFINED THIRD_PARTY)
message(">>> third_party : ${THIRD_PARTY}")
else()
set(THIRD_PARTY ${PROJECT_SOURCE_DIR}/lib)
endif()
set(INFRA_DIR ${PROJECT_SOURCE_DIR}/infrastructure)
set(SECUREC_DIR ${THIRD_PARTY}/securec)
set(ZLOG_DIR ${THIRD_PARTY}/zlog)
set(JSONCPP_DIR ${THIRD_PARTY}/jsoncpp)
#***********************************************************
#***********************************************************
add_subdirectory(infrastructure)
add_subdirectory(src)