@@ -18,7 +18,11 @@ set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/arch" )
1818set ( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR} /lib" )
1919set ( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR} /bin" )
2020
21- set ( CMAKE_CXX_STANDARD 20 )
21+ if ( MSVC AND (CMAKE_C_COMPILER_ID STREQUAL "Clang" ) AND (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" ))
22+ set ( CMAKE_CXX_STANDARD 17 )
23+ else ()
24+ set ( CMAKE_CXX_STANDARD 20 )
25+ endif ()
2226
2327if ( UNIX )
2428 set (COMMON_COMPILER_FLAGS
@@ -45,6 +49,11 @@ if( UNIX )
4549 "${CMAKE_C_FLAGS} \
4650 -Wold-style-definition \
4751 -Wmissing-prototypes" )
52+
53+ if (${ENABLE_ADDRESS_SANITIZER} OR ${ENABLE_UB_SANITIZER} )
54+ set (COMMON_COMPILER_FLAGS "${COMMON_COMPILER_FLAGS} -Wno-cast-align" )
55+ endif ()
56+
4857 set (COMMON_COMPILER_FLAGS "${COMMON_COMPILER_FLAGS} -Werror" )
4958
5059 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_COMPILER_FLAGS} " )
@@ -56,11 +65,19 @@ if( UNIX )
5665endif ()
5766
5867if ( MSVC )
68+ if ((CMAKE_C_COMPILER_ID STREQUAL "Clang" ) AND (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" ))
69+ set (COMMON_COMPILER_FLAGS
70+ "-Wno-tautological-pointer-compare \
71+ -Wno-ignored-attributes" )
72+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_COMPILER_FLAGS} " )
73+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_COMPILER_FLAGS} " )
74+ endif ()
5975 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} " )
60- set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /W4 /wd4267 /wd4244 /wd4100 /WX" )
61- set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /W4 /wd4267 /wd4244 /wd4100 /WX" )
62- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4 /wd4267 /wd4244 /wd4100 /WX" )
63- set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /W4 /wd4267 /wd4244 /wd4100 /WX" )
64- set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4 /wd4267 /wd4244 /wd4100 /WX" )
65- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /wd4267 /wd4244 /wd4100 /WX" )
76+ set (COMMON_FLAGS "/W4 /wd4267 /wd4244 /wd4100 /WX" )
77+ set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${COMMON_FLAGS} " )
78+ set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${COMMON_FLAGS} " )
79+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_FLAGS} " )
80+ set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${COMMON_FLAGS} " )
81+ set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${COMMON_FLAGS} " )
82+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_FLAGS} " )
6683endif ( MSVC )
0 commit comments