libclang: Add static build support for Windows

Differential Revision: https://reviews.llvm.org/D75068
This commit is contained in:
Cristian Adam 2020-04-25 20:12:21 +03:00 committed by Martin Storsjö
parent 67aed1469b
commit 6fb80d9383
2 changed files with 30 additions and 9 deletions

View File

@ -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

View File

@ -77,14 +77,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()
@ -113,6 +117,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