From 5f864cd8de80287595f15eb4d4fa6d41c84017c3 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 (cherry picked from commit f5e4f95cde6de04ed9bf6abfd9bf12cc0bac6b1a) --- tools/common_compiler_flags.py | 8 ++++++++ tools/godotcpp.py | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/tools/common_compiler_flags.py b/tools/common_compiler_flags.py index 437f256b..838dbcf0 100644 --- a/tools/common_compiler_flags.py +++ b/tools/common_compiler_flags.py @@ -39,6 +39,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"]) + # Set optimize and debug_symbols flags. # "custom" means do nothing and let users set their own optimization flags. if env.get("is_msvc", False): diff --git a/tools/godotcpp.py b/tools/godotcpp.py index 92ad7aeb..adfd4975 100644 --- a/tools/godotcpp.py +++ b/tools/godotcpp.py @@ -291,6 +291,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"], + ) + ) + opts.Add( EnumVariable( "optimize",