radford created this revision.
Herald added a subscriber: mgorny.
radford requested review of this revision.
Herald added projects: clang, LLDB, LLVM.
Herald added subscribers: llvm-commits, lldb-commits, cfe-commits.

[CMake][llvm] Using -D in COMPILE_DEFINITIONS can create a lone -D 
w/generator-expressions

[CMake][llvm] LLVM_DEFINITIONS are a list, not space separated

[CMake][clang] add_clang_library's functions require default visibility

[CMake][lldb] add_lldb_library's functions require default visibility

[CMake][llvm] add_llvm_library's functions require default visibility

[CMake][llvm] avoid changing global flags (may be used outside of llvm)

Changing global flags can break builds of projects that include/build
llvm as a sub-project, as the effect is global.  Ideally we would
disable this warning at the directory level instead, but the obvious
way (disabling warning D9025 <https://reviews.llvm.org/D9025>) isn't supported. 
 At least we can limit
the effect to only MSVC.

[CMake][llvm] The first argument to check_linker_flag is the language

[CMake][llvm] avoid includes with generator-expressions in add_custom_command


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D100891

Files:
  clang/cmake/modules/AddClang.cmake
  lldb/cmake/modules/AddLLDB.cmake
  llvm/cmake/modules/AddLLVM.cmake
  llvm/cmake/modules/AddLLVMDefinitions.cmake
  llvm/cmake/modules/HandleLLVMOptions.cmake
  llvm/cmake/modules/TableGen.cmake

Index: llvm/cmake/modules/TableGen.cmake
===================================================================
--- llvm/cmake/modules/TableGen.cmake
+++ llvm/cmake/modules/TableGen.cmake
@@ -95,6 +95,8 @@
   # ("${${project}_TABLEGEN_TARGET}" STREQUAL "${${project}_TABLEGEN_EXE}")
   # but lets us having smaller and cleaner code here.
   get_directory_property(tblgen_includes INCLUDE_DIRECTORIES)
+  # No support for generator-expressions in add_custom_command, so strip them
+  list(TRANSFORM tblgen_includes GENEX_STRIP)
   list(TRANSFORM tblgen_includes PREPEND -I)
 
   add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn}
Index: llvm/cmake/modules/HandleLLVMOptions.cmake
===================================================================
--- llvm/cmake/modules/HandleLLVMOptions.cmake
+++ llvm/cmake/modules/HandleLLVMOptions.cmake
@@ -62,18 +62,19 @@
     # NOTE: use `add_compile_options` rather than `add_definitions` since
     # `add_definitions` does not support generator expressions.
     add_compile_options($<$<OR:$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:CXX>>:-UNDEBUG>)
-
-    # Also remove /D NDEBUG to avoid MSVC warnings about conflicting defines.
-    foreach (flags_var_to_scrub
-        CMAKE_CXX_FLAGS_RELEASE
-        CMAKE_CXX_FLAGS_RELWITHDEBINFO
-        CMAKE_CXX_FLAGS_MINSIZEREL
-        CMAKE_C_FLAGS_RELEASE
-        CMAKE_C_FLAGS_RELWITHDEBINFO
-        CMAKE_C_FLAGS_MINSIZEREL)
-      string (REGEX REPLACE "(^| )[/-]D *NDEBUG($| )" " "
-        "${flags_var_to_scrub}" "${${flags_var_to_scrub}}")
-    endforeach()
+    if (MSVC)
+      # Also remove /D NDEBUG to avoid MSVC warnings about conflicting defines.
+      foreach (flags_var_to_scrub
+          CMAKE_CXX_FLAGS_RELEASE
+          CMAKE_CXX_FLAGS_RELWITHDEBINFO
+          CMAKE_CXX_FLAGS_MINSIZEREL
+          CMAKE_C_FLAGS_RELEASE
+          CMAKE_C_FLAGS_RELWITHDEBINFO
+          CMAKE_C_FLAGS_MINSIZEREL)
+        string (REGEX REPLACE "(^| )[/-]D *NDEBUG($| )" " "
+          "${flags_var_to_scrub}" "${${flags_var_to_scrub}}")
+      endforeach()
+     endif()
   endif()
 endif()
 
