Chandler Carruth | b0d8671 | 2012-06-21 01:30:21 +0000 | [diff] [blame] | 1 | set( LLVM_LINK_COMPONENTS |
| 2 | ${LLVM_TARGETS_TO_BUILD} |
Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 3 | Analysis |
Stephen Hines | c568f1e | 2014-07-21 00:47:37 -0700 | [diff] [blame] | 4 | CodeGen |
Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 5 | Core |
| 6 | IPA |
| 7 | IPO |
| 8 | InstCombine |
| 9 | Instrumentation |
| 10 | MC |
| 11 | MCParser |
| 12 | ObjCARCOpts |
| 13 | Option |
| 14 | ScalarOpts |
| 15 | Support |
| 16 | TransformUtils |
| 17 | Vectorize |
Chandler Carruth | b0d8671 | 2012-06-21 01:30:21 +0000 | [diff] [blame] | 18 | ) |
| 19 | |
Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 20 | option(CLANG_PLUGIN_SUPPORT "Build clang with plugin support" ON) |
| 21 | |
| 22 | # Support plugins. This must be before add_clang_executable as it reads |
| 23 | # LLVM_NO_DEAD_STRIP. |
| 24 | if(CLANG_PLUGIN_SUPPORT) |
| 25 | set(LLVM_NO_DEAD_STRIP 1) |
| 26 | endif() |
| 27 | |
Chandler Carruth | b0d8671 | 2012-06-21 01:30:21 +0000 | [diff] [blame] | 28 | add_clang_executable(clang |
| 29 | driver.cpp |
| 30 | cc1_main.cpp |
| 31 | cc1as_main.cpp |
| 32 | ) |
| 33 | |
| 34 | target_link_libraries(clang |
Jeffrey Yasskin | 0a86d44 | 2011-02-11 23:46:38 +0000 | [diff] [blame] | 35 | clangBasic |
Jeffrey Yasskin | 0a86d44 | 2011-02-11 23:46:38 +0000 | [diff] [blame] | 36 | clangDriver |
| 37 | clangFrontend |
Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 38 | clangFrontendTool |
Daniel Dunbar | cbcd98b | 2009-03-24 02:52:57 +0000 | [diff] [blame] | 39 | ) |
| 40 | |
Douglas Gregor | 8435bf9 | 2011-02-25 19:24:02 +0000 | [diff] [blame] | 41 | set_target_properties(clang PROPERTIES VERSION ${CLANG_EXECUTABLE_VERSION}) |
Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 42 | |
| 43 | # Support plugins. |
| 44 | if(CLANG_PLUGIN_SUPPORT) |
| 45 | set_target_properties(clang PROPERTIES ENABLE_EXPORTS 1) |
| 46 | endif() |
Douglas Gregor | 8435bf9 | 2011-02-25 19:24:02 +0000 | [diff] [blame] | 47 | |
NAKAMURA Takumi | 675a4e1 | 2012-07-20 16:40:09 +0000 | [diff] [blame] | 48 | add_dependencies(clang clang-headers) |
| 49 | |
Douglas Gregor | 6cef99d | 2009-11-19 16:42:34 +0000 | [diff] [blame] | 50 | if(UNIX) |
| 51 | set(CLANGXX_LINK_OR_COPY create_symlink) |
Dylan Noblesmith | 3d9000d | 2012-02-09 20:02:46 +0000 | [diff] [blame] | 52 | # Create a relative symlink |
| 53 | set(clang_binary "clang${CMAKE_EXECUTABLE_SUFFIX}") |
Douglas Gregor | 6cef99d | 2009-11-19 16:42:34 +0000 | [diff] [blame] | 54 | else() |
| 55 | set(CLANGXX_LINK_OR_COPY copy) |
Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 56 | set(clang_binary "${LLVM_RUNTIME_OUTPUT_INTDIR}/clang${CMAKE_EXECUTABLE_SUFFIX}") |
Douglas Gregor | 6cef99d | 2009-11-19 16:42:34 +0000 | [diff] [blame] | 57 | endif() |
| 58 | |
Douglas Gregor | c720a4d | 2009-11-19 05:46:45 +0000 | [diff] [blame] | 59 | # Create the clang++ symlink in the build directory. |
Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 60 | set(clang_pp "${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++${CMAKE_EXECUTABLE_SUFFIX}") |
Peter Collingbourne | 82c3460 | 2011-11-21 00:00:48 +0000 | [diff] [blame] | 61 | add_custom_command(TARGET clang POST_BUILD |
Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 62 | COMMAND ${CMAKE_COMMAND} -E ${CLANGXX_LINK_OR_COPY} "${clang_binary}" "${clang_pp}" |
| 63 | WORKING_DIRECTORY "${LLVM_RUNTIME_OUTPUT_INTDIR}") |
Douglas Gregor | 8435bf9 | 2011-02-25 19:24:02 +0000 | [diff] [blame] | 64 | |
Oscar Fuentes | 839e61a | 2011-02-05 21:37:37 +0000 | [diff] [blame] | 65 | set_property(DIRECTORY APPEND |
| 66 | PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${clang_pp}) |
Douglas Gregor | c720a4d | 2009-11-19 05:46:45 +0000 | [diff] [blame] | 67 | |
Hans Wennborg | c2f531a | 2013-07-19 20:33:20 +0000 | [diff] [blame] | 68 | # Create the clang-cl symlink in the build directory. |
Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 69 | set(clang_cl "${LLVM_RUNTIME_OUTPUT_INTDIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX}") |
Hans Wennborg | c2f531a | 2013-07-19 20:33:20 +0000 | [diff] [blame] | 70 | add_custom_command(TARGET clang POST_BUILD |
Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 71 | COMMAND ${CMAKE_COMMAND} -E ${CLANGXX_LINK_OR_COPY} "${clang_binary}" "${clang_cl}" |
| 72 | WORKING_DIRECTORY "${LLVM_RUNTIME_OUTPUT_INTDIR}") |
Hans Wennborg | c2f531a | 2013-07-19 20:33:20 +0000 | [diff] [blame] | 73 | |
| 74 | set_property(DIRECTORY APPEND |
| 75 | PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${clang_cl}) |
| 76 | |
Douglas Gregor | 7f7b748 | 2009-08-23 05:28:29 +0000 | [diff] [blame] | 77 | install(TARGETS clang |
| 78 | RUNTIME DESTINATION bin) |
Douglas Gregor | c720a4d | 2009-11-19 05:46:45 +0000 | [diff] [blame] | 79 | |
Hans Wennborg | c2f531a | 2013-07-19 20:33:20 +0000 | [diff] [blame] | 80 | # Create the clang++ and clang-cl symlinks at installation time. |
Oscar Fuentes | fbfe899 | 2010-10-17 16:10:32 +0000 | [diff] [blame] | 81 | install(SCRIPT clang_symlink.cmake -DCMAKE_INSTALL_PREFIX=\"${CMAKE_INSTALL_PREFIX}\") |
Michael Gottesman | 4857638 | 2013-08-20 07:09:51 +0000 | [diff] [blame] | 82 | |
| 83 | # Configure plist creation for OS X. |
| 84 | set (TOOL_INFO_PLIST "Info.plist" CACHE STRING "Plist name") |
| 85 | if (APPLE) |
| 86 | if (CLANG_VENDOR) |
| 87 | set(TOOL_INFO_NAME "${CLANG_VENDOR} clang") |
| 88 | else() |
| 89 | set(TOOL_INFO_NAME "clang") |
| 90 | endif() |
| 91 | |
| 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}") |
| 97 | endif() |
| 98 | |
| 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) |
| 103 | |
| 104 | set(TOOL_INFO_UTI) |
| 105 | set(TOOL_INFO_NAME) |
| 106 | set(TOOL_INFO_VERSION) |
| 107 | set(TOOL_INFO_BUILD_VERSION) |
| 108 | endif() |
Michael Gottesman | f65456f | 2013-08-20 07:41:18 +0000 | [diff] [blame] | 109 | |
| 110 | if(CLANG_ORDER_FILE) |
| 111 | target_link_libraries(clang "-Wl,-order_file,${CLANG_ORDER_FILE}") |
| 112 | endif() |
| 113 | |
Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 114 | if(WITH_POLLY AND LINK_POLLY_INTO_TOOLS) |
| 115 | target_link_libraries(clang Polly) |
| 116 | if(POLLY_LINK_LIBS) |
| 117 | foreach(lib ${POLLY_LINK_LIBS}) |
| 118 | target_link_libraries(clang ${lib}) |
| 119 | endforeach(lib) |
| 120 | endif(POLLY_LINK_LIBS) |
| 121 | endif(WITH_POLLY AND LINK_POLLY_INTO_TOOLS) |