]> git.proxmox.com Git - ceph.git/blob - ceph/src/Beast/CMakeLists.txt
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / Beast / CMakeLists.txt
1 # Part of Beast
2
3 cmake_minimum_required (VERSION 3.5.2)
4
5 project (Beast)
6
7 set_property (GLOBAL PROPERTY USE_FOLDERS ON)
8
9 if (MSVC)
10 add_definitions (-D_WIN32_WINNT=0x0601)
11 add_definitions (-D_SCL_SECURE_NO_WARNINGS=1)
12 add_definitions (-D_CRT_SECURE_NO_WARNINGS=1)
13
14 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4100 /wd4244 /MP /W4 /bigobj")
15 set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Ob2 /Oi /Ot /GL")
16 set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Oi /Ot")
17
18 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
19 set (CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG")
20
21 # for RelWithDebInfo builds, disable incremental linking
22 # since CMake sets it ON by default for that build type and it
23 # causes warnings
24 #
25 string (REPLACE "/INCREMENTAL" "/INCREMENTAL:NO" replacement_flags
26 ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO})
27 set (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO ${replacement_flags})
28
29 else()
30 set(THREADS_PREFER_PTHREAD_FLAG ON)
31 find_package(Threads)
32
33 set(CMAKE_CXX_FLAGS
34 "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -Wpedantic -Wno-unused-parameter")
35 endif()
36
37 #-------------------------------------------------------------------------------
38 #
39 # Boost
40 #
41
42 option (Boost_USE_STATIC_LIBS "Use static libraries for boost" ON)
43
44 set (Boost_NO_SYSTEM_PATHS ON)
45 set (Boost_USE_MULTITHREADED ON)
46 add_definitions (-DBOOST_COROUTINES_NO_DEPRECATION_WARNING=1) # for asio
47
48 unset (Boost_INCLUDE_DIR CACHE)
49 unset (Boost_LIBRARY_DIRS CACHE)
50 if (MSVC)
51 find_package (Boost REQUIRED)
52 else()
53 find_package (Boost REQUIRED COMPONENTS
54 coroutine
55 context
56 filesystem
57 program_options
58 system
59 thread
60 )
61 link_libraries (${Boost_LIBRARIES})
62 endif()
63
64 include_directories (SYSTEM ${Boost_INCLUDE_DIRS})
65
66 if (MINGW)
67 link_libraries(ws2_32 mswsock)
68 endif()
69
70 #-------------------------------------------------------------------------------
71 #
72 # OpenSSL
73 #
74
75 if (APPLE AND NOT DEFINED ENV{OPENSSL_ROOT_DIR})
76 find_program(HOMEBREW brew)
77 if (NOT HOMEBREW STREQUAL "HOMEBREW-NOTFOUND")
78 execute_process(COMMAND brew --prefix openssl
79 OUTPUT_VARIABLE OPENSSL_ROOT_DIR
80 OUTPUT_STRIP_TRAILING_WHITESPACE)
81 endif()
82 endif()
83
84 find_package(OpenSSL)
85
86 #
87 #-------------------------------------------------------------------------------
88
89 function(DoGroupSources curdir rootdir folder)
90 file(GLOB children RELATIVE ${PROJECT_SOURCE_DIR}/${curdir} ${PROJECT_SOURCE_DIR}/${curdir}/*)
91 foreach(child ${children})
92 if(IS_DIRECTORY ${PROJECT_SOURCE_DIR}/${curdir}/${child})
93 DoGroupSources(${curdir}/${child} ${rootdir} ${folder})
94 elseif(${child} STREQUAL "CMakeLists.txt")
95 source_group("" FILES ${PROJECT_SOURCE_DIR}/${curdir}/${child})
96 else()
97 string(REGEX REPLACE ^${rootdir} ${folder} groupname ${curdir})
98 string(REPLACE "/" "\\" groupname ${groupname})
99 source_group(${groupname} FILES ${PROJECT_SOURCE_DIR}/${curdir}/${child})
100 endif()
101 endforeach()
102 endfunction()
103
104 function(GroupSources curdir folder)
105 DoGroupSources(${curdir} ${curdir} ${folder})
106 endfunction()
107
108 #-------------------------------------------------------------------------------
109
110 if ("${VARIANT}" STREQUAL "coverage")
111 set(CMAKE_CXX_FLAGS
112 "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
113 set(CMAKE_BUILD_TYPE RELWITHDEBINFO)
114 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov")
115 elseif ("${VARIANT}" STREQUAL "asan")
116 set(CMAKE_CXX_FLAGS
117 "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
118 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
119 set(CMAKE_BUILD_TYPE RELWITHDEBINFO)
120 elseif ("${VARIANT}" STREQUAL "usan")
121 set(CMAKE_CXX_FLAGS
122 "${CMAKE_CXX_FLAGS} -fsanitize=undefined -fno-omit-frame-pointer")
123 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined")
124 set(CMAKE_BUILD_TYPE RELWITHDEBINFO)
125 elseif ("${VARIANT}" STREQUAL "debug")
126 set(CMAKE_BUILD_TYPE DEBUG)
127 elseif ("${VARIANT}" STREQUAL "release")
128 set(CMAKE_BUILD_TYPE RELEASE)
129 endif()
130
131 include_directories (extras)
132 include_directories (include)
133
134 set(ZLIB_SOURCES
135 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/crc32.h
136 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/deflate.h
137 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/inffast.h
138 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/inffixed.h
139 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/inflate.h
140 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/inftrees.h
141 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/trees.h
142 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/zlib.h
143 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/zutil.h
144 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/adler32.c
145 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/compress.c
146 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/crc32.c
147 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/deflate.c
148 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/infback.c
149 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/inffast.c
150 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/inflate.c
151 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/inftrees.c
152 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/trees.c
153 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/uncompr.c
154 ${PROJECT_SOURCE_DIR}/test/zlib/zlib-1.2.8/zutil.c
155 )
156
157 file(GLOB_RECURSE BEAST_INCLUDES
158 ${PROJECT_SOURCE_DIR}/include/beast/*.hpp
159 ${PROJECT_SOURCE_DIR}/include/beast/*.ipp
160 )
161
162 file(GLOB_RECURSE EXTRAS_INCLUDES
163 ${PROJECT_SOURCE_DIR}/extras/beast/*.hpp
164 ${PROJECT_SOURCE_DIR}/extras/beast/*.ipp
165 )
166
167 add_subdirectory (examples)
168 if (NOT OPENSSL_FOUND)
169 message("OpenSSL not found. Not building examples/ssl")
170 else()
171 add_subdirectory (examples/ssl)
172 endif()
173
174 add_subdirectory (test)
175 add_subdirectory (test/core)
176 add_subdirectory (test/http)
177 add_subdirectory (test/websocket)
178 add_subdirectory (test/zlib)