blob: d6bbbf8a7ac4fdb287c221e5134aff54a3c35cc7 [file] [log] [blame]
Oscar Fuentes72216102011-03-13 15:10:24 +00001set(SOURCES
Argyrios Kyrtzidis7fbd97f2011-07-09 20:00:58 +00002 ARCMigrate.cpp
Dmitri Gribenkof430da42014-02-12 10:33:14 +00003 BuildSystem.cpp
Ted Kremenek0ec2cca2010-01-05 19:32:54 +00004 CIndex.cpp
Ted Kremenekae9e2212010-08-27 21:34:58 +00005 CIndexCXX.cpp
Ted Kremenek9cd9f6d2010-01-05 22:06:45 +00006 CIndexCodeCompletion.cpp
Douglas Gregor4f9c3762010-01-28 00:27:43 +00007 CIndexDiagnostic.cpp
Argyrios Kyrtzidiscddafd32011-10-06 07:00:54 +00008 CIndexHigh.cpp
Ted Kremenek0b86e3a2010-01-26 19:31:51 +00009 CIndexInclusionStack.cpp
Ted Kremenek9cd9f6d2010-01-05 22:06:45 +000010 CIndexUSRs.cpp
Ted Kremenek0ec2cca2010-01-05 19:32:54 +000011 CIndexer.cpp
Dmitri Gribenko5e4fe002012-07-20 21:34:34 +000012 CXComment.cpp
Ted Kremenek87553c42010-01-15 20:35:54 +000013 CXCursor.cpp
Arnaud A. de Grandmaison2b3c8602012-06-30 20:43:43 +000014 CXCompilationDatabase.cpp
Ted Kremenekd010ba42011-11-10 08:43:12 +000015 CXLoadedDiagnostic.cpp
Ted Kremenek4c4f08d2011-10-31 22:05:42 +000016 CXSourceLocation.cpp
Ted Kremenekbb2c7102011-10-31 21:40:19 +000017 CXStoredDiagnostic.cpp
Ted Kremenek4b4f3692010-11-16 01:56:27 +000018 CXString.cpp
Ted Kremeneka5940822010-08-26 01:42:22 +000019 CXType.cpp
Argyrios Kyrtzidisdc199a32011-10-17 19:48:19 +000020 IndexBody.cpp
21 IndexDecl.cpp
22 IndexTypeSourceInfo.cpp
23 Indexing.cpp
24 IndexingContext.cpp
NAKAMURA Takumibf6d1ef2014-01-20 10:24:05 +000025
26 ADDITIONAL_HEADERS
27 CIndexDiagnostic.h
28 CIndexer.h
29 CXCursor.h
30 CXLoadedDiagnostic.h
31 CXSourceLocation.h
32 CXString.h
33 CXTranslationUnit.h
34 CXType.h
35 Index_Internal.h
Ted Kremenekbb2c7102011-10-31 21:40:19 +000036 IndexingContext.h
Douglas Gregor4db30232010-02-18 04:01:41 +000037 ../../include/clang-c/Index.h
Oscar Fuentes72216102011-03-13 15:10:24 +000038 )
Douglas Gregor43bc1a72009-09-25 06:35:15 +000039
NAKAMURA Takumi742b90c2014-01-23 15:33:50 +000040option(LIBCLANG_BUILD_STATIC
41 "Build libclang as a static library (in addition to a shared one)" OFF)
42
Nico Weber5f676dc2013-12-29 19:31:48 +000043set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/libclang.exports)
Argyrios Kyrtzidis08b04182013-11-06 08:37:50 +000044
NAKAMURA Takumi9f2538d2014-01-22 13:02:59 +000045if(MSVC)
46 # Avoid LNK4197 not to spceify libclang.def here.
47 # Each functions is exported as "dllexport" in include/clang-c.
48 # KB835326
49 set(LLVM_EXPORTED_SYMBOL_FILE)
50endif()
51
Oscar Fuentes72216102011-03-13 15:10:24 +000052if( LLVM_ENABLE_PIC )
NAKAMURA Takumi959c64b2014-02-21 15:34:01 +000053 set(ENABLE_SHARED SHARED)
54endif()
Douglas Gregorb1cf1ca2010-08-02 20:52:32 +000055
NAKAMURA Takumi959c64b2014-02-21 15:34:01 +000056if((NOT LLVM_ENABLE_PIC OR LIBCLANG_BUILD_STATIC) AND NOT WIN32)
57 set(ENABLE_STATIC STATIC)
58endif()
59
60if(WIN32)
61 set(output_name "libclang")
62else()
63 set(output_name "clang")
64endif()
65
66add_clang_library(libclang ${ENABLE_SHARED} ${ENABLE_STATIC}
67 OUTPUT_NAME ${output_name}
68 ${SOURCES}
69 DEPENDS clang-headers
70
71 LINK_LIBS
72 clangARCMigrate
73 clangAST
74 clangBasic
75 clangFrontend
76 clangIndex
77 clangLex
78 clangSema
79 clangTooling
80
81 LINK_COMPONENTS
82 BitReader
83 Support
84 )
85
86if(ENABLE_SHARED)
Manuel Klimek4fa6b602012-05-15 08:58:48 +000087 if(WIN32)
88 set_target_properties(libclang
89 PROPERTIES
Manuel Klimek4fa6b602012-05-15 08:58:48 +000090 VERSION ${LIBCLANG_LIBRARY_VERSION}
91 DEFINE_SYMBOL _CINDEX_LIB_)
92 else()
93 set_target_properties(libclang
94 PROPERTIES
Manuel Klimek4fa6b602012-05-15 08:58:48 +000095 VERSION ${LIBCLANG_LIBRARY_VERSION}
96 DEFINE_SYMBOL _CINDEX_LIB_)
97 endif()
Oscar Fuentes72216102011-03-13 15:10:24 +000098
99 if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
Nico Weber194c0092013-12-30 03:43:30 +0000100 set(LIBCLANG_LINK_FLAGS " -Wl,-compatibility_version -Wl,1")
Argyrios Kyrtzidis08b04182013-11-06 08:37:50 +0000101 if (DEFINED ${LLVM_SUBMIT_VERSION})
102 set(LIBCLANG_LINK_FLAGS
103 "${LIBCLANG_LINK_FLAGS} -Wl,-current_version -Wl,${LLVM_SUBMIT_VERSION}.${LLVM_SUBMIT_SUBVERSION}")
104 endif()
105
106 set_property(TARGET libclang APPEND_STRING PROPERTY
107 LINK_FLAGS ${LIBCLANG_LINK_FLAGS})
Oscar Fuentes72216102011-03-13 15:10:24 +0000108 endif()
Oscar Fuentes72216102011-03-13 15:10:24 +0000109endif()