aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYikai Zhao <yikai@z1k.dev>2021-12-15 00:02:02 +0800
committerYikai Zhao <yikai@z1k.dev>2021-12-15 00:02:02 +0800
commit0edf26d84f9f1cd9b4eb36edbb179ae6b94f0ff0 (patch)
tree3f0715ef328f46c6a9f794aba16470860fbe4c35
parented6e867cfab77c5a311a516d20af44f57526cfdc (diff)
Do not export unnecessary symbols in dynamic library
-rw-r--r--CMakeLists.txt1
-rw-r--r--vterm-module.h19
2 files changed, 18 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index af4f2d5..e766884 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,6 +12,7 @@ endif()
add_library(vterm-module MODULE vterm-module.c utf8.c elisp.c)
set_target_properties(vterm-module PROPERTIES
C_STANDARD 99
+ C_VISIBILITY_PRESET "hidden"
POSITION_INDEPENDENT_CODE ON
PREFIX ""
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}
diff --git a/vterm-module.h b/vterm-module.h
index 5cb1f6d..96f538f 100644
--- a/vterm-module.h
+++ b/vterm-module.h
@@ -6,7 +6,22 @@
#include <stdbool.h>
#include <vterm.h>
-int plugin_is_GPL_compatible;
+// https://gcc.gnu.org/wiki/Visibility
+#if defined _WIN32 || defined __CYGWIN__
+ #ifdef __GNUC__
+ #define VTERM_EXPORT __attribute__ ((dllexport))
+ #else
+ #define VTERM_EXPORT __declspec(dllexport)
+ #endif
+#else
+ #if __GNUC__ >= 4
+ #define VTERM_EXPORT __attribute__ ((visibility ("default")))
+ #else
+ #define VTERM_EXPORT
+ #endif
+#endif
+
+VTERM_EXPORT int plugin_is_GPL_compatible;
#define SB_MAX 100000 // Maximum 'scrollback' value.
@@ -147,6 +162,6 @@ emacs_value Fvterm_get_prompt_point(emacs_env *env, ptrdiff_t nargs,
emacs_value Fvterm_reset_cursor_point(emacs_env *env, ptrdiff_t nargs,
emacs_value args[], void *data);
-int emacs_module_init(struct emacs_runtime *ert);
+VTERM_EXPORT int emacs_module_init(struct emacs_runtime *ert);
#endif /* VTERM_MODULE_H */