11set (CMAKE_LEGACY_CYGWIN_WIN32 0)
2- cmake_minimum_required (VERSION 2.8.12 )
2+ cmake_minimum_required (VERSION 3.0 )
33if (POLICY CMP0042)
44 cmake_policy (SET CMP0042 NEW) # use MACOSX_RPATH
55endif ()
6- project (cpprest)
6+ if (UNIX )
7+ project (cpprest C CXX)
8+ else ()
9+ project (cpprest CXX)
10+ endif ()
711
812enable_testing ()
913
1014set (WERROR ON CACHE BOOL "Treat Warnings as Errors." )
1115set (CPPREST_EXCLUDE_WEBSOCKETS OFF CACHE BOOL "Exclude websockets functionality." )
1216set (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." )
1518set (CPPREST_INSTALL_HEADERS ON CACHE BOOL "Install header files." )
19+ set (CPPREST_INSTALL ON CACHE BOOL "Add install commands." )
1620
1721if (IOS OR ANDROID)
1822 set (BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libraries" )
@@ -111,7 +115,7 @@ elseif(ANDROID)
111115 )
112116elseif (UNIX ) # This includes OSX
113117elseif (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 )
115119
116120 if (NOT BUILD_SHARED_LIBS )
117121 # This causes cmake to not link the test libraries separately, but instead hold onto their object files.
@@ -120,7 +124,7 @@ elseif(WIN32)
120124 else ()
121125 set (Casablanca_DEFINITIONS "" CACHE INTERNAL "Definitions for consume casablanca library" )
122126 endif ()
123- add_definitions (${Casablanca_DEFINITIONS} -D_WINSOCK_DEPRECATED_NO_WARNINGS -DWIN32 )
127+ add_definitions (${Casablanca_DEFINITIONS} -D_WINSOCK_DEPRECATED_NO_WARNINGS)
124128else ()
125129 message (FATAL_ERROR "-- Unsupported Build Platform." )
126130endif ()
@@ -132,6 +136,11 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR IOS)
132136 if (ANDROID)
133137 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-pedantic" )
134138 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" )
135144 else ()
136145 set (WARNINGS -Wall -Wextra -Wcast-qual -Wconversion -Wformat=2 -Winit-self -Winvalid-pch -Wmissing-format-attribute -Wmissing-include -dirs -Wpacked -Wredundant-decls)
137146 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)
172181
173182# These settings can be used by the test targets
174183set (Casablanca_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} /include )
175- set (Casablanca_SYSTEM_INCLUDE_DIRS)
176184set (Casablanca_LIBRARY cpprest)
177185set (Casablanca_LIBRARIES cpprest)
178186get_directory_property (PARENT_DIR PARENT_DIRECTORY )
179187if (NOT PARENT_DIR STREQUAL "" )
180188 set (Casablanca_LIBRARIES ${Casablanca_LIBRARIES} PARENT_SCOPE)
181189endif ()
182190
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-
187191# Finally, the tests all use the same style declaration to build themselves, so we use a function
188192function (add_casablanca_test NAME SOURCES_VAR)
189193 add_library (${NAME} ${TEST_LIBRARY_TARGET_TYPE} ${${SOURCES_VAR} })
190194 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 ()
192201 target_link_libraries (${NAME}
193202 httptest_utilities
194203 common_utilities
195204 unittestpp
196205 cpprest
197206 ${ANDROID_STL_FLAGS}
198- )
207+ )
199208 if (BUILD_SHARED_LIBS )
200209 add_test (NAME ${NAME}
201210 WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
202211 COMMAND test_runner $<TARGET_FILE_NAME:${NAME} >
203- )
212+ )
204213 endif ()
205214 endif ()
206215endfunction ()
0 commit comments