• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1set(SOURCES
2  ARCMigrate.cpp
3  BuildSystem.cpp
4  CIndex.cpp
5  CIndexCXX.cpp
6  CIndexCodeCompletion.cpp
7  CIndexDiagnostic.cpp
8  CIndexHigh.cpp
9  CIndexInclusionStack.cpp
10  CIndexUSRs.cpp
11  CIndexer.cpp
12  CXComment.cpp
13  CXCursor.cpp
14  CXCompilationDatabase.cpp
15  CXLoadedDiagnostic.cpp
16  CXSourceLocation.cpp
17  CXStoredDiagnostic.cpp
18  CXString.cpp
19  CXType.cpp
20  IndexBody.cpp
21  IndexDecl.cpp
22  IndexTypeSourceInfo.cpp
23  Indexing.cpp
24  IndexingContext.cpp
25
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
36  IndexingContext.h
37  ../../include/clang-c/Index.h
38  )
39
40set(LIBS
41  clangAST
42  clangBasic
43  clangFrontend
44  clangIndex
45  clangLex
46  clangSema
47  clangTooling
48)
49
50if (CLANG_ENABLE_ARCMT)
51  list(APPEND LIBS clangARCMigrate)
52endif ()
53
54find_library(DL_LIBRARY_PATH dl)
55if (DL_LIBRARY_PATH)
56  list(APPEND LIBS dl)
57endif()
58
59option(LIBCLANG_BUILD_STATIC
60  "Build libclang as a static library (in addition to a shared one)" OFF)
61
62set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/libclang.exports)
63
64if(MSVC)
65  # Avoid LNK4197 not to spceify libclang.def here.
66  # Each functions is exported as "dllexport" in include/clang-c.
67  # KB835326
68  set(LLVM_EXPORTED_SYMBOL_FILE)
69endif()
70
71if( LLVM_ENABLE_PIC )
72  set(ENABLE_SHARED SHARED)
73endif()
74
75if((NOT LLVM_ENABLE_PIC OR LIBCLANG_BUILD_STATIC) AND NOT WIN32)
76  set(ENABLE_STATIC STATIC)
77endif()
78
79if(WIN32)
80  set(output_name "libclang")
81else()
82  set(output_name "clang")
83endif()
84
85add_clang_library(libclang ${ENABLE_SHARED} ${ENABLE_STATIC}
86  OUTPUT_NAME ${output_name}
87  ${SOURCES}
88  DEPENDS clang-headers
89
90  LINK_LIBS
91  ${LIBS}
92
93  LINK_COMPONENTS
94  ${LLVM_TARGETS_TO_BUILD}
95  Core
96  Support
97  )
98
99if(ENABLE_SHARED)
100  if(WIN32)
101    set_target_properties(libclang
102      PROPERTIES
103      VERSION ${LIBCLANG_LIBRARY_VERSION}
104      DEFINE_SYMBOL _CINDEX_LIB_)
105  elseif(APPLE)
106    set(LIBCLANG_LINK_FLAGS " -Wl,-compatibility_version -Wl,1")
107    set(LIBCLANG_LINK_FLAGS "${LIBCLANG_LINK_FLAGS} -Wl,-current_version -Wl,${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}")
108
109    set_property(TARGET libclang APPEND_STRING PROPERTY
110                 LINK_FLAGS ${LIBCLANG_LINK_FLAGS})
111  else()
112    set_target_properties(libclang
113      PROPERTIES
114      VERSION ${LIBCLANG_LIBRARY_VERSION}
115      DEFINE_SYMBOL _CINDEX_LIB_)
116  endif()
117endif()
118