diff options
author | Hans Wennborg <hans@hanshq.net> | 2013-08-27 01:24:01 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2013-08-27 01:24:01 +0000 |
commit | c1f1af715b204a7be6e31754169c358edb392bb2 (patch) | |
tree | 45556ebc324e82566caca1667e5beccf0d2e0815 /CMakeLists.txt | |
parent | 384a448fbe081352f7b3bb927093412ad1725cff (diff) | |
download | compiler-rt-c1f1af715b204a7be6e31754169c358edb392bb2.tar.gz compiler-rt-c1f1af715b204a7be6e31754169c358edb392bb2.tar.bz2 compiler-rt-c1f1af715b204a7be6e31754169c358edb392bb2.tar.xz |
cmake: fix the compiler-rt build with MSVC
This sets flags and excludes things that aren't working with MSVC yet,
allowing us to build the ASan runtime as part of the cmake build.
Differential Revision: http://llvm-reviews.chandlerc.com/D1525
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@189304 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 58 |
1 files changed, 37 insertions, 21 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 21fdf295..67cc51ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,8 +47,13 @@ if (NOT CMAKE_SIZEOF_VOID_P EQUAL 4 AND NOT CMAKE_SIZEOF_VOID_P EQUAL 8) message(FATAL_ERROR "Please use architecture with 4 or 8 byte pointers.") endif() -set(TARGET_64_BIT_CFLAGS "-m64") -set(TARGET_32_BIT_CFLAGS "-m32") +if (NOT MSVC) + set(TARGET_64_BIT_CFLAGS "-m64") + set(TARGET_32_BIT_CFLAGS "-m32") +else() + set(TARGET_64_BIT_CFLAGS "") + set(TARGET_32_BIT_CFLAGS "") +endif() # List of architectures we can target. set(COMPILER_RT_SUPPORTED_ARCH) @@ -83,7 +88,9 @@ macro(test_target_arch arch) endmacro() if("${LLVM_NATIVE_ARCH}" STREQUAL "X86") - test_target_arch(x86_64 ${TARGET_64_BIT_CFLAGS}) + if (NOT MSVC) + test_target_arch(x86_64 ${TARGET_64_BIT_CFLAGS}) + endif() test_target_arch(i386 ${TARGET_32_BIT_CFLAGS}) elseif("${LLVM_NATIVE_ARCH}" STREQUAL "PowerPC") test_target_arch(powerpc64 ${TARGET_64_BIT_CFLAGS}) @@ -114,25 +121,34 @@ function(filter_available_targets out_var) endfunction() # Provide some common commmandline flags for Sanitizer runtimes. -set(SANITIZER_COMMON_CFLAGS - -fPIC - -fno-builtin - -fno-exceptions - -fomit-frame-pointer - -funwind-tables - -fno-stack-protector - -Wno-gnu # Variadic macros with 0 arguments for ... - -O3 - ) -if(NOT WIN32) - list(APPEND SANITIZER_COMMON_CFLAGS -fvisibility=hidden) -endif() -# Build sanitizer runtimes with debug info. -check_cxx_compiler_flag(-gline-tables-only SUPPORTS_GLINE_TABLES_ONLY_FLAG) -if(SUPPORTS_GLINE_TABLES_ONLY_FLAG) - list(APPEND SANITIZER_COMMON_CFLAGS -gline-tables-only) +if (NOT MSVC) + set(SANITIZER_COMMON_CFLAGS + -fPIC + -fno-builtin + -fno-exceptions + -fomit-frame-pointer + -funwind-tables + -fno-stack-protector + -Wno-gnu # Variadic macros with 0 arguments for ... + -O3 + -fvisibility=hidden + ) else() - list(APPEND SANITIZER_COMMON_CFLAGS -g) + set(SANITIZER_COMMON_CFLAGS + /MT + /Zi + /GS- + /wd4722 + ) +endif() +# Build sanitizer runtimes with debug info. (MSVC gets /Zi above) +if (NOT MSVC) + check_cxx_compiler_flag(-gline-tables-only SUPPORTS_GLINE_TABLES_ONLY_FLAG) + if(SUPPORTS_GLINE_TABLES_ONLY_FLAG) + list(APPEND SANITIZER_COMMON_CFLAGS -gline-tables-only) + else() + list(APPEND SANITIZER_COMMON_CFLAGS -g) + endif() endif() # Warnings suppressions. check_cxx_compiler_flag(-Wno-variadic-macros SUPPORTS_NO_VARIADIC_MACROS_FLAG) |