summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/godotcpp.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/tools/godotcpp.py b/tools/godotcpp.py
index fcf4dd7..e445cad 100644
--- a/tools/godotcpp.py
+++ b/tools/godotcpp.py
@@ -189,6 +189,15 @@ def options(opts, env):
)
)
+ opts.Add(
+ EnumVariable(
+ key="symbols_visibility",
+ help="Symbols visibility on GNU platforms. Use 'auto' to apply the default value.",
+ default=env.get("symbols_visibility", "hidden"),
+ allowed_values=["auto", "visible", "hidden"],
+ )
+ )
+
# Add platform options
for pl in platforms:
tool = Tool(pl, toolpath=["tools"])
@@ -269,6 +278,14 @@ def generate(env):
elif env.get("is_msvc", False):
env.Append(CXXFLAGS=["/EHsc"])
+ if not env.get("is_msvc", False):
+ if env["symbols_visibility"] == "visible":
+ env.Append(CCFLAGS=["-fvisibility=default"])
+ env.Append(LINKFLAGS=["-fvisibility=default"])
+ elif env["symbols_visibility"] == "hidden":
+ env.Append(CCFLAGS=["-fvisibility=hidden"])
+ env.Append(LINKFLAGS=["-fvisibility=hidden"])
+
# Require C++17
if env.get("is_msvc", False):
env.Append(CXXFLAGS=["/std:c++17"])