1set( LLVM_LINK_COMPONENTS 2 ${LLVM_TARGETS_TO_BUILD} 3 asmparser 4 bitreader 5 bitwriter 6 irreader 7 codegen 8 instrumentation 9 ipo 10 linker 11 selectiondag 12 ) 13 14add_clang_executable(clang 15 driver.cpp 16 cc1_main.cpp 17 cc1as_main.cpp 18 ) 19 20target_link_libraries(clang 21 clangFrontendTool 22 clangAST 23 clangAnalysis 24 clangBasic 25 clangCodeGen 26 clangDriver 27 clangEdit 28 clangFrontend 29 clangLex 30 clangParse 31 clangEdit 32 clangSema 33 clangSerialization 34 ) 35 36if(CLANG_ENABLE_STATIC_ANALYZER) 37 target_link_libraries(clang 38 clangStaticAnalyzerFrontend 39 clangStaticAnalyzerCheckers 40 clangStaticAnalyzerCore 41 ) 42endif() 43 44if(CLANG_ENABLE_ARCMT) 45 target_link_libraries(clang 46 clangARCMigrate 47 ) 48endif() 49 50if(CLANG_ENABLE_REWRITER) 51 target_link_libraries(clang 52 clangRewriteCore 53 clangRewriteFrontend 54 ) 55endif() 56 57set_target_properties(clang PROPERTIES VERSION ${CLANG_EXECUTABLE_VERSION}) 58set_target_properties(clang PROPERTIES ENABLE_EXPORTS 1) 59 60add_dependencies(clang clang-headers) 61 62if(UNIX) 63 set(CLANGXX_LINK_OR_COPY create_symlink) 64# Create a relative symlink 65 set(clang_binary "clang${CMAKE_EXECUTABLE_SUFFIX}") 66else() 67 set(CLANGXX_LINK_OR_COPY copy) 68 set(clang_binary "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}/clang${CMAKE_EXECUTABLE_SUFFIX}") 69endif() 70 71# Create the clang++ symlink in the build directory. 72set(clang_pp "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}/clang++${CMAKE_EXECUTABLE_SUFFIX}") 73add_custom_command(TARGET clang POST_BUILD 74 COMMAND ${CMAKE_COMMAND} -E ${CLANGXX_LINK_OR_COPY} "${clang_binary}" "${clang_pp}") 75 76set_property(DIRECTORY APPEND 77 PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${clang_pp}) 78 79# Create the clang-cl symlink in the build directory. 80set(clang_cl "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX}") 81add_custom_command(TARGET clang POST_BUILD 82 COMMAND ${CMAKE_COMMAND} -E ${CLANGXX_LINK_OR_COPY} "${clang_binary}" "${clang_cl}") 83 84set_property(DIRECTORY APPEND 85 PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${clang_cl}) 86 87install(TARGETS clang 88 RUNTIME DESTINATION bin) 89 90# Create the clang++ and clang-cl symlinks at installation time. 91install(SCRIPT clang_symlink.cmake -DCMAKE_INSTALL_PREFIX=\"${CMAKE_INSTALL_PREFIX}\") 92 93# Configure plist creation for OS X. 94set (TOOL_INFO_PLIST "Info.plist" CACHE STRING "Plist name") 95if (APPLE) 96 if (CLANG_VENDOR) 97 set(TOOL_INFO_NAME "${CLANG_VENDOR} clang") 98 else() 99 set(TOOL_INFO_NAME "clang") 100 endif() 101 102 set(TOOL_INFO_UTI "${CLANG_VENDOR_UTI}") 103 set(TOOL_INFO_VERSION "${CLANG_VERSION}") 104 if (LLVM_SUBMIT_VERSION) 105 set(TOOL_INFO_BUILD_VERSION 106 "${LLVM_SUBMIT_VERSION}.${LLVM_SUBMIT_SUBVERSION}") 107 endif() 108 109 set(TOOL_INFO_PLIST_OUT "${CMAKE_CURRENT_BINARY_DIR}/${TOOL_INFO_PLIST}") 110 target_link_libraries(clang 111 "-Wl,-sectcreate,__TEXT,__info_plist,${TOOL_INFO_PLIST_OUT}") 112 configure_file("${TOOL_INFO_PLIST}.in" "${TOOL_INFO_PLIST_OUT}" @ONLY) 113 114 set(TOOL_INFO_UTI) 115 set(TOOL_INFO_NAME) 116 set(TOOL_INFO_VERSION) 117 set(TOOL_INFO_BUILD_VERSION) 118endif() 119 120if(CLANG_ORDER_FILE) 121 target_link_libraries(clang "-Wl,-order_file,${CLANG_ORDER_FILE}") 122endif() 123 124