Index: cmake/modules/AddLLVM.cmake =================================================================== --- cmake/modules/AddLLVM.cmake +++ cmake/modules/AddLLVM.cmake @@ -671,6 +671,7 @@ endmacro(add_llvm_library name) macro(add_llvm_loadable_module name) + cmake_parse_arguments(ARG "" "PLUGIN_TOOL" "" ${ARGN}) llvm_add_library(${name} MODULE ${ARGN}) if(NOT TARGET ${name}) # Add empty "phony" target @@ -701,6 +702,23 @@ set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name}) endif() endif() + if(APPLE) + if(ARG_PLUGIN_TOOL) + if(TARGET ${ARG_PLUGIN_TOOL}) + add_dependencies(${name} ${ARG_PLUGIN_TOOL}) + endif() + set_property( + TARGET ${name} + APPEND_STRING + PROPERTY LINK_FLAGS + " -bundle_loader ${LLVM_TOOLS_BINARY_DIR}/${ARG_PLUGIN_TOOL}") + else() + set_property(TARGET ${name} + APPEND_STRING + PROPERTY LINK_FLAGS + " -Wl,-flat_namespace -Wl,-undefined -Wl,suppress") + endif() + endif() set_target_properties(${name} PROPERTIES FOLDER "Loadable modules") endmacro(add_llvm_loadable_module name) Index: cmake/modules/HandleLLVMOptions.cmake =================================================================== --- cmake/modules/HandleLLVMOptions.cmake +++ cmake/modules/HandleLLVMOptions.cmake @@ -130,8 +130,6 @@ if(LLVM_ENABLE_LLD AND LLVM_ENABLE_LTO) message(FATAL_ERROR "lld does not support LTO on Darwin") endif() - # Darwin-specific linker flags for loadable modules. - set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-flat_namespace -Wl,-undefined -Wl,suppress") endif() # Pass -Wl,-z,defs. This makes sure all symbols are defined. Otherwise a DSO