@@ -138,21 +138,25 @@ endmacro()
138138# Arguments:
139139# prefix - prefix of global variable names that contain specific
140140# info on building the library (e.g. CASS or DSE).
141- # Input: PROJECT_LIB_NAME, PROJECT_VERSION_STRING, PROJECT_VERSION_MAJOR,
142- # PROJECT_CXX_LINKER_FLAGS, *_DRIVER_CXX_FLAGS
143- # Output: CASS_INCLUDES and CASS_LIBS
141+ # Input: PROJECT_LIB_NAME, PROJECT_VERSION_STRING, PROJECT_VERSION_MAJOR
144142#------------------------
145143macro (CassConfigureShared prefix )
146144 target_link_libraries (${PROJECT_LIB_NAME} ${${prefix}_LIBS} )
147145 set_target_properties (${PROJECT_LIB_NAME} PROPERTIES OUTPUT_NAME ${PROJECT_LIB_NAME} )
148146 set_target_properties (${PROJECT_LIB_NAME} PROPERTIES VERSION ${PROJECT_VERSION_STRING} SOVERSION ${PROJECT_VERSION_MAJOR} )
149- set_target_properties (${PROJECT_LIB_NAME} PROPERTIES LINK_FLAGS "${PROJECT_CXX_LINKER_FLAGS} " )
150147 set_target_properties (${PROJECT_LIB_NAME} PROPERTIES
151148 COMPILE_PDB_NAME "${PROJECT_LIB_NAME} "
152149 COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} " )
153- set_property (
154- TARGET ${PROJECT_LIB_NAME}
155- APPEND PROPERTY COMPILE_FLAGS "${${prefix} _DRIVER_CXX_FLAGS} -DCASS_BUILDING" )
150+ set (STATIC_COMPILE_FLAGS "-D${prefix} _BUILDING" )
151+ if ("${prefix} " STREQUAL "DSE" )
152+ set (STATIC_COMPILE_FLAGS "${STATIC_COMPILE_FLAGS} -DCASS_BUILDING" )
153+ endif ()
154+ if ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "Clang" OR
155+ "${CMAKE_CXX_COMPILER_ID} " STREQUAL "GNU" )
156+ set_property (
157+ TARGET ${PROJECT_LIB_NAME}
158+ APPEND PROPERTY COMPILE_FLAGS "${STATIC_COMPILE_FLAGS} -Werror" )
159+ endif ()
156160endmacro ()
157161
158162#------------------------
@@ -164,20 +168,31 @@ endmacro()
164168# prefix - prefix of global variable names that contain specific
165169# info on building the library (e.g. CASS or DSE).
166170# Input: PROJECT_LIB_NAME_STATIC, PROJECT_VERSION_STRING, PROJECT_VERSION_MAJOR,
167- # PROJECT_CXX_LINKER_FLAGS, *_DRIVER_CXX_FLAGS
168- # Output: CASS_INCLUDES and CASS_LIBS
171+ # *_USE_STATIC_LIBS
169172#------------------------
170173macro (CassConfigureStatic prefix )
171174 target_link_libraries (${PROJECT_LIB_NAME_STATIC} ${${prefix}_LIBS} )
172175 set_target_properties (${PROJECT_LIB_NAME_STATIC} PROPERTIES OUTPUT_NAME ${PROJECT_LIB_NAME_STATIC} )
173176 set_target_properties (${PROJECT_LIB_NAME_STATIC} PROPERTIES VERSION ${PROJECT_VERSION_STRING} SOVERSION ${PROJECT_VERSION_MAJOR} )
174- set_target_properties (${PROJECT_LIB_NAME_STATIC} PROPERTIES LINK_FLAGS "${PROJECT_CXX_LINKER_FLAGS} " )
175177 set_target_properties (${PROJECT_LIB_NAME_STATIC} PROPERTIES
176178 COMPILE_PDB_NAME "${PROJECT_LIB_NAME_STATIC} "
177179 COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} " )
178- set_property (
179- TARGET ${PROJECT_LIB_NAME_STATIC}
180- APPEND PROPERTY COMPILE_FLAGS "${${prefix} _DRIVER_CXX_FLAGS} -DCASS_STATIC" )
180+ set (STATIC_COMPILE_FLAGS "-D${prefix} _STATIC" )
181+ if ("${prefix} " STREQUAL "DSE" )
182+ set (STATIC_COMPILE_FLAGS "${STATIC_COMPILE_FLAGS} -DCASS_STATIC" )
183+ endif ()
184+ if ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "Clang" OR
185+ "${CMAKE_CXX_COMPILER_ID} " STREQUAL "GNU" )
186+ set_property (
187+ TARGET ${PROJECT_LIB_NAME_STATIC}
188+ APPEND PROPERTY COMPILE_FLAGS "${STATIC_COMPILE_FLAGS} -Werror" )
189+ endif ()
190+
191+ # Update the CXX flags to indicate the use of the static library
192+ if (${prefix} _USE_STATIC_LIBS)
193+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${STATIC_COMPILE_FLAGS} " )
194+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${STATIC_COMPILE_FLAGS} " )
195+ endif ()
181196endmacro ()
182197
183198#------------------------
@@ -694,8 +709,6 @@ endmacro()
694709#
695710# Input: CASS_USE_STD_ATOMIC, CASS_USE_BOOST_ATOMIC, CASS_MULTICORE_COMPILATION
696711# CASS_USE_STATIC_LIBS
697- # Output: CASS_USE_STD_ATOMIC, CASS_DRIVER_CXX_FLAGS, CASS_TEST_CXX_FLAGS,
698- # CASS_EXAMPLE_C_FLAGS
699712#------------------------
700713macro (CassSetCompilerFlags )
701714 # Force OLD style of implicitly dereferencing variables
@@ -826,10 +839,8 @@ macro(CassSetCompilerFlags)
826839 add_definitions (-D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING ) # Remove warnings for TR1 deprecation (Visual Studio 15 2017); caused by sparsehash
827840
828841 # Create the project, example, and test flags
829- set (CASS_DRIVER_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CASS_DRIVER_CXX_FLAGS} ${WARNING_COMPILER_FLAGS} " )
830- set (CASS_EXAMPLE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_COMPILER_FLAGS} " )
831- # Enable bigobj for large object files during compilation (Cassandra types integration test)
832- set (CASS_TEST_CXX_FLAGS "${CASS_DRIVER_CXX_FLAGS} ${WARNING_COMPILER_FLAGS} /bigobj" )
842+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_COMPILER_FLAGS} " )
843+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_COMPILER_FLAGS} " )
833844
834845 # Assign additional library requirements for Windows
835846 set (CASS_LIBS ${CASS_LIBS} iphlpapi psapi wsock32 crypt32 ws2_32 userenv)
@@ -846,19 +857,16 @@ macro(CassSetCompilerFlags)
846857 # OpenSSL is deprecated on later versions of Mac OS X. The long-term solution
847858 # is to provide a CommonCryto implementation.
848859 if (APPLE AND CASS_USE_OPENSSL)
849- set (CASS_DRIVER_CXX_FLAGS "${CASS_DRIVER_CXX_FLAGS} -Wno-deprecated-declarations" )
850- set (CASS_TEST_CXX_FLAGS "${CASS_TEST_CXX_FLAGS} -Wno-deprecated-declarations" )
860+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations" )
851861 endif ()
852862
853863 # Enable C++11 support to use std::atomic
854864 if (CASS_USE_STD_ATOMIC)
855- set (CASS_DRIVER_CXX_FLAGS "${CASS_DRIVER_CXX_FLAGS} -std=c++11" )
856- set (CASS_TEST_CXX_FLAGS "${CASS_TEST_CXX_FLAGS} -std=c++11" )
865+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )
857866 endif ()
858867
859- set (CASS_DRIVER_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CASS_DRIVER_CXX_FLAGS} ${WARNING_COMPILER_FLAGS} -Werror" )
860- set (CASS_TEST_CXX_FLAGS "${CASS_TEST_CXX_FLAGS} ${WARNING_COMPILER_FLAGS} " )
861- set (CASS_EXAMPLE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_COMPILER_FLAGS} " )
868+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_COMPILER_FLAGS} " )
869+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_COMPILER_FLAGS} " )
862870 elseif ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "Clang" )
863871 # Clang/Intel specific compiler options
864872 # I disabled long-long warning because boost generates about 50 such warnings
@@ -869,19 +877,16 @@ macro(CassSetCompilerFlags)
869877 # OpenSSL is deprecated on later versions of Mac OS X. The long-term solution
870878 # is to provide a CommonCryto implementation.
871879 if (APPLE AND CASS_USE_OPENSSL)
872- set (CASS_DRIVER_CXX_FLAGS "${CASS_DRIVER_CXX_FLAGS} -Wno-deprecated-declarations" )
873- set (CASS_TEST_CXX_FLAGS "${CASS_TEST_CXX_FLAGS} -Wno-deprecated-declarations" )
880+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations" )
874881 endif ()
875882
876883 # Enable C++11 support to use std::atomic
877884 if (CASS_USE_STD_ATOMIC)
878- set (CASS_DRIVER_CXX_FLAGS "${CASS_DRIVER_CXX_FLAGS} -std=c++11" )
879- set (CASS_TEST_CXX_FLAGS "${CASS_TEST_CXX_FLAGS} -std=c++11" )
885+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )
880886 endif ()
881887
882- set (CASS_DRIVER_CXX_FLAGS " ${CMAKE_CXX_FLAGS} ${CASS_DRIVER_CXX_FLAGS} ${WARNING_COMPILER_FLAGS} -Werror" )
883- set (CASS_TEST_CXX_FLAGS "${CASS_TEST_CXX_FLAGS} ${WARNING_COMPILER_FLAGS} " )
884- set (CASS_EXAMPLE_C_FLAGS "${CMAKE_C_FLAGS} -std=c89 ${WARNING_COMPILER_FLAGS} " )
888+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_COMPILER_FLAGS} " )
889+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_COMPILER_FLAGS} " )
885890 else ()
886891 message (FATAL_ERROR "Unsupported compiler: ${CMAKE_CXX_COMPILER_ID} " )
887892 endif ()
@@ -1001,14 +1006,14 @@ macro(CassConfigure)
10011006 else ()
10021007 check_symbol_exists (arc4random_buf "stdlib.h" HAVE_ARC4RANDOM )
10031008 endif ()
1009+
10041010 # Determine if sigpipe is available
10051011 check_symbol_exists (SO_NOSIGPIPE "sys/socket.h;sys/types.h" HAVE_NOSIGPIPE )
10061012 check_symbol_exists (sigtimedwait "signal.h" HAVE_SIGTIMEDWAIT )
10071013 if (NOT WIN32 AND NOT HAVE_NOSIGPIPE AND NOT HAVE_SIGTIMEDWAIT)
10081014 message (WARNING "Unable to handle SIGPIPE on your platform" )
10091015 endif ()
10101016
1011-
10121017 # Determine if hash is in the tr1 namespace
10131018 string (REPLACE "::" ";" HASH_NAMESPACE_LIST ${HASH_NAMESPACE} )
10141019 foreach (NAMESPACE ${HASH_NAMESPACE_LIST} )
@@ -1018,7 +1023,7 @@ macro(CassConfigure)
10181023 endforeach ()
10191024
10201025 # Check for GCC compiler builtins
1021- if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" )
1026+ if (NOT " ${ CMAKE_CXX_COMPILER_ID} " STREQUAL "MSVC" )
10221027 check_cxx_source_compiles ("int main() { return __builtin_bswap32(42); }" HAVE_BUILTIN_BSWAP32 )
10231028 check_cxx_source_compiles ("int main() { return __builtin_bswap64(42); }" HAVE_BUILTIN_BSWAP64 )
10241029 endif ()
0 commit comments