diff --git a/clang/include/clang-c/Platform.h b/clang/include/clang-c/Platform.h --- a/clang/include/clang-c/Platform.h +++ b/clang/include/clang-c/Platform.h @@ -19,6 +19,9 @@ LLVM_CLANG_C_EXTERN_C_BEGIN /* Windows DLL import/export. */ +#ifndef CINDEX_NO_EXPORTS + #define CINDEX_EXPORTS +#endif #ifdef _WIN32 #ifdef CINDEX_EXPORTS #ifdef _CINDEX_LIB_ @@ -27,7 +30,7 @@ #define CINDEX_LINKAGE __declspec(dllimport) #endif #endif -#elif defined(CINDEX_EXPORTS) +#elif defined(CINDEX_EXPORTS) && defined(__GNUC__) #define CINDEX_LINKAGE __attribute__((visibility("default"))) #endif diff --git a/clang/tools/libclang/CMakeLists.txt b/clang/tools/libclang/CMakeLists.txt --- a/clang/tools/libclang/CMakeLists.txt +++ b/clang/tools/libclang/CMakeLists.txt @@ -77,7 +77,7 @@ set(LLVM_EXPORTED_SYMBOL_FILE) endif() -if(LLVM_ENABLE_PIC) +if(LLVM_ENABLE_PIC OR NOT LIBCLANG_BUILD_STATIC) set(ENABLE_SHARED SHARED) endif() @@ -113,8 +113,15 @@ 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) - target_compile_definitions(libclang PUBLIC CINDEX_EXPORTS) if(WIN32) set_target_properties(libclang PROPERTIES