set( LLVM_LINK_COMPONENTS ${LLVM_TARGETS_TO_BUILD} Analysis CodeGen Core IPA IPO InstCombine Instrumentation MC MCParser ObjCARCOpts Option ScalarOpts Support TransformUtils Vectorize ) option(CLANG_PLUGIN_SUPPORT "Build clang with plugin support" ON) # Support plugins. This must be before add_clang_executable as it reads # LLVM_NO_DEAD_STRIP. if(CLANG_PLUGIN_SUPPORT) set(LLVM_NO_DEAD_STRIP 1) endif() add_clang_executable(clang driver.cpp cc1_main.cpp cc1as_main.cpp ) target_link_libraries(clang clangBasic clangDriver clangFrontend clangFrontendTool ) set_target_properties(clang PROPERTIES VERSION ${CLANG_EXECUTABLE_VERSION}) # Support plugins. if(CLANG_PLUGIN_SUPPORT) export_executable_symbols(clang) endif() add_dependencies(clang clang-headers) if(UNIX) set(CLANGXX_LINK_OR_COPY create_symlink) # Create a relative symlink set(clang_binary "clang${CMAKE_EXECUTABLE_SUFFIX}") else() set(CLANGXX_LINK_OR_COPY copy) set(clang_binary "${LLVM_RUNTIME_OUTPUT_INTDIR}/clang${CMAKE_EXECUTABLE_SUFFIX}") endif() # Create the clang++ symlink in the build directory. set(clang_pp "${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++${CMAKE_EXECUTABLE_SUFFIX}") add_custom_command(TARGET clang POST_BUILD COMMAND ${CMAKE_COMMAND} -E ${CLANGXX_LINK_OR_COPY} "${clang_binary}" "${clang_pp}" WORKING_DIRECTORY "${LLVM_RUNTIME_OUTPUT_INTDIR}") set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${clang_pp}) # Create the clang-cl symlink in the build directory. set(clang_cl "${LLVM_RUNTIME_OUTPUT_INTDIR}/clang-cl${CMAKE_EXECUTABLE_SUFFIX}") add_custom_command(TARGET clang POST_BUILD COMMAND ${CMAKE_COMMAND} -E ${CLANGXX_LINK_OR_COPY} "${clang_binary}" "${clang_cl}" WORKING_DIRECTORY "${LLVM_RUNTIME_OUTPUT_INTDIR}") set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${clang_cl}) install(TARGETS clang RUNTIME DESTINATION bin) # Create the clang++ and clang-cl symlinks at installation time. install(SCRIPT clang_symlink.cmake -DCMAKE_INSTALL_PREFIX=\"${CMAKE_INSTALL_PREFIX}\") # Configure plist creation for OS X. set (TOOL_INFO_PLIST "Info.plist" CACHE STRING "Plist name") if (APPLE) if (CLANG_VENDOR) set(TOOL_INFO_NAME "${CLANG_VENDOR} clang") else() set(TOOL_INFO_NAME "clang") endif() set(TOOL_INFO_UTI "${CLANG_VENDOR_UTI}") set(TOOL_INFO_VERSION "${CLANG_VERSION}") if (LLVM_SUBMIT_VERSION) set(TOOL_INFO_BUILD_VERSION "${LLVM_SUBMIT_VERSION}.${LLVM_SUBMIT_SUBVERSION}") endif() set(TOOL_INFO_PLIST_OUT "${CMAKE_CURRENT_BINARY_DIR}/${TOOL_INFO_PLIST}") target_link_libraries(clang "-Wl,-sectcreate,__TEXT,__info_plist,${TOOL_INFO_PLIST_OUT}") configure_file("${TOOL_INFO_PLIST}.in" "${TOOL_INFO_PLIST_OUT}" @ONLY) set(TOOL_INFO_UTI) set(TOOL_INFO_NAME) set(TOOL_INFO_VERSION) set(TOOL_INFO_BUILD_VERSION) endif() if(CLANG_ORDER_FILE) target_link_libraries(clang "-Wl,-order_file,${CLANG_ORDER_FILE}") endif() if(WITH_POLLY AND LINK_POLLY_INTO_TOOLS) target_link_libraries(clang Polly) if(POLLY_LINK_LIBS) foreach(lib ${POLLY_LINK_LIBS}) target_link_libraries(clang ${lib}) endforeach(lib) endif(POLLY_LINK_LIBS) endif(WITH_POLLY AND LINK_POLLY_INTO_TOOLS)