diff --git a/sources/libClangSharp/CMakeLists.txt b/sources/libClangSharp/CMakeLists.txt index a7ae962e..f0dbc59d 100644 --- a/sources/libClangSharp/CMakeLists.txt +++ b/sources/libClangSharp/CMakeLists.txt @@ -1,3 +1,9 @@ +include(GenerateExportHeader) + +set(CMAKE_CXX_VISIBILITY_PRESET "hidden") +set(CMAKE_VISIBILITY_INLINES_HIDDEN ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) + set(SOURCES CIndexDiagnostic.cpp ClangSharp.cpp @@ -40,16 +46,27 @@ else() endif() target_include_directories(ClangSharp PRIVATE ${CLANG_INCLUDE_DIRS}) + set_target_properties(ClangSharp PROPERTIES PREFIX lib VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION} ) +generate_export_header(ClangSharp + EXPORT_MACRO_NAME "CLANGSHARP_LINKAGE" + EXPORT_FILE_NAME ClangSharp_export.h +) + +set_property(TARGET ClangSharp APPEND PROPERTY + PUBLIC_HEADER ClangSharp.h "${CMAKE_CURRENT_BINARY_DIR}/ClangSharp_export.h" +) + include(GNUInstallDirs) install(TARGETS ClangSharp LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT runtime ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT development RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT development ) diff --git a/sources/libClangSharp/ClangSharp.h b/sources/libClangSharp/ClangSharp.h index 9a018a99..b0b2ab60 100644 --- a/sources/libClangSharp/ClangSharp.h +++ b/sources/libClangSharp/ClangSharp.h @@ -17,24 +17,12 @@ #include #include #include +#include #include #pragma warning(pop) -#ifdef __cplusplus -#define EXTERN_C extern "C" -#else -#define EXTERN_C -#endif - -#ifdef _MSC_VER -// We always export functions on Windows as this library -// isn't meant to be consumed by other native code -#define CLANGSHARP_LINKAGE EXTERN_C __declspec(dllexport) -#else -// Not necessary outside MSVC -#define CLANGSHARP_LINKAGE EXTERN_C -#endif +#include "ClangSharp_export.h" enum CX_AtomicOperatorKind { CX_AO_Invalid, @@ -220,6 +208,7 @@ struct CX_TemplateName { CXTranslationUnit tu; }; +LLVM_CLANG_C_EXTERN_C_BEGIN CLANGSHARP_LINKAGE CXCursor clangsharp_Cursor_getArgument(CXCursor C, unsigned i); CLANGSHARP_LINKAGE CXType clangsharp_Cursor_getArgumentType(CXCursor C); @@ -839,5 +828,6 @@ CLANGSHARP_LINKAGE CX_TypeClass clangsharp_Type_getTypeClass(CXType CT); CLANGSHARP_LINKAGE CXCursor clangsharp_Type_getUnderlyingExpr(CXType CT); CLANGSHARP_LINKAGE CXType clangsharp_Type_getUnderlyingType(CXType CT); +LLVM_CLANG_C_EXTERN_C_END #endif