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