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)
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits