From f5e4f95cde6de04ed9bf6abfd9bf12cc0bac6b1a Mon Sep 17 00:00:00 2001 From: DmitriySalnikov Date: Mon, 20 Nov 2023 12:35:41 +0300 Subject: [PATCH] [Scons] Added the ability to change the visibility of symbols --- tools/godotcpp.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tools/godotcpp.py b/tools/godotcpp.py index fcf4dd7e..e445cad3 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"])