diff options
author | Cristian Adam <cristian.adam@gmail.com> | 2020-04-22 14:12:01 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2020-09-01 15:54:04 +0200 |
commit | e6882266fec43037d88fccb364e5cb666488f3d7 (patch) | |
tree | a38894e93b746f68c2433b89de49c3a1eb05c4e4 | |
parent | 45f695820524d18f9964ae50895d6246f1f182ca (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.h | 23 | ||||
-rw-r--r-- | clang/tools/libclang/CMakeLists.txt | 16 |
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 |