xref: /aosp_15_r20/external/clang/tools/libclang/CMakeLists.txt (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Liset(SOURCES
2*67e74705SXin Li  ARCMigrate.cpp
3*67e74705SXin Li  BuildSystem.cpp
4*67e74705SXin Li  CIndex.cpp
5*67e74705SXin Li  CIndexCXX.cpp
6*67e74705SXin Li  CIndexCodeCompletion.cpp
7*67e74705SXin Li  CIndexDiagnostic.cpp
8*67e74705SXin Li  CIndexHigh.cpp
9*67e74705SXin Li  CIndexInclusionStack.cpp
10*67e74705SXin Li  CIndexUSRs.cpp
11*67e74705SXin Li  CIndexer.cpp
12*67e74705SXin Li  CXComment.cpp
13*67e74705SXin Li  CXCursor.cpp
14*67e74705SXin Li  CXIndexDataConsumer.cpp
15*67e74705SXin Li  CXCompilationDatabase.cpp
16*67e74705SXin Li  CXLoadedDiagnostic.cpp
17*67e74705SXin Li  CXSourceLocation.cpp
18*67e74705SXin Li  CXStoredDiagnostic.cpp
19*67e74705SXin Li  CXString.cpp
20*67e74705SXin Li  CXType.cpp
21*67e74705SXin Li  Indexing.cpp
22*67e74705SXin Li
23*67e74705SXin Li  ADDITIONAL_HEADERS
24*67e74705SXin Li  CIndexDiagnostic.h
25*67e74705SXin Li  CIndexer.h
26*67e74705SXin Li  CXCursor.h
27*67e74705SXin Li  CXLoadedDiagnostic.h
28*67e74705SXin Li  CXSourceLocation.h
29*67e74705SXin Li  CXString.h
30*67e74705SXin Li  CXTranslationUnit.h
31*67e74705SXin Li  CXType.h
32*67e74705SXin Li  Index_Internal.h
33*67e74705SXin Li  ../../include/clang-c/Index.h
34*67e74705SXin Li  )
35*67e74705SXin Li
36*67e74705SXin Liset(LIBS
37*67e74705SXin Li  clangAST
38*67e74705SXin Li  clangBasic
39*67e74705SXin Li  clangFrontend
40*67e74705SXin Li  clangIndex
41*67e74705SXin Li  clangLex
42*67e74705SXin Li  clangSema
43*67e74705SXin Li  clangTooling
44*67e74705SXin Li)
45*67e74705SXin Li
46*67e74705SXin Liif (CLANG_ENABLE_ARCMT)
47*67e74705SXin Li  list(APPEND LIBS clangARCMigrate)
48*67e74705SXin Liendif ()
49*67e74705SXin Li
50*67e74705SXin Liif (TARGET clangTidyPlugin)
51*67e74705SXin Li  add_definitions(-DCLANG_TOOL_EXTRA_BUILD)
52*67e74705SXin Li  list(APPEND LIBS clangTidyPlugin)
53*67e74705SXin Liendif ()
54*67e74705SXin Li
55*67e74705SXin Lifind_library(DL_LIBRARY_PATH dl)
56*67e74705SXin Liif (DL_LIBRARY_PATH)
57*67e74705SXin Li  list(APPEND LIBS dl)
58*67e74705SXin Liendif()
59*67e74705SXin Li
60*67e74705SXin Lioption(LIBCLANG_BUILD_STATIC
61*67e74705SXin Li  "Build libclang as a static library (in addition to a shared one)" OFF)
62*67e74705SXin Li
63*67e74705SXin Liset(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/libclang.exports)
64*67e74705SXin Li
65*67e74705SXin Liif(MSVC)
66*67e74705SXin Li  # Avoid LNK4197 not to spceify libclang.def here.
67*67e74705SXin Li  # Each functions is exported as "dllexport" in include/clang-c.
68*67e74705SXin Li  # KB835326
69*67e74705SXin Li  set(LLVM_EXPORTED_SYMBOL_FILE)
70*67e74705SXin Liendif()
71*67e74705SXin Li
72*67e74705SXin Liif( LLVM_ENABLE_PIC )
73*67e74705SXin Li  set(ENABLE_SHARED SHARED)
74*67e74705SXin Liendif()
75*67e74705SXin Li
76*67e74705SXin Liif((NOT LLVM_ENABLE_PIC OR LIBCLANG_BUILD_STATIC) AND NOT WIN32)
77*67e74705SXin Li  set(ENABLE_STATIC STATIC)
78*67e74705SXin Liendif()
79*67e74705SXin Li
80*67e74705SXin Liif(WIN32)
81*67e74705SXin Li  set(output_name "libclang")
82*67e74705SXin Lielse()
83*67e74705SXin Li  set(output_name "clang")
84*67e74705SXin Liendif()
85*67e74705SXin Li
86*67e74705SXin Liadd_clang_library(libclang ${ENABLE_SHARED} ${ENABLE_STATIC}
87*67e74705SXin Li  OUTPUT_NAME ${output_name}
88*67e74705SXin Li  ${SOURCES}
89*67e74705SXin Li  DEPENDS clang-headers
90*67e74705SXin Li
91*67e74705SXin Li  LINK_LIBS
92*67e74705SXin Li  ${LIBS}
93*67e74705SXin Li
94*67e74705SXin Li  LINK_COMPONENTS
95*67e74705SXin Li  ${LLVM_TARGETS_TO_BUILD}
96*67e74705SXin Li  Core
97*67e74705SXin Li  Support
98*67e74705SXin Li  )
99*67e74705SXin Li
100*67e74705SXin Liif(ENABLE_SHARED)
101*67e74705SXin Li  if(WIN32)
102*67e74705SXin Li    set_target_properties(libclang
103*67e74705SXin Li      PROPERTIES
104*67e74705SXin Li      VERSION ${LIBCLANG_LIBRARY_VERSION}
105*67e74705SXin Li      DEFINE_SYMBOL _CINDEX_LIB_)
106*67e74705SXin Li  elseif(APPLE)
107*67e74705SXin Li    set(LIBCLANG_LINK_FLAGS " -Wl,-compatibility_version -Wl,1")
108*67e74705SXin Li    set(LIBCLANG_LINK_FLAGS "${LIBCLANG_LINK_FLAGS} -Wl,-current_version -Wl,${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}")
109*67e74705SXin Li
110*67e74705SXin Li    set_property(TARGET libclang APPEND_STRING PROPERTY
111*67e74705SXin Li                 LINK_FLAGS ${LIBCLANG_LINK_FLAGS})
112*67e74705SXin Li  else()
113*67e74705SXin Li    set_target_properties(libclang
114*67e74705SXin Li      PROPERTIES
115*67e74705SXin Li      VERSION ${LIBCLANG_LIBRARY_VERSION}
116*67e74705SXin Li      DEFINE_SYMBOL _CINDEX_LIB_)
117*67e74705SXin Li  endif()
118*67e74705SXin Liendif()
119*67e74705SXin Li
120*67e74705SXin Liif(INTERNAL_INSTALL_PREFIX)
121*67e74705SXin Li  set(LIBCLANG_HEADERS_INSTALL_DESTINATION "${INTERNAL_INSTALL_PREFIX}/include")
122*67e74705SXin Lielse()
123*67e74705SXin Li  set(LIBCLANG_HEADERS_INSTALL_DESTINATION include)
124*67e74705SXin Liendif()
125*67e74705SXin Li
126*67e74705SXin Liinstall(DIRECTORY ../../include/clang-c
127*67e74705SXin Li  COMPONENT libclang-headers
128*67e74705SXin Li  DESTINATION "${LIBCLANG_HEADERS_INSTALL_DESTINATION}"
129*67e74705SXin Li  FILES_MATCHING
130*67e74705SXin Li  PATTERN "*.h"
131*67e74705SXin Li  PATTERN ".svn" EXCLUDE
132*67e74705SXin Li  )
133*67e74705SXin Li
134*67e74705SXin Liif (NOT CMAKE_CONFIGURATION_TYPES) # don't add this for IDE's.
135*67e74705SXin Li  add_custom_target(install-libclang-headers
136*67e74705SXin Li    DEPENDS
137*67e74705SXin Li    COMMAND "${CMAKE_COMMAND}"
138*67e74705SXin Li            -DCMAKE_INSTALL_COMPONENT=libclang-headers
139*67e74705SXin Li            -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
140*67e74705SXin Liendif()
141