From 4bbaee2f56d1febc5992c6ebae556d35d571a712 Mon Sep 17 00:00:00 2001 From: ObserverOfTime Date: Thu, 14 Mar 2024 11:01:11 +0200 Subject: [PATCH] fix(lib): allow hiding symbols --- cli/src/generate/render.rs | 4 +++- lib/include/tree_sitter/api.h | 4 ++++ lib/src/alloc.h | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/cli/src/generate/render.rs b/cli/src/generate/render.rs index 2c0f73a5..1de8a069 100644 --- a/cli/src/generate/render.rs +++ b/cli/src/generate/render.rs @@ -1341,7 +1341,9 @@ impl Generator { add_line!(self, ""); } - add_line!(self, "#ifdef _WIN32"); + add_line!(self, "#ifdef TREE_SITTER_HIDE_SYMBOLS"); + add_line!(self, "#define TS_PUBLIC"); + add_line!(self, "#elif defined(_WIN32)"); add_line!(self, "#define TS_PUBLIC __declspec(dllexport)"); add_line!(self, "#else"); add_line!( diff --git a/lib/include/tree_sitter/api.h b/lib/include/tree_sitter/api.h index 69c65fab..d6301cc8 100644 --- a/lib/include/tree_sitter/api.h +++ b/lib/include/tree_sitter/api.h @@ -1,9 +1,11 @@ #ifndef TREE_SITTER_API_H_ #define TREE_SITTER_API_H_ +#ifndef TREE_SITTER_HIDE_SYMBOLS #if defined(__GNUC__) || defined(__clang__) #pragma GCC visibility push(default) #endif +#endif #ifdef __cplusplus extern "C" { @@ -1255,8 +1257,10 @@ void ts_set_allocator( } #endif +#ifndef TREE_SITTER_HIDE_SYMBOLS #if defined(__GNUC__) || defined(__clang__) #pragma GCC visibility pop #endif +#endif #endif // TREE_SITTER_API_H_ diff --git a/lib/src/alloc.h b/lib/src/alloc.h index 9a0e41c8..a0eadb7a 100644 --- a/lib/src/alloc.h +++ b/lib/src/alloc.h @@ -9,7 +9,7 @@ extern "C" { #include #include -#ifdef _WIN32 +#if defined(TREE_SITTER_HIDDEN_SYMBOLS) || defined(_WIN32) #define TS_PUBLIC #else #define TS_PUBLIC __attribute__((visibility("default")))