blob: ae49ac1eeb6814d16871e3e0bd1346243ae66922 [file] [log] [blame]
Michael J. Spencer560a9212010-09-13 23:54:41 +00001set( LLVM_USED_LIBS
Peter Collingbourne22a7dfe2011-10-30 17:30:44 +00002 clangFrontendTool
Jeffrey Yasskin0a86d442011-02-11 23:46:38 +00003 clangAST
4 clangAnalysis
5 clangBasic
Daniel Dunbar21085772009-12-11 22:20:12 +00006 clangCodeGen
Jeffrey Yasskin0a86d442011-02-11 23:46:38 +00007 clangDriver
Ted Kremenek30660a82012-03-06 20:06:33 +00008 clangEdit
Jeffrey Yasskin0a86d442011-02-11 23:46:38 +00009 clangFrontend
Jeffrey Yasskin0a86d442011-02-11 23:46:38 +000010 clangLex
John McCall19510852010-08-20 18:27:03 +000011 clangParse
Ted Kremenek30660a82012-03-06 20:06:33 +000012 clangEdit
John McCall8f0e8d22011-06-15 23:25:17 +000013 clangARCMigrate
Jeffrey Yasskin0a86d442011-02-11 23:46:38 +000014 clangRewrite
Chandler Carruthe89d1d52010-01-29 10:03:42 +000015 clangSema
Jeffrey Yasskin0a86d442011-02-11 23:46:38 +000016 clangSerialization
Argyrios Kyrtzidise8177712011-02-14 18:13:01 +000017 clangStaticAnalyzerFrontend
Ted Kremenek21142582010-12-23 19:38:26 +000018 clangStaticAnalyzerCheckers
19 clangStaticAnalyzerCore
Daniel Dunbarcbcd98b2009-03-24 02:52:57 +000020 )
21
Michael J. Spencer560a9212010-09-13 23:54:41 +000022set( LLVM_LINK_COMPONENTS
23 ${LLVM_TARGETS_TO_BUILD}
24 asmparser
25 bitreader
26 bitwriter
27 codegen
Nick Lewyckye8ba8d72011-04-21 23:44:07 +000028 instrumentation
Michael J. Spencer560a9212010-09-13 23:54:41 +000029 ipo
Peter Collingbourne22a7dfe2011-10-30 17:30:44 +000030 linker
Michael J. Spencer560a9212010-09-13 23:54:41 +000031 selectiondag
32 )
33
34add_clang_executable(clang
35 driver.cpp
36 cc1_main.cpp
37 cc1as_main.cpp
38 )
39
Douglas Gregor8435bf92011-02-25 19:24:02 +000040set_target_properties(clang PROPERTIES VERSION ${CLANG_EXECUTABLE_VERSION})
41
Douglas Gregor6cef99d2009-11-19 16:42:34 +000042if(UNIX)
43 set(CLANGXX_LINK_OR_COPY create_symlink)
Dylan Noblesmith3d9000d2012-02-09 20:02:46 +000044# Create a relative symlink
45 set(clang_binary "clang${CMAKE_EXECUTABLE_SUFFIX}")
Douglas Gregor6cef99d2009-11-19 16:42:34 +000046else()
47 set(CLANGXX_LINK_OR_COPY copy)
Dylan Noblesmith3d9000d2012-02-09 20:02:46 +000048 set(clang_binary "${LLVM_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/clang${CMAKE_EXECUTABLE_SUFFIX}")
Douglas Gregor6cef99d2009-11-19 16:42:34 +000049endif()
50
Douglas Gregorc720a4d2009-11-19 05:46:45 +000051# Create the clang++ symlink in the build directory.
Oscar Fuentesaadd04c2011-02-06 15:33:08 +000052set(clang_pp "${LLVM_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/clang++${CMAKE_EXECUTABLE_SUFFIX}")
Peter Collingbourne82c34602011-11-21 00:00:48 +000053add_custom_command(TARGET clang POST_BUILD
Dylan Noblesmith3d9000d2012-02-09 20:02:46 +000054 COMMAND ${CMAKE_COMMAND} -E ${CLANGXX_LINK_OR_COPY} "${clang_binary}" "${clang_pp}")
Douglas Gregor8435bf92011-02-25 19:24:02 +000055
Oscar Fuentes839e61a2011-02-05 21:37:37 +000056set_property(DIRECTORY APPEND
57 PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${clang_pp})
Douglas Gregorc720a4d2009-11-19 05:46:45 +000058
Douglas Gregor7f7b7482009-08-23 05:28:29 +000059install(TARGETS clang
60 RUNTIME DESTINATION bin)
Douglas Gregorc720a4d2009-11-19 05:46:45 +000061
62# Create the clang++ symlink at installation time.
Oscar Fuentesfbfe8992010-10-17 16:10:32 +000063install(SCRIPT clang_symlink.cmake -DCMAKE_INSTALL_PREFIX=\"${CMAKE_INSTALL_PREFIX}\")