1 set( LLVM_LINK_COMPONENTS
2 ${LLVM_TARGETS_TO_BUILD}
20 option(CLANG_PLUGIN_SUPPORT "Build clang with plugin support" ON)
23 if(CLANG_PLUGIN_SUPPORT)
24 set(support_plugins SUPPORT_PLUGINS)
27 if(NOT CLANG_BUILT_STANDALONE)
28 set(tablegen_deps intrinsics_gen)
35 cc1gen_reproducer_main.cpp
42 clang_target_link_libraries(clang
52 if(WIN32 AND NOT CYGWIN)
53 # Prevent versioning if the buildhost is targeting for Win32.
55 set_target_properties(clang PROPERTIES VERSION ${CLANG_EXECUTABLE_VERSION})
59 if(CLANG_PLUGIN_SUPPORT)
60 export_executable_symbols(clang)
63 add_dependencies(clang clang-resource-headers)
65 if(NOT CLANG_LINKS_TO_CREATE)
66 set(CLANG_LINKS_TO_CREATE clang++ clang-cl clang-cpp)
69 foreach(link ${CLANG_LINKS_TO_CREATE})
70 add_clang_symlink(${link} clang)
73 # Configure plist creation for OS X.
74 set (TOOL_INFO_PLIST "Info.plist" CACHE STRING "Plist name")
77 set(TOOL_INFO_NAME "${CLANG_VENDOR} clang")
79 set(TOOL_INFO_NAME "clang")
82 set(TOOL_INFO_UTI "${CLANG_VENDOR_UTI}")
83 set(TOOL_INFO_VERSION "${CLANG_VERSION}")
84 set(TOOL_INFO_BUILD_VERSION "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}")
86 set(TOOL_INFO_PLIST_OUT "${CMAKE_CURRENT_BINARY_DIR}/${TOOL_INFO_PLIST}")
87 target_link_libraries(clang
89 "-Wl,-sectcreate,__TEXT,__info_plist,${TOOL_INFO_PLIST_OUT}")
90 configure_file("${TOOL_INFO_PLIST}.in" "${TOOL_INFO_PLIST_OUT}" @ONLY)
94 set(TOOL_INFO_VERSION)
95 set(TOOL_INFO_BUILD_VERSION)
98 if(CLANG_ORDER_FILE AND
99 (LLVM_LINKER_IS_LD64 OR LLVM_LINKER_IS_GOLD OR LLVM_LINKER_IS_LLD))
100 include(CheckLinkerFlag)
102 if (LLVM_LINKER_IS_LD64)
103 set(LINKER_ORDER_FILE_OPTION "-Wl,-order_file,${CLANG_ORDER_FILE}")
104 elseif (LLVM_LINKER_IS_GOLD)
105 set(LINKER_ORDER_FILE_OPTION "-Wl,--section-ordering-file,${CLANG_ORDER_FILE}")
106 elseif (LLVM_LINKER_IS_LLD)
107 set(LINKER_ORDER_FILE_OPTION "-Wl,--symbol-ordering-file,${CLANG_ORDER_FILE}")
110 # This is a test to ensure the actual order file works with the linker.
111 check_linker_flag(${LINKER_ORDER_FILE_OPTION} LINKER_ORDER_FILE_WORKS)
113 # Passing an empty order file disables some linker layout optimizations.
114 # To work around this and enable workflows for re-linking when the order file
115 # changes we check during configuration if the file is empty, and make it a
116 # configuration dependency.
117 file(READ ${CLANG_ORDER_FILE} ORDER_FILE LIMIT 20)
118 if("${ORDER_FILE}" STREQUAL "\n")
119 set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CLANG_ORDER_FILE})
120 elseif(LINKER_ORDER_FILE_WORKS)
121 target_link_libraries(clang PRIVATE ${LINKER_ORDER_FILE_OPTION})
122 set_target_properties(clang PROPERTIES LINK_DEPENDS ${CLANG_ORDER_FILE})