blob: c4c864bdbf5bc302d5269d55c27e9b895fb0a369 [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 clangIndex
11 clangLex
John McCall19510852010-08-20 18:27:03 +000012 clangParse
Ted Kremenek30660a82012-03-06 20:06:33 +000013 clangEdit
John McCall8f0e8d22011-06-15 23:25:17 +000014 clangARCMigrate
Jeffrey Yasskin0a86d442011-02-11 23:46:38 +000015 clangRewrite
Chandler Carruthe89d1d52010-01-29 10:03:42 +000016 clangSema
Jeffrey Yasskin0a86d442011-02-11 23:46:38 +000017 clangSerialization
Argyrios Kyrtzidise8177712011-02-14 18:13:01 +000018 clangStaticAnalyzerFrontend
Ted Kremenek21142582010-12-23 19:38:26 +000019 clangStaticAnalyzerCheckers
20 clangStaticAnalyzerCore
Daniel Dunbarcbcd98b2009-03-24 02:52:57 +000021 )
22
Michael J. Spencer560a9212010-09-13 23:54:41 +000023set( LLVM_LINK_COMPONENTS
24 ${LLVM_TARGETS_TO_BUILD}
25 asmparser
26 bitreader
27 bitwriter
28 codegen
Nick Lewyckye8ba8d72011-04-21 23:44:07 +000029 instrumentation
Michael J. Spencer560a9212010-09-13 23:54:41 +000030 ipo
Peter Collingbourne22a7dfe2011-10-30 17:30:44 +000031 linker
Michael J. Spencer560a9212010-09-13 23:54:41 +000032 selectiondag
33 )
34
35add_clang_executable(clang
36 driver.cpp
37 cc1_main.cpp
38 cc1as_main.cpp
39 )
40
Douglas Gregor8435bf92011-02-25 19:24:02 +000041set_target_properties(clang PROPERTIES VERSION ${CLANG_EXECUTABLE_VERSION})
42
Douglas Gregor6cef99d2009-11-19 16:42:34 +000043if(UNIX)
44 set(CLANGXX_LINK_OR_COPY create_symlink)
Dylan Noblesmith3d9000d2012-02-09 20:02:46 +000045# Create a relative symlink
46 set(clang_binary "clang${CMAKE_EXECUTABLE_SUFFIX}")
Douglas Gregor6cef99d2009-11-19 16:42:34 +000047else()
48 set(CLANGXX_LINK_OR_COPY copy)
Dylan Noblesmith3d9000d2012-02-09 20:02:46 +000049 set(clang_binary "${LLVM_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/clang${CMAKE_EXECUTABLE_SUFFIX}")
Douglas Gregor6cef99d2009-11-19 16:42:34 +000050endif()
51
Douglas Gregorc720a4d2009-11-19 05:46:45 +000052# Create the clang++ symlink in the build directory.
Oscar Fuentesaadd04c2011-02-06 15:33:08 +000053set(clang_pp "${LLVM_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/clang++${CMAKE_EXECUTABLE_SUFFIX}")
Peter Collingbourne82c34602011-11-21 00:00:48 +000054add_custom_command(TARGET clang POST_BUILD
Dylan Noblesmith3d9000d2012-02-09 20:02:46 +000055 COMMAND ${CMAKE_COMMAND} -E ${CLANGXX_LINK_OR_COPY} "${clang_binary}" "${clang_pp}")
Douglas Gregor8435bf92011-02-25 19:24:02 +000056
Oscar Fuentes839e61a2011-02-05 21:37:37 +000057set_property(DIRECTORY APPEND
58 PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${clang_pp})
Douglas Gregorc720a4d2009-11-19 05:46:45 +000059
Douglas Gregor7f7b7482009-08-23 05:28:29 +000060install(TARGETS clang
61 RUNTIME DESTINATION bin)
Douglas Gregorc720a4d2009-11-19 05:46:45 +000062
63# Create the clang++ symlink at installation time.
Oscar Fuentesfbfe8992010-10-17 16:10:32 +000064install(SCRIPT clang_symlink.cmake -DCMAKE_INSTALL_PREFIX=\"${CMAKE_INSTALL_PREFIX}\")