1
1
set (CMAKE_LEGACY_CYGWIN_WIN32 0)
2
- cmake_minimum_required (VERSION 2.8.12 )
2
+ cmake_minimum_required (VERSION 3.0 )
3
3
if (POLICY CMP0042)
4
4
cmake_policy (SET CMP0042 NEW) # use MACOSX_RPATH
5
5
endif ()
6
- project (cpprest)
6
+ if (UNIX )
7
+ project (cpprest C CXX)
8
+ else ()
9
+ project (cpprest CXX)
10
+ endif ()
7
11
8
12
enable_testing ()
9
13
10
14
set (WERROR ON CACHE BOOL "Treat Warnings as Errors." )
11
15
set (CPPREST_EXCLUDE_WEBSOCKETS OFF CACHE BOOL "Exclude websockets functionality." )
12
16
set (CPPREST_EXCLUDE_COMPRESSION OFF CACHE BOOL "Exclude compression functionality." )
13
- set (CPPREST_EXPORT_DIR lib/cpprest CACHE STRING "Directory to install CMake config files." )
14
- set (CPPREST_EXPORT_NAME cpprest-config CACHE STRING "Name for CMake config file." )
17
+ set (CPPREST_EXPORT_DIR lib/cpprestsdk CACHE STRING "Directory to install CMake config files." )
15
18
set (CPPREST_INSTALL_HEADERS ON CACHE BOOL "Install header files." )
19
+ set (CPPREST_INSTALL ON CACHE BOOL "Add install commands." )
16
20
17
21
if (IOS OR ANDROID)
18
22
set (BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libraries" )
@@ -111,7 +115,7 @@ elseif(ANDROID)
111
115
)
112
116
elseif (UNIX ) # This includes OSX
113
117
elseif (WIN32 )
114
- add_definitions (-DUNICODE -D_UNICODE -D_WIN32_WINNT=0x0600)
118
+ add_definitions (-DUNICODE -D_UNICODE -D_WIN32_WINNT=0x0600 -DWIN32 -D_SCL_SECURE_NO_WARNINGS )
115
119
116
120
if (NOT BUILD_SHARED_LIBS )
117
121
# This causes cmake to not link the test libraries separately, but instead hold onto their object files.
@@ -120,7 +124,7 @@ elseif(WIN32)
120
124
else ()
121
125
set (Casablanca_DEFINITIONS "" CACHE INTERNAL "Definitions for consume casablanca library" )
122
126
endif ()
123
- add_definitions (${Casablanca_DEFINITIONS} -D_WINSOCK_DEPRECATED_NO_WARNINGS -DWIN32 )
127
+ add_definitions (${Casablanca_DEFINITIONS} -D_WINSOCK_DEPRECATED_NO_WARNINGS)
124
128
else ()
125
129
message (FATAL_ERROR "-- Unsupported Build Platform." )
126
130
endif ()
@@ -132,6 +136,11 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR IOS)
132
136
if (ANDROID)
133
137
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-pedantic" )
134
138
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-attributes -Wno-pointer-arith" )
139
+ elseif (CMAKE_SYSTEM_NAME MATCHES "Linux" )
140
+ set (WARNINGS -Wall -Wextra -Wcast-qual -Wconversion -Wformat=2 -Winit-self -Winvalid-pch -Wmissing-format-attribute -Wmissing-include -dirs -Wpacked -Wredundant-decls)
141
+ set (LINUX_SUPPRESSIONS -Wno-overloaded-virtual -Wno-sign-conversion -Wno-deprecated -Wno-unknown-pragmas -Wno-reorder -Wno-char-subscripts -Wno-switch -Wno-unused-parameter -Wno-unused-variable -Wno-deprecated -Wno-unused-value -Wno-unknown-warning-option -Wno-return-type -c-linkage -Wno-unused-function -Wno-sign-compare -Wno-shorten-64-to-32 -Wno-reorder -Wno-unused-local-typedefs)
142
+ set (WARNINGS ${WARNINGS} ${LINUX_SUPPRESSIONS} )
143
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-return-type-c-linkage -Wno-unneeded-internal-declaration" )
135
144
else ()
136
145
set (WARNINGS -Wall -Wextra -Wcast-qual -Wconversion -Wformat=2 -Winit-self -Winvalid-pch -Wmissing-format-attribute -Wmissing-include -dirs -Wpacked -Wredundant-decls)
137
146
set (OSX_SUPPRESSIONS -Wno-overloaded-virtual -Wno-sign-conversion -Wno-deprecated -Wno-unknown-pragmas -Wno-reorder -Wno-char-subscripts -Wno-switch -Wno-unused-parameter -Wno-unused-variable -Wno-deprecated -Wno-unused-value -Wno-unknown-warning-option -Wno-return-type -c-linkage -Wno-unused-function -Wno-sign-compare -Wno-shorten-64-to-32 -Wno-reorder -Wno-unused-local-typedefs)
@@ -172,35 +181,35 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/Binaries)
172
181
173
182
# These settings can be used by the test targets
174
183
set (Casablanca_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} /include )
175
- set (Casablanca_SYSTEM_INCLUDE_DIRS)
176
184
set (Casablanca_LIBRARY cpprest)
177
185
set (Casablanca_LIBRARIES cpprest)
178
186
get_directory_property (PARENT_DIR PARENT_DIRECTORY )
179
187
if (NOT PARENT_DIR STREQUAL "" )
180
188
set (Casablanca_LIBRARIES ${Casablanca_LIBRARIES} PARENT_SCOPE)
181
189
endif ()
182
190
183
- # Everything in the project needs access to the casablanca include directories
184
- include_directories ( ${Casablanca_INCLUDE_DIRS} )
185
- include_directories (SYSTEM ${Casablanca_SYSTEM_INCLUDE_DIRS} )
186
-
187
191
# Finally, the tests all use the same style declaration to build themselves, so we use a function
188
192
function (add_casablanca_test NAME SOURCES_VAR)
189
193
add_library (${NAME} ${TEST_LIBRARY_TARGET_TYPE} ${${SOURCES_VAR} })
190
194
message ("-- Added test library ${NAME} " )
191
- if (NOT TEST_LIBRARY_TARGET_TYPE STREQUAL "OBJECT" )
195
+ if (TEST_LIBRARY_TARGET_TYPE STREQUAL "OBJECT" )
196
+ foreach (_dep httptest_utilities common_utilities unittestpp cpprest)
197
+ target_include_directories (${NAME} PRIVATE $<TARGET_PROPERTY:${_dep} ,INTERFACE_INCLUDE_DIRECTORIES >)
198
+ target_compile_definitions (${NAME} PRIVATE $<TARGET_PROPERTY:${_dep} ,INTERFACE_COMPILE_DEFINITIONS >)
199
+ endforeach ()
200
+ else ()
192
201
target_link_libraries (${NAME}
193
202
httptest_utilities
194
203
common_utilities
195
204
unittestpp
196
205
cpprest
197
206
${ANDROID_STL_FLAGS}
198
- )
207
+ )
199
208
if (BUILD_SHARED_LIBS )
200
209
add_test (NAME ${NAME}
201
210
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
202
211
COMMAND test_runner $<TARGET_FILE_NAME:${NAME} >
203
- )
212
+ )
204
213
endif ()
205
214
endif ()
206
215
endfunction ()
0 commit comments