CMakeLists.txt revision 86cfda2fcccc84e92fb7f27e85b58312440ca8de
1set(LLVM_LINK_COMPONENTS
2  ${LLVM_TARGETS_TO_BUILD}
3  asmparser
4  support
5  bitreader
6  mc
7  )
8
9set(SOURCES
10  ARCMigrate.cpp
11  CIndex.cpp
12  CIndexCXX.cpp
13  CIndexCodeCompletion.cpp
14  CIndexDiagnostic.cpp
15  CIndexDiagnostic.h
16  CIndexHigh.cpp
17  CIndexInclusionStack.cpp
18  CIndexUSRs.cpp
19  CIndexer.cpp
20  CIndexer.h
21  CXComment.cpp
22  CXCursor.cpp
23  CXCursor.h
24  CXCompilationDatabase.cpp
25  CXLoadedDiagnostic.cpp
26  CXLoadedDiagnostic.h
27  CXSourceLocation.cpp
28  CXSourceLocation.h
29  CXStoredDiagnostic.cpp
30  CXString.cpp
31  CXString.h
32  CXTranslationUnit.h
33  CXType.cpp
34  CXType.h
35  IndexBody.cpp
36  IndexDecl.cpp
37  IndexTypeSourceInfo.cpp
38  Index_Internal.h
39  Indexing.cpp
40  IndexingContext.cpp
41  IndexingContext.h
42  ../../include/clang-c/Index.h
43  )
44
45set(LIBRARIES
46  clangIndex
47  clangARCMigrate
48  clangRewriteCore
49  clangRewriteFrontend
50  clangFrontend
51  clangDriver
52  clangSerialization
53  clangSema
54  clangEdit
55  clangAST
56  clangLex
57  clangTooling
58  clangBasic
59  clangFormat
60  )
61
62set(GENERATED_HEADERS
63  ClangAttrClasses
64  ClangAttrList
65  ClangAttrParsedAttrList
66  ClangCommentNodes
67  ClangDiagnosticCommon
68  ClangDiagnosticFrontend
69  ClangDeclNodes
70  ClangStmtNodes
71  )
72
73set(EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/libclang.exports)
74
75if( LLVM_ENABLE_PIC )
76  set(SHARED_LIBRARY TRUE)
77  add_clang_library(libclang ${SOURCES})
78  target_link_libraries(libclang ${LIBRARIES})
79  add_dependencies(libclang ${GENERATED_HEADERS} clang-headers)
80
81  if(WIN32)
82    set_target_properties(libclang
83      PROPERTIES
84      OUTPUT_NAME "libclang"
85      VERSION ${LIBCLANG_LIBRARY_VERSION}
86      DEFINE_SYMBOL _CINDEX_LIB_)
87  else()
88    set_target_properties(libclang
89      PROPERTIES
90      OUTPUT_NAME "clang"
91      VERSION ${LIBCLANG_LIBRARY_VERSION}
92      DEFINE_SYMBOL _CINDEX_LIB_)
93  endif()
94
95  if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
96    set(LIBCLANG_LINK_FLAGS
97      " -Wl,-compatibility_version -Wl,1 -Wl,-dead_strip")
98    if (DEFINED ${LLVM_SUBMIT_VERSION})
99      set(LIBCLANG_LINK_FLAGS
100        "${LIBCLANG_LINK_FLAGS} -Wl,-current_version -Wl,${LLVM_SUBMIT_VERSION}.${LLVM_SUBMIT_SUBVERSION}")
101    endif()
102
103    set_property(TARGET libclang APPEND_STRING PROPERTY
104                 LINK_FLAGS ${LIBCLANG_LINK_FLAGS})
105    set_target_properties(libclang
106      PROPERTIES
107      INSTALL_NAME_DIR "@rpath")
108  endif()
109
110
111  set(LIBCLANG_STATIC_TARGET_NAME libclang_static)
112else()
113  set(LIBCLANG_STATIC_TARGET_NAME libclang)
114endif()
115
116option(LIBCLANG_BUILD_STATIC
117  "Build libclang as a static library (in addition to a shared one)" OFF)
118
119if( (NOT LLVM_ENABLE_PIC OR LIBCLANG_BUILD_STATIC) AND NOT WIN32 )
120  add_clang_library(${LIBCLANG_STATIC_TARGET_NAME} STATIC ${SOURCES})
121  target_link_libraries(${LIBCLANG_STATIC_TARGET_NAME} ${LIBRARIES})
122  add_dependencies(${LIBCLANG_STATIC_TARGET_NAME} ${GENERATED_HEADERS} clang-headers)
123
124  set_target_properties(${LIBCLANG_STATIC_TARGET_NAME}
125    PROPERTIES
126    OUTPUT_NAME "clang")
127endif()
128