summaryrefslogtreecommitdiff
path: root/cmake/modules/AddLLVM.cmake
diff options
context:
space:
mode:
authorNAKAMURA Takumi <geek4civic@gmail.com>2014-01-07 10:24:14 +0000
committerNAKAMURA Takumi <geek4civic@gmail.com>2014-01-07 10:24:14 +0000
commitbba676f3fee988c09c23172aa09eb6a363d9f473 (patch)
tree172733caee4c84db3812eec1e74554bcb3d40ba8 /cmake/modules/AddLLVM.cmake
parent9cca551091d1727cbc83b0a5ee558ed689d07d27 (diff)
downloadllvm-bba676f3fee988c09c23172aa09eb6a363d9f473.tar.gz
llvm-bba676f3fee988c09c23172aa09eb6a363d9f473.tar.bz2
llvm-bba676f3fee988c09c23172aa09eb6a363d9f473.tar.xz
[CMake] Introduce llvm_update_compile_flags(target_name) to update compile flags in target properties.
FIXME: Just add_unittest() is using it. FIXME: Cooperate with source properties. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198683 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'cmake/modules/AddLLVM.cmake')
-rw-r--r--cmake/modules/AddLLVM.cmake60
1 files changed, 36 insertions, 24 deletions
diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake
index cf1986a81b..83422fb18f 100644
--- a/cmake/modules/AddLLVM.cmake
+++ b/cmake/modules/AddLLVM.cmake
@@ -2,6 +2,24 @@ include(LLVMParseArguments)
include(LLVMProcessSources)
include(LLVM-Config)
+function(llvm_update_compile_flags name)
+ get_property(target_compile_flags TARGET ${name} PROPERTY COMPILE_FLAGS)
+ if(NOT "${LLVM_COMPILE_FLAGS}" STREQUAL "")
+ set(target_compile_flags "${target_compile_flags} ${LLVM_COMPILE_FLAGS}")
+ endif()
+ if(LLVM_NO_RTTI)
+ list(APPEND LLVM_COMPILE_DEFINITIONS GTEST_HAS_RTTI=0)
+ if (LLVM_COMPILER_IS_GCC_COMPATIBLE)
+ set(target_compile_flags "${target_compile_flags} -fno-rtti")
+ elseif (MSVC)
+ llvm_replace_compiler_option(target_compile_flags "/GR" "/GR-")
+ endif ()
+ endif()
+
+ set_property(TARGET ${name} PROPERTY COMPILE_FLAGS "${target_compile_flags}")
+ set_property(TARGET ${name} APPEND PROPERTY COMPILE_DEFINITIONS ${LLVM_COMPILE_DEFINITIONS})
+endfunction()
+
function(add_llvm_symbol_exports target_name export_file)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(native_export_file "${target_name}.exports")
@@ -343,6 +361,23 @@ function(add_unittest test_suite test_name)
set(EXCLUDE_FROM_ALL ON)
endif()
+ # Visual Studio 2012 only supports up to 8 template parameters in
+ # std::tr1::tuple by default, but gtest requires 10
+ if (MSVC AND MSVC_VERSION EQUAL 1700)
+ list(APPEND LLVM_COMPILE_DEFINITIONS _VARIADIC_MAX=10)
+ endif ()
+
+ include_directories(${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include)
+ if (NOT LLVM_ENABLE_THREADS)
+ list(APPEND LLVM_COMPILE_DEFINITIONS GTEST_HAS_PTHREAD=0)
+ endif ()
+
+ if (SUPPORTS_NO_VARIADIC_MACROS_FLAG)
+ set(LLVM_COMPILE_FLAGS "-Wno-variadic-macros")
+ endif ()
+
+ set(LLVM_NO_RTTI ON)
+
add_llvm_executable(${test_name} ${ARGN})
set(outdir ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR})
set_output_directory(${test_name} ${outdir} ${outdir})
@@ -357,30 +392,7 @@ function(add_unittest test_suite test_name)
if (NOT ${test_suite_folder} STREQUAL "NOTFOUND")
set_property(TARGET ${test_name} PROPERTY FOLDER "${test_suite_folder}")
endif ()
-
- # Visual Studio 2012 only supports up to 8 template parameters in
- # std::tr1::tuple by default, but gtest requires 10
- if (MSVC AND MSVC_VERSION EQUAL 1700)
- set_property(TARGET ${test_name} APPEND PROPERTY COMPILE_DEFINITIONS _VARIADIC_MAX=10)
- endif ()
-
- include_directories(${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include)
- set_property(TARGET ${test_name} APPEND PROPERTY COMPILE_DEFINITIONS GTEST_HAS_RTTI=0)
- if (NOT LLVM_ENABLE_THREADS)
- set_property(TARGET ${test_name} APPEND PROPERTY COMPILE_DEFINITIONS GTEST_HAS_PTHREAD=0)
- endif ()
-
- get_property(target_compile_flags TARGET ${test_name} PROPERTY COMPILE_FLAGS)
- if (LLVM_COMPILER_IS_GCC_COMPATIBLE)
- set(target_compile_flags "${target_compile_flags} -fno-rtti")
- elseif (MSVC)
- llvm_replace_compiler_option(target_compile_flags "/GR" "/GR-")
- endif ()
-
- if (SUPPORTS_NO_VARIADIC_MACROS_FLAG)
- set(target_compile_flags "${target_compile_flags} -Wno-variadic-macros")
- endif ()
- set_property(TARGET ${test_name} PROPERTY COMPILE_FLAGS "${target_compile_flags}")
+ llvm_update_compile_flags(${test_name})
endfunction()
# This function provides an automatic way to 'configure'-like generate a file