@@ -899,7 +900,7 @@
 # lld doesn't print colored diagnostics when invoked from Ninja
 if (UNIX AND CMAKE_GENERATOR STREQUAL "Ninja")
   include(CheckLinkerFlag)
-  check_linker_flag("-Wl,--color-diagnostics" LINKER_SUPPORTS_COLOR_DIAGNOSTICS)
+  check_linker_flag(CXX "-Wl,--color-diagnostics" LINKER_SUPPORTS_COLOR_DIAGNOSTICS)
   append_if(LINKER_SUPPORTS_COLOR_DIAGNOSTICS "-Wl,--color-diagnostics"
     CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
 endif()
@@ -1128,14 +1129,7 @@
 
 function(get_compile_definitions)
   get_directory_property(top_dir_definitions DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS)
-  foreach(definition ${top_dir_definitions})
-    if(DEFINED result)
-      string(APPEND result " -D${definition}")
-    else()
-      set(result "-D${definition}")
-    endif()
-  endforeach()
-  set(LLVM_DEFINITIONS "${result}" PARENT_SCOPE)
+  set(LLVM_DEFINITIONS "${top_dir_definitions}" PARENT_SCOPE)
 endfunction()
 get_compile_definitions()
 
Index: llvm/cmake/modules/AddLLVMDefinitions.cmake
===================================================================
--- llvm/cmake/modules/AddLLVMDefinitions.cmake
+++ llvm/cmake/modules/AddLLVMDefinitions.cmake
@@ -6,12 +6,6 @@
 
 macro(add_llvm_definitions)
   # We don't want no semicolons on LLVM_DEFINITIONS:
-  foreach(arg ${ARGN})
-    if(DEFINED LLVM_DEFINITIONS)
-      set(LLVM_DEFINITIONS "${LLVM_DEFINITIONS} ${arg}")
-    else()
-      set(LLVM_DEFINITIONS ${arg})
-    endif()
-  endforeach(arg)
-  add_definitions( ${ARGN} )
+  list(APPEND LLVM_DEFINITIONS ${ARGN})
+  add_definitions(${ARGN})
 endmacro(add_llvm_definitions)
Index: llvm/cmake/modules/AddLLVM.cmake
===================================================================
--- llvm/cmake/modules/AddLLVM.cmake
+++ llvm/cmake/modules/AddLLVM.cmake
@@ -826,6 +826,7 @@
   else()
     set_target_properties(${name} PROPERTIES FOLDER "Libraries")
   endif()
+  set_target_properties(${name} PROPERTIES CXX_VISIBILITY_PRESET default)
 endmacro(add_llvm_library name)
 
 macro(add_llvm_executable name)
Index: lldb/cmake/modules/AddLLDB.cmake
===================================================================
--- lldb/cmake/modules/AddLLDB.cmake
+++ lldb/cmake/modules/AddLLDB.cmake
@@ -97,6 +97,7 @@
     else()
       target_link_libraries(${name} PRIVATE ${PARAM_CLANG_LIBS})
     endif()
+    set_target_properties(${name} PROPERTIES CXX_VISIBILITY_PRESET default)
   endif()
 
   # A target cannot be changed to a FRAMEWORK after calling install() because
Index: clang/cmake/modules/AddClang.cmake
===================================================================
--- clang/cmake/modules/AddClang.cmake
+++ clang/cmake/modules/AddClang.cmake
@@ -142,6 +142,7 @@
     endif()
   endforeach()
 
+  set_target_properties(${name} PROPERTIES CXX_VISIBILITY_PRESET default)
   set_target_properties(${name} PROPERTIES FOLDER "Clang libraries")
   set_clang_windows_version_resource_properties(${name})
 endmacro(add_clang_library)
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to