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