diff --git a/clang/cmake/modules/AddClang.cmake b/clang/cmake/modules/AddClang.cmake --- a/clang/cmake/modules/AddClang.cmake +++ b/clang/cmake/modules/AddClang.cmake @@ -153,7 +153,10 @@ if (NOT CLANG_BUILD_TOOLS) set(EXCLUDE_FROM_ALL ON) endif() - if(ARG_GENERATE_DRIVER AND LLVM_TOOL_LLVM_DRIVER_BUILD) + if(ARG_GENERATE_DRIVER + AND LLVM_TOOL_LLVM_DRIVER_BUILD + AND (NOT LLVM_DISTRIBUTION_COMPONENTS OR ${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS) + ) set(get_obj_args ${ARGN}) list(FILTER get_obj_args EXCLUDE REGEX "^SUPPORT_PLUGINS$") generate_llvm_objects(${name} ${get_obj_args}) @@ -181,7 +184,10 @@ macro(add_clang_symlink name dest) get_property(LLVM_DRIVER_TOOLS GLOBAL PROPERTY LLVM_DRIVER_TOOLS) - if(LLVM_TOOL_LLVM_DRIVER_BUILD AND ${dest} IN_LIST LLVM_DRIVER_TOOLS) + if(LLVM_TOOL_LLVM_DRIVER_BUILD + AND ${dest} IN_LIST LLVM_DRIVER_TOOLS + AND (NOT LLVM_DISTRIBUTION_COMPONENTS OR ${dest} IN_LIST LLVM_DISTRIBUTION_COMPONENTS) + ) set_property(GLOBAL APPEND PROPERTY LLVM_DRIVER_TOOL_ALIASES_${dest} ${name}) else() llvm_add_tool_symlink(CLANG ${name} ${dest} ALWAYS_GENERATE) diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -910,7 +910,9 @@ list(APPEND ALL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}-driver.cpp) - if (LLVM_TOOL_LLVM_DRIVER_BUILD) + if (LLVM_TOOL_LLVM_DRIVER_BUILD + AND (NOT LLVM_DISTRIBUTION_COMPONENTS OR ${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS) + ) set_property(GLOBAL APPEND PROPERTY LLVM_DRIVER_COMPONENTS ${LLVM_LINK_COMPONENTS}) set_property(GLOBAL APPEND PROPERTY LLVM_DRIVER_DEPS ${ARG_DEPENDS} ${LLVM_COMMON_DEPENDS}) set_property(GLOBAL APPEND PROPERTY LLVM_DRIVER_OBJLIBS "${obj_name}") @@ -1301,7 +1303,10 @@ if( NOT LLVM_BUILD_TOOLS ) set(EXCLUDE_FROM_ALL ON) endif() - if(ARG_GENERATE_DRIVER AND LLVM_TOOL_LLVM_DRIVER_BUILD) + if(ARG_GENERATE_DRIVER + AND LLVM_TOOL_LLVM_DRIVER_BUILD + AND (NOT LLVM_DISTRIBUTION_COMPONENTS OR ${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS) + ) generate_llvm_objects(${name} ${ARGN}) add_custom_target(${name} DEPENDS llvm-driver) else() @@ -2032,7 +2037,10 @@ function(llvm_install_symlink project name dest) get_property(LLVM_DRIVER_TOOLS GLOBAL PROPERTY LLVM_DRIVER_TOOLS) - if(LLVM_TOOL_LLVM_DRIVER_BUILD AND ${dest} IN_LIST LLVM_DRIVER_TOOLS) + if(LLVM_TOOL_LLVM_DRIVER_BUILD + AND ${dest} IN_LIST LLVM_DRIVER_TOOLS + AND (NOT LLVM_DISTRIBUTION_COMPONENTS OR ${dest} IN_LIST LLVM_DISTRIBUTION_COMPONENTS) + ) return() endif() cmake_parse_arguments(ARG "ALWAYS_GENERATE" "COMPONENT" "" ${ARGN}) diff --git a/llvm/cmake/modules/LLVMDistributionSupport.cmake b/llvm/cmake/modules/LLVMDistributionSupport.cmake --- a/llvm/cmake/modules/LLVMDistributionSupport.cmake +++ b/llvm/cmake/modules/LLVMDistributionSupport.cmake @@ -244,6 +244,8 @@ set(distributions "") endif() + get_property(LLVM_DRIVER_TOOL_SYMLINKS GLOBAL PROPERTY LLVM_DRIVER_TOOL_SYMLINKS) + foreach(distribution ${distributions}) if(distribution STREQUAL "") set(distribution_target distribution) @@ -268,12 +270,16 @@ if(TARGET install-${target}) add_dependencies(install-${distribution_target} install-${target}) + elseif(TARGET install-llvm-driver AND ${target} IN_LIST LLVM_DRIVER_TOOL_SYMLINKS) + add_dependencies(install-${distribution_target} install-llvm-driver) else() message(SEND_ERROR "Specified distribution component '${target}' doesn't have an install target") endif() if(TARGET install-${target}-stripped) add_dependencies(install-${distribution_target}-stripped install-${target}-stripped) + elseif(TARGET install-llvm-driver-stripped AND ${target} IN_LIST LLVM_DRIVER_TOOL_SYMLINKS) + add_dependencies(install-${distribution_target}-stripped install-llvm-driver-stripped) else() message(SEND_ERROR "Specified distribution component '${target}' doesn't have an install-stripped target."