@ -261,17 +261,10 @@ option(STACK_TRACE "Install a hook that dumps stack on exception" ${DEFAULT_STAC
if ( STACK_TRACE )
message ( STATUS "Stack trace on exception enabled" )
# D o n ' t s e t C M A K E _ * _ F L A G S d i r e c t l y o r a d d _ d e f i n i t i o n s , b e c a u s e t h i s f l a g m u s t
# n o t b e s e t f o r t e s t s targets ( TODO: per-target logic into nested CMakeLists )
set ( STACK_TRACE_C_FLAG "-DSTACK_TRACE" )
if ( STATIC )
set ( STACK_TRACE_LINK_FLAG "-Wl,--wrap=__cxa_throw" )
endif ( )
else ( )
message ( STATUS "Stack trace on exception disabled" )
endif ( )
if ( UNIX AND NOT APPLE )
# N o t e t h a t a t t h e t i m e o f t h i s w r i t i n g t h e - W s t r i c t - p r o t o t y p e s f l a g a d d e d b e l o w w i l l m a k e t h i s f a i l
set ( THREADS_PREFER_PTHREAD_FLAG ON )
@ -309,8 +302,8 @@ link_directories(${LIBUNWIND_LIBRARY_DIRS})
if ( MSVC )
add_definitions ( "/bigobj /MP /W3 /GS- /D_CRT_SECURE_NO_WARNINGS /wd4996 /wd4345 /D_WIN32_WINNT=0x0600 /DWIN32_LEAN_AND_MEAN /DGTEST_HAS_TR1_TUPLE=0 /FIinline_c.h /D__SSE4_1__" )
# set ( C OMMON_C_FLAGS "${COMMON _C_FLAGS} /Dinline=__inline")
set ( C OMMON_EXE_LINKER_FLAGS "${COMMON _EXE_LINKER_FLAGS} /STACK:10485760")
# set ( C MAKE_C_FLAGS "${CMAKE _C_FLAGS} /Dinline=__inline")
set ( C MAKE_EXE_LINKER_FLAGS "${CMAKE _EXE_LINKER_FLAGS} /STACK:10485760")
if ( STATIC )
foreach ( VAR CMAKE_C_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELEASE )
string ( REPLACE "/MD" "/MT" ${ VAR } "${${VAR}}" )
@ -348,7 +341,7 @@ else()
include_directories ( SYSTEM src/platform/mingw )
# m i n g w d o e s n ' t s u p p o r t LTO ( multiple definition errors at link time )
set ( USE_LTO_DEFAULT false )
set ( C OMMON_EXE_LINKER_FLAGS "${COMMON _EXE_LINKER_FLAGS} -Wl,--stack,10485760")
set ( C MAKE_EXE_LINKER_FLAGS "${CMAKE _EXE_LINKER_FLAGS} -Wl,--stack,10485760")
if ( NOT BUILD_64 )
add_definitions ( -DWINVER=0x0501 -D_WIN32_WINNT=0x0501 )
endif ( )
@ -362,20 +355,20 @@ else()
set ( STATIC_ASSERT_FLAG "-Dstatic_assert=_Static_assert" )
endif ( )
set ( C OMMON_C_FLAGS "${COMMON _C_FLAGS} -std=c11 -D_GNU_SOURCE ${MINGW_FLAG} ${STATIC_ASSERT_FLAG} ${WARNINGS} ${C_WARNINGS} ${ARCH_FLAG}")
set ( C OMMON_CXX_FLAGS "${COMMON _CXX_FLAGS} -std=c++11 -D_GNU_SOURCE ${MINGW_FLAG} ${WARNINGS} ${CXX_WARNINGS} ${ARCH_FLAG}")
set ( C MAKE_C_FLAGS "${CMAKE _C_FLAGS} -std=c11 -D_GNU_SOURCE ${MINGW_FLAG} ${STATIC_ASSERT_FLAG} ${WARNINGS} ${C_WARNINGS} ${ARCH_FLAG}")
set ( C MAKE_CXX_FLAGS "${CMAKE _CXX_FLAGS} -std=c++11 -D_GNU_SOURCE ${MINGW_FLAG} ${WARNINGS} ${CXX_WARNINGS} ${ARCH_FLAG}")
# W i t h G C C 6 . 1 . 1 t h e c o m p i l e d b i n a r y m a l f u n c t i o n s d u e t o a l i a s i n g . U n t i l t h a t
# i s f i x e d i n t h e code ( Issue # 847 ) , f o r c e c o m p i l e r t o b e c o n s e r v a t i v e .
set ( C OMMON_C_FLAGS "${COMMON _C_FLAGS} -fno-strict-aliasing")
set ( C OMMON_CXX_FLAGS "${COMMON _CXX_FLAGS} -fno-strict-aliasing")
set ( C MAKE_C_FLAGS "${CMAKE _C_FLAGS} -fno-strict-aliasing")
set ( C MAKE_CXX_FLAGS "${CMAKE _CXX_FLAGS} -fno-strict-aliasing")
option ( NO_AES "Explicitly disable AES support" ${ NO_AES } )
if ( NOT NO_AES AND NOT ( ARM6 OR ARM7 ) )
message ( STATUS "AES support enabled" )
set ( C OMMON_C_FLAGS "${COMMON _C_FLAGS} -maes")
set ( C OMMON_CXX_FLAGS "${COMMON _CXX_FLAGS} -maes")
set ( C MAKE_C_FLAGS "${CMAKE _C_FLAGS} -maes")
set ( C MAKE_CXX_FLAGS "${CMAKE _CXX_FLAGS} -maes")
elseif ( ARM7 OR ARM6 )
message ( STATUS "AES support disabled (not available on ARM)" )
else ( )
@ -384,18 +377,18 @@ else()
if ( ARM6 )
message ( STATUS "Setting ARM6 C and C++ flags" )
set ( C OMMON_C_FLAGS "${COMMON _C_FLAGS} -mfpu=vfp -mfloat-abi=hard")
set ( C OMMON_CXX_FLAGS "${COMMON _CXX_FLAGS} -mfpu=vfp -mfloat-abi=hard")
set ( C MAKE_C_FLAGS "${CMAKE _C_FLAGS} -mfpu=vfp -mfloat-abi=hard")
set ( C MAKE_CXX_FLAGS "${CMAKE _CXX_FLAGS} -mfpu=vfp -mfloat-abi=hard")
endif ( )
if ( ARM7 )
message ( STATUS "Setting ARM7 C and C++ flags" )
set ( C OMMON_C_FLAGS "${COMMON _C_FLAGS} -O2 -mfloat-abi=hard")
set ( C OMMON_CXX_FLAGS "${COMMON _CXX_FLAGS} -O2 -mfloat-abi=hard")
set ( C MAKE_C_FLAGS "${CMAKE _C_FLAGS} -O2 -mfloat-abi=hard")
set ( C MAKE_CXX_FLAGS "${CMAKE _CXX_FLAGS} -O2 -mfloat-abi=hard")
endif ( )
if ( APPLE )
set ( C OMMON_CXX_FLAGS "${COMMON _CXX_FLAGS} -DGTEST_HAS_TR1_TUPLE=0")
set ( C MAKE_CXX_FLAGS "${CMAKE _CXX_FLAGS} -DGTEST_HAS_TR1_TUPLE=0")
endif ( )
if ( CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT ( CMAKE_C_COMPILER_VERSION VERSION_LESS 4.8 ) )
set ( DEBUG_FLAGS "-g3 -Og" )
@ -413,8 +406,8 @@ else()
set ( USE_LTO false )
# e x p l i c i t l y d e f i n e s t d l i b f o r o l d e r v e r s i o n s o f c l a n g
if ( CMAKE_C_COMPILER_VERSION VERSION_LESS 3.7 )
set ( C OMMON_CXX_FLAGS "${COMMON _CXX_FLAGS} -stdlib=libc++")
set ( C OMMON_EXE_LINKER_FLAGS "${COMMON _EXE_LINKER_FLAGS} -stdlib=libc++")
set ( C MAKE_CXX_FLAGS "${CMAKE _CXX_FLAGS} -stdlib=libc++")
set ( C MAKE_EXE_LINKER_FLAGS "${CMAKE _EXE_LINKER_FLAGS} -stdlib=libc++")
endif ( )
endif ( )
@ -437,7 +430,7 @@ else()
set ( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${RELEASE_FLAGS}" )
if ( STATIC AND NOT APPLE AND NOT FREEBSD AND NOT OPENBSD )
set ( C OMMON_EXE_LINKER_FLAGS "${COMMON _EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
set ( C MAKE_EXE_LINKER_FLAGS "${CMAKE _EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
endif ( )
endif ( )
@ -486,22 +479,21 @@ endif()
include ( version.cmake )
# W h e n b u i l d i n g t h e f o l l o w i n g s o u r c e s t r e a t w a r n i n g s a s e r r o r s , i n s t a l l t h r o w w r a p p e r
set ( CMAKE_C_FLAGS "${COMMON_C_FLAGS} ${WARNINGS_AS_ERRORS_FLAG} ${STACK_TRACE_C_FLAG}" )
set ( CMAKE_CXX_FLAGS "${COMMON_CXX_FLAGS} ${WARNINGS_AS_ERRORS_FLAG} ${STACK_TRACE_C_FLAG}" )
set ( CMAKE_EXE_LINKER_FLAGS "${COMMON_EXE_LINKER_FLAGS} ${STACK_TRACE_LINK_FLAG}" )
function ( treat_warnings_as_errors dirs )
foreach ( dir ${ ARGV } )
set_property ( DIRECTORY ${ dir }
A P P E N D P R O P E R T Y C O M P I L E _ F L A G S " - W e r r o r " )
endforeach ( )
endfunction ( )
add_subdirectory ( contrib )
add_subdirectory ( src )
treat_warnings_as_errors ( contrib src )
option ( BUILD_TESTS "Build tests." OFF )
if ( BUILD_TESTS )
# W h e n b u i l d i n g t e s t s , d o n ' t a d d s o m e o f t h e f l a g s a d d e d t o s o u r c e b u i l d
set ( CMAKE_C_FLAGS "${COMMON_C_FLAGS}" )
set ( CMAKE_CXX_FLAGS "${COMMON_CXX_FLAGS}" )
set ( CMAKE_EXE_LINKER_FLAGS "${COMMON_CXX_FLAGS}" )
add_subdirectory ( tests )
endif ( )