6 CIndexCodeCompletion.cpp
9 CIndexInclusionStack.cpp
14 CXIndexDataConsumer.cpp
15 CXCompilationDatabase.cpp
16 CXLoadedDiagnostic.cpp
18 CXStoredDiagnostic.cpp
33 ../../include/clang-c/Index.h
47 if (CLANG_ENABLE_ARCMT)
48 list(APPEND LIBS clangARCMigrate)
51 if (TARGET clangTidyPlugin)
52 add_definitions(-DCLANG_TOOL_EXTRA_BUILD)
53 list(APPEND LIBS clangTidyPlugin)
54 list(APPEND LIBS clangIncludeFixerPlugin)
55 if(LLVM_ENABLE_MODULES)
56 list(APPEND LLVM_COMPILE_FLAGS "-fmodules-ignore-macro=CLANG_TOOL_EXTRA_BUILD")
60 find_library(DL_LIBRARY_PATH dl)
65 option(LIBCLANG_BUILD_STATIC
66 "Build libclang as a static library (in addition to a shared one)" OFF)
68 set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/libclang.exports)
71 # Avoid LNK4197 by not specifying libclang.exports here.
72 # Each functions is exported as "dllexport" in include/clang-c.
74 set(LLVM_EXPORTED_SYMBOL_FILE)
78 set(ENABLE_SHARED SHARED)
81 if((NOT LLVM_ENABLE_PIC OR LIBCLANG_BUILD_STATIC) AND NOT WIN32)
82 set(ENABLE_STATIC STATIC)
86 set(output_name "libclang")
88 set(output_name "clang")
91 add_clang_library(libclang ${ENABLE_SHARED} ${ENABLE_STATIC}
92 OUTPUT_NAME ${output_name}
100 ${LLVM_TARGETS_TO_BUILD}
107 set_target_properties(libclang
109 VERSION ${LIBCLANG_LIBRARY_VERSION}
110 DEFINE_SYMBOL _CINDEX_LIB_)
112 set(LIBCLANG_LINK_FLAGS " -Wl,-compatibility_version -Wl,1")
113 set(LIBCLANG_LINK_FLAGS "${LIBCLANG_LINK_FLAGS} -Wl,-current_version -Wl,${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}")
115 set_property(TARGET libclang APPEND_STRING PROPERTY
116 LINK_FLAGS ${LIBCLANG_LINK_FLAGS})
118 set_target_properties(libclang
120 VERSION ${LIBCLANG_LIBRARY_VERSION}
121 DEFINE_SYMBOL _CINDEX_LIB_)
122 # FIXME: _CINDEX_LIB_ affects dllexport/dllimport on Win32.
123 if(LLVM_ENABLE_MODULES AND NOT WIN32)
124 target_compile_options(libclang PRIVATE
125 "-fmodules-ignore-macro=_CINDEX_LIB_"
131 if(INTERNAL_INSTALL_PREFIX)
132 set(LIBCLANG_HEADERS_INSTALL_DESTINATION "${INTERNAL_INSTALL_PREFIX}/include")
134 set(LIBCLANG_HEADERS_INSTALL_DESTINATION include)
137 install(DIRECTORY ../../include/clang-c
138 COMPONENT libclang-headers
139 DESTINATION "${LIBCLANG_HEADERS_INSTALL_DESTINATION}"
142 PATTERN ".svn" EXCLUDE
145 # LLVM_DISTRIBUTION_COMPONENTS requires that each component have both a
146 # component and an install-component target, so add a dummy libclang-headers
147 # target to allow using it in LLVM_DISTRIBUTION_COMPONENTS.
148 add_custom_target(libclang-headers)
149 set_target_properties(libclang-headers PROPERTIES FOLDER "Misc")
151 if (NOT CMAKE_CONFIGURATION_TYPES) # don't add this for IDE's.
152 add_llvm_install_targets(install-libclang-headers
153 COMPONENT libclang-headers)
156 # Create a target to install the python bindings to make them easier to
157 # distribute. Since the bindings are over libclang, which is installed
158 # unbundled to the clang version, follow suit.
159 foreach(PythonVersion ${CLANG_PYTHON_BINDINGS_VERSIONS})
161 ${CMAKE_CURRENT_SOURCE_DIR}/../../bindings/python/clang
163 libclang-python-bindings
165 "lib${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages")
167 if(NOT CMAKE_CONFIGURATION_TYPES)
168 add_custom_target(libclang-python-bindings)
169 add_llvm_install_targets(install-libclang-python-bindings
171 libclang-python-bindings)