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