From 561adf2d64fb56102ce45264f3693bf98e09bcea Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Thu, 13 Mar 2014 11:31:10 +0000 Subject: [CMake] Use /W3 instead of -Wall on Windows. Remove add_definitions abuse. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@203786 91177308-0d34-0410-b5e6-96231b3b80d8 --- CMakeLists.txt | 10 +++++++--- cmake/Modules/CompilerRTUtils.cmake | 15 +++++++++------ cmake/config-ix.cmake | 1 + 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e555016f5..c882cc4e6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -235,10 +235,14 @@ pythonize_bool(COMPILER_RT_DEBUG) #================================ include(config-ix) -add_definitions_if(COMPILER_RT_HAS_WALL_FLAG -Wall) +if(MSVC) + append_string_if(COMPILER_RT_HAS_W3_FLAG /W3 CMAKE_C_FLAGS CMAKE_CXX_FLAGS) +else() + append_string_if(COMPILER_RT_HAS_WALL_FLAG -Wall CMAKE_C_FLAGS CMAKE_CXX_FLAGS) +endif() if(COMPILER_RT_ENABLE_WERROR) - add_definitions_if(COMPILER_RT_HAS_WERROR_FLAG -Werror) - add_definitions_if(COMPILER_RT_HAS_WX_FLAG /WX) + append_string_if(COMPILER_RT_HAS_WERROR_FLAG -Werror CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + append_string_if(COMPILER_RT_HAS_WX_FLAG /WX CMAKE_C_FLAGS CMAKE_CXX_FLAGS) endif() # Emulate C99 and C++11's __func__ for MSVC prior to 2013 CTP. diff --git a/cmake/Modules/CompilerRTUtils.cmake b/cmake/Modules/CompilerRTUtils.cmake index b8eef90bb..e22e77535 100644 --- a/cmake/Modules/CompilerRTUtils.cmake +++ b/cmake/Modules/CompilerRTUtils.cmake @@ -46,13 +46,16 @@ macro(append_if condition value) endif() endmacro() +# Appends value to all strings in ARGN, if the condition is true. +macro(append_string_if condition value) + if(${condition}) + foreach(str ${ARGN}) + set(${str} "${${str}} ${value}") + endforeach() + endif() +endmacro() + macro(append_no_rtti_flag list) append_if(COMPILER_RT_HAS_FNO_RTTI_FLAG -fno-rtti ${list}) append_if(COMPILER_RT_HAS_GR_FLAG /GR- ${list}) endmacro() - -macro(add_definitions_if condition) - if(${condition}) - add_definitions(${ARGN}) - endif() -endmacro() diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake index a4d5827e1..09911db7b 100644 --- a/cmake/config-ix.cmake +++ b/cmake/config-ix.cmake @@ -35,6 +35,7 @@ check_cxx_compiler_flag("-Werror -Wno-gnu" COMPILER_RT_HAS_WNO_GN check_cxx_compiler_flag("-Werror -Wno-non-virtual-dtor" COMPILER_RT_HAS_WNO_NON_VIRTUAL_DTOR_FLAG) check_cxx_compiler_flag("-Werror -Wno-variadic-macros" COMPILER_RT_HAS_WNO_VARIADIC_MACROS_FLAG) +check_cxx_compiler_flag(/W3 COMPILER_RT_HAS_W3_FLAG) check_cxx_compiler_flag(/WX COMPILER_RT_HAS_WX_FLAG) check_cxx_compiler_flag(/wd4722 COMPILER_RT_HAS_WD4722_FLAG) -- cgit v1.2.3