summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCristian Adam <cristian.adam@gmail.com>2020-04-22 14:12:01 +0200
committerEike Ziller <eike.ziller@qt.io>2020-09-01 15:54:04 +0200
commite6882266fec43037d88fccb364e5cb666488f3d7 (patch)
treea38894e93b746f68c2433b89de49c3a1eb05c4e4
parent45f695820524d18f9964ae50895d6246f1f182ca (diff)
libclang: Add static build support for Windows
https: //reviews.llvm.org/D75068 Change-Id: I8f30551914fb7fd273edf085ebbd593a54b5fc72 Reviewed-by: Cristian Adam <cristian.adam@qt.io>
-rw-r--r--clang/include/clang-c/Platform.h23
-rw-r--r--clang/tools/libclang/CMakeLists.txt16
2 files changed, 30 insertions, 9 deletions
diff --git a/clang/include/clang-c/Platform.h b/clang/include/clang-c/Platform.h
index 3bb66bb0df48..67c1fff8ff78 100644
--- a/clang/include/clang-c/Platform.h
+++ b/clang/include/clang-c/Platform.h
@@ -18,14 +18,23 @@
LLVM_CLANG_C_EXTERN_C_BEGIN
-/* MSVC DLL import/export. */
-#ifdef _MSC_VER
- #ifdef _CINDEX_LIB_
- #define CINDEX_LINKAGE __declspec(dllexport)
- #else
- #define CINDEX_LINKAGE __declspec(dllimport)
+/* Windows DLL import/export. */
+#ifndef CINDEX_NO_EXPORTS
+ #define CINDEX_EXPORTS
+#endif
+#ifdef _WIN32
+ #ifdef CINDEX_EXPORTS
+ #ifdef _CINDEX_LIB_
+ #define CINDEX_LINKAGE __declspec(dllexport)
+ #else
+ #define CINDEX_LINKAGE __declspec(dllimport)
+ #endif
#endif
-#else
+#elif defined(CINDEX_EXPORTS) && defined(__GNUC__)
+ #define CINDEX_LINKAGE __attribute__((visibility("default")))
+#endif
+
+#ifndef CINDEX_LINKAGE
#define CINDEX_LINKAGE
#endif
diff --git a/clang/tools/libclang/CMakeLists.txt b/clang/tools/libclang/CMakeLists.txt
index 973655361f71..5bd506188540 100644
--- a/clang/tools/libclang/CMakeLists.txt
+++ b/clang/tools/libclang/CMakeLists.txt
@@ -76,14 +76,18 @@ if(MSVC)
set(LLVM_EXPORTED_SYMBOL_FILE)
endif()
-if(LLVM_ENABLE_PIC OR WIN32)
+if(LLVM_ENABLE_PIC OR NOT LIBCLANG_BUILD_STATIC)
set(ENABLE_SHARED SHARED)
endif()
-if((NOT LLVM_ENABLE_PIC OR LIBCLANG_BUILD_STATIC) AND NOT WIN32)
+if(NOT LLVM_ENABLE_PIC OR LIBCLANG_BUILD_STATIC)
set(ENABLE_STATIC STATIC)
endif()
+if (WIN32 AND ENABLE_SHARED AND ENABLE_STATIC)
+ unset(ENABLE_STATIC)
+endif()
+
if(WIN32)
set(output_name "libclang")
else()
@@ -112,6 +116,14 @@ add_clang_library(libclang ${ENABLE_SHARED} ${ENABLE_STATIC} INSTALL_WITH_TOOLCH
Support
)
+if(ENABLE_STATIC)
+ foreach(name libclang obj.libclang libclang_static)
+ if (TARGET ${name})
+ target_compile_definitions(${name} PUBLIC CINDEX_NO_EXPORTS)
+ endif()
+ endforeach()
+endif()
+
if(ENABLE_SHARED)
if(WIN32)
set_target_properties(libclang