1 set( LLVM_LINK_COMPONENTS
2 ${LLVM_TARGETS_TO_BUILD}
20 option(CLANG_PLUGIN_SUPPORT "Build clang with plugin support" ON)
22 # Support plugins. This must be before add_clang_executable as it reads
24 if(CLANG_PLUGIN_SUPPORT)
25 set(LLVM_NO_DEAD_STRIP 1)
28 add_clang_executable(clang
34 target_link_libraries(clang
41 set_target_properties(clang PROPERTIES VERSION ${CLANG_EXECUTABLE_VERSION})
44 if(CLANG_PLUGIN_SUPPORT)
45 set_target_properties(clang PROPERTIES ENABLE_EXPORTS 1)
48 add_dependencies(clang clang-headers)
51 set(CLANGXX_LINK_OR_COPY create_symlink)
52 # Create a relative symlink
53 set(clang_binary "clang${CMAKE_EXECUTABLE_SUFFIX}")
55 set(CLANGXX_LINK_OR_COPY copy)
56 set(clang_binary "${LLVM_RUNTIME_OUTPUT_INTDIR}/clang${CMAKE_EXECUTABLE_SUFFIX}")
59 # Create the clang++ symlink in the build directory.
60 set(clang_pp "${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++${CMAKE_EXECUTABLE_SUFFIX}")
61 add_custom_command(TARGET clang POST_BUILD
62 COMMAND ${CMAKE_COMMAND} -E ${CLANGXX_LINK_OR_COPY} "${clang_binary}" "${clang_pp}"
63 WORKING_DIRECTORY "${LLVM_RUNTIME_OUTPUT_INTDIR}")
65 set_property(DIRECTORY APPEND
66 PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${clang_pp})
68 # Create the clang-cl symlink in the build directory.
69 set(clang_cl "${LLVM_RUNTIME_OUTPUT_INTDIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX}")
70 add_custom_command(TARGET clang POST_BUILD
71 COMMAND ${CMAKE_COMMAND} -E ${CLANGXX_LINK_OR_COPY} "${clang_binary}" "${clang_cl}"
72 WORKING_DIRECTORY "${LLVM_RUNTIME_OUTPUT_INTDIR}")
74 set_property(DIRECTORY APPEND
75 PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${clang_cl})
78 RUNTIME DESTINATION bin)
80 # Create the clang++ and clang-cl symlinks at installation time.
81 install(SCRIPT clang_symlink.cmake -DCMAKE_INSTALL_PREFIX=\"${CMAKE_INSTALL_PREFIX}\")
83 # Configure plist creation for OS X.
84 set (TOOL_INFO_PLIST "Info.plist" CACHE STRING "Plist name")
87 set(TOOL_INFO_NAME "${CLANG_VENDOR} clang")
89 set(TOOL_INFO_NAME "clang")
92 set(TOOL_INFO_UTI "${CLANG_VENDOR_UTI}")
93 set(TOOL_INFO_VERSION "${CLANG_VERSION}")
94 if (LLVM_SUBMIT_VERSION)
95 set(TOOL_INFO_BUILD_VERSION
96 "${LLVM_SUBMIT_VERSION}.${LLVM_SUBMIT_SUBVERSION}")
99 set(TOOL_INFO_PLIST_OUT "${CMAKE_CURRENT_BINARY_DIR}/${TOOL_INFO_PLIST}")
100 target_link_libraries(clang
101 "-Wl,-sectcreate,__TEXT,__info_plist,${TOOL_INFO_PLIST_OUT}")
102 configure_file("${TOOL_INFO_PLIST}.in" "${TOOL_INFO_PLIST_OUT}" @ONLY)
106 set(TOOL_INFO_VERSION)
107 set(TOOL_INFO_BUILD_VERSION)
111 target_link_libraries(clang "-Wl,-order_file,${CLANG_ORDER_FILE}")
114 if(WITH_POLLY AND LINK_POLLY_INTO_TOOLS)
115 target_link_libraries(clang Polly)
117 foreach(lib ${POLLY_LINK_LIBS})
118 target_link_libraries(clang ${lib})
120 endif(POLLY_LINK_LIBS)
121 endif(WITH_POLLY AND LINK_POLLY_INTO_TOOLS)