@@ -863,12 +863,8 @@ macro(add_llvm_library name)
863863 endif ()
864864endmacro (add_llvm_library name )
865865
866- macro (add_llvm_executable name )
867- cmake_parse_arguments (ARG
868- "DISABLE_LLVM_LINK_LLVM_DYLIB;IGNORE_EXTERNALIZE_DEBUGINFO;NO_INSTALL_RPATH;SUPPORT_PLUGINS;GENERATE_DRIVER"
869- "ENTITLEMENTS;BUNDLE_PATH"
870- "DEPENDS"
871- ${ARGN} )
866+ macro (generate_llvm_objects name )
867+ cmake_parse_arguments (ARG "GENERATE_DRIVER" "" "DEPENDS" ${ARGN} )
872868
873869 llvm_process_sources( ALL_FILES ${ARG_UNPARSED_ARGUMENTS} )
874870
@@ -911,7 +907,15 @@ macro(add_llvm_executable name)
911907 target_link_libraries (${obj_name} ${LLVM_PTHREAD_LIB} )
912908 llvm_config(${obj_name} ${USE_SHARED} ${LLVM_LINK_COMPONENTS} )
913909 endif ()
910+ endmacro ()
914911
912+ macro (add_llvm_executable name )
913+ cmake_parse_arguments (ARG
914+ "DISABLE_LLVM_LINK_LLVM_DYLIB;IGNORE_EXTERNALIZE_DEBUGINFO;NO_INSTALL_RPATH;SUPPORT_PLUGINS"
915+ "ENTITLEMENTS;BUNDLE_PATH"
916+ ""
917+ ${ARGN} )
918+ generate_llvm_objects(${name} ${ARG_UNPARSED_ARGUMENTS} )
915919 add_windows_version_resource_file(ALL_FILES ${ALL_FILES} )
916920
917921 if (XCODE)
@@ -1276,30 +1280,36 @@ if(NOT LLVM_TOOLCHAIN_TOOLS)
12761280endif ()
12771281
12781282macro (add_llvm_tool name )
1283+ cmake_parse_arguments (ARG "DEPENDS;GENERATE_DRIVER" "" "" ${ARGN} )
12791284 if ( NOT LLVM_BUILD_TOOLS )
12801285 set (EXCLUDE_FROM_ALL ON )
12811286 endif ()
1282- add_llvm_executable(${name} ${ARGN} )
1283-
1284- if ( ${name} IN_LIST LLVM_TOOLCHAIN_TOOLS OR NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
1285- if ( LLVM_BUILD_TOOLS )
1286- get_target_export_arg(${name} LLVM export_to_llvmexports)
1287- install (TARGETS ${name}
1288- ${export_to_llvmexports}
1289- RUNTIME DESTINATION ${LLVM_TOOLS_INSTALL_DIR}
1290- COMPONENT ${name} )
1291-
1292- if (NOT LLVM_ENABLE_IDE)
1293- add_llvm_install_targets(install -${name}
1294- DEPENDS ${name}
1295- COMPONENT ${name} )
1287+ if (ARG_GENERATE_DRIVER AND LLVM_TOOL_LLVM_DRIVER_BUILD)
1288+ generate_llvm_objects(${name} ${ARGN} )
1289+ add_custom_target (${name} DEPENDS llvm-driver)
1290+ else ()
1291+ add_llvm_executable(${name} ${ARGN} )
1292+
1293+ if ( ${name} IN_LIST LLVM_TOOLCHAIN_TOOLS OR NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
1294+ if ( LLVM_BUILD_TOOLS )
1295+ get_target_export_arg(${name} LLVM export_to_llvmexports)
1296+ install (TARGETS ${name}
1297+ ${export_to_llvmexports}
1298+ RUNTIME DESTINATION ${LLVM_TOOLS_INSTALL_DIR}
1299+ COMPONENT ${name} )
1300+
1301+ if (NOT LLVM_ENABLE_IDE)
1302+ add_llvm_install_targets(install -${name}
1303+ DEPENDS ${name}
1304+ COMPONENT ${name} )
1305+ endif ()
12961306 endif ()
12971307 endif ()
1308+ if ( LLVM_BUILD_TOOLS )
1309+ set_property (GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name} )
1310+ endif ()
1311+ set_target_properties (${name} PROPERTIES FOLDER "Tools" )
12981312 endif ()
1299- if ( LLVM_BUILD_TOOLS )
1300- set_property (GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name} )
1301- endif ()
1302- set_target_properties (${name} PROPERTIES FOLDER "Tools" )
13031313endmacro (add_llvm_tool name )
13041314
13051315
@@ -2000,6 +2010,11 @@ function(llvm_install_library_symlink name dest type)
20002010endfunction ()
20012011
20022012function (llvm_install_symlink name dest)
2013+ get_property (LLVM_DRIVER_TOOLS GLOBAL PROPERTY LLVM_DRIVER_TOOLS)
2014+ if (LLVM_TOOL_LLVM_DRIVER_BUILD AND ${dest} IN_LIST LLVM_DRIVER_TOOLS)
2015+ set_property (GLOBAL APPEND PROPERTY LLVM_DRIVER_TOOL_SYMLINKS ${name} )
2016+ return ()
2017+ endif ()
20032018 cmake_parse_arguments (ARG "ALWAYS_GENERATE" "COMPONENT" "" ${ARGN} )
20042019 foreach (path ${CMAKE_MODULE_PATH} )
20052020 if (EXISTS ${path} /LLVMInstallSymlink.cmake)
@@ -2020,6 +2035,9 @@ function(llvm_install_symlink name dest)
20202035
20212036 set (full_name ${name}${CMAKE_EXECUTABLE_SUFFIX} )
20222037 set (full_dest ${dest}${CMAKE_EXECUTABLE_SUFFIX} )
2038+ if (${dest} STREQUAL "llvm-driver" )
2039+ set (full_dest llvm${CMAKE_EXECUTABLE_SUFFIX} )
2040+ endif ()
20232041
20242042 install (SCRIPT ${INSTALL_SYMLINK}
20252043 CODE "install_symlink(${full_name} ${full_dest} ${LLVM_TOOLS_INSTALL_DIR} )"
0 commit comments