[CMake] llvm_update_compile_flags: Honor LLVM_COMPILE_FLAGS.
[oota-llvm.git] / cmake / modules / AddLLVM.cmake
index 6996c388b3edeaa986b89a56c0a9e69327a054a0..301aeea80f5f95e64cede1f5f97f73ca90fe2b6b 100644 (file)
@@ -3,8 +3,8 @@ include(LLVMProcessSources)
 include(LLVM-Config)
 
 function(llvm_update_compile_flags name)
-  set(ALL_SOURCES ${ARGN})
-  if("${ALL_SOURCES}" MATCHES "\\.c(;|$)")
+  get_property(sources TARGET ${name} PROPERTY SOURCES)
+  if("${sources}" MATCHES "\\.c(;|$)")
     set(update_src_props ON)
   endif()
 
@@ -12,24 +12,29 @@ function(llvm_update_compile_flags name)
     set(LLVM_REQUIRES_RTTI ON)
   else()
     if(LLVM_COMPILER_IS_GCC_COMPATIBLE)
-      set(target_compile_flags "${target_compile_flags} -fno-exceptions")
+      list(APPEND LLVM_COMPILE_FLAGS "-fno-exceptions")
     elseif(MSVC)
       list(APPEND LLVM_COMPILE_DEFINITIONS _HAS_EXCEPTIONS=0)
-      set(target_compile_flags "${target_compile_flags} /EHs-c-")
+      list(APPEND LLVM_COMPILE_FLAGS "/EHs-c-")
     endif()
   endif()
 
   if(NOT LLVM_REQUIRES_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")
+      list(APPEND LLVM_COMPILE_FLAGS "-fno-rtti")
     elseif (MSVC)
-      set(target_compile_flags "${target_compile_flags} /GR-")
+      list(APPEND LLVM_COMPILE_FLAGS "/GR-")
     endif ()
   endif()
 
+  # Assume that;
+  #   - LLVM_COMPILE_FLAGS is list.
+  #   - PROPERTY COMPILE_FLAGS is string.
+  string(REPLACE ";" " " target_compile_flags "${LLVM_COMPILE_FLAGS}")
+
   if(update_src_props)
-    foreach(fn ${ALL_SOURCES})
+    foreach(fn ${sources})
       get_filename_component(suf ${fn} EXT)
       if("${suf}" STREQUAL ".cpp")
        set_property(SOURCE ${fn} APPEND_STRING PROPERTY
@@ -162,7 +167,7 @@ macro(add_llvm_library name)
   add_library( ${name} ${ALL_FILES} )
   set_output_directory(${name} ${LLVM_RUNTIME_OUTPUT_INTDIR} ${LLVM_LIBRARY_OUTPUT_INTDIR})
   set_property( GLOBAL APPEND PROPERTY LLVM_LIBS ${name} )
-  llvm_update_compile_flags(${name} ${ALL_FILES})
+  llvm_update_compile_flags(${name})
   add_dead_strip( ${name} )
   if( LLVM_COMMON_DEPENDS )
     add_dependencies( ${name} ${LLVM_COMMON_DEPENDS} )
@@ -222,7 +227,7 @@ ${name} ignored.")
     add_library( ${name} ${libkind} ${ALL_FILES} )
     set_output_directory(${name} ${LLVM_RUNTIME_OUTPUT_INTDIR} ${LLVM_LIBRARY_OUTPUT_INTDIR})
     set_target_properties( ${name} PROPERTIES PREFIX "" )
-    llvm_update_compile_flags(${name} ${ALL_FILES})
+    llvm_update_compile_flags(${name})
     add_dead_strip( ${name} )
 
     if (LLVM_EXPORTED_SYMBOL_FILE)
@@ -264,7 +269,7 @@ macro(add_llvm_executable name)
   else()
     add_executable(${name} ${ALL_FILES})
   endif()
-  llvm_update_compile_flags(${name} ${ALL_FILES})
+  llvm_update_compile_flags(${name})
   add_dead_strip( ${name} )
 
   if (LLVM_EXPORTED_SYMBOL_FILE)
@@ -399,7 +404,7 @@ function(add_unittest test_suite test_name)
   endif ()
 
   if (SUPPORTS_NO_VARIADIC_MACROS_FLAG)
-    set(LLVM_COMPILE_FLAGS "-Wno-variadic-macros")
+    list(APPEND LLVM_COMPILE_FLAGS "-Wno-variadic-macros")
   endif ()
 
   set(LLVM_REQUIRES_RTTI OFF)