[Scons] Added the ability to change the visibility of symbols

pull/1313/head
DmitriySalnikov 2023-11-20 12:35:41 +03:00
parent 6fd4e151b8
commit f5e4f95cde
1 changed files with 17 additions and 0 deletions

View File

@ -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 # Add platform options
for pl in platforms: for pl in platforms:
tool = Tool(pl, toolpath=["tools"]) tool = Tool(pl, toolpath=["tools"])
@ -269,6 +278,14 @@ def generate(env):
elif env.get("is_msvc", False): elif env.get("is_msvc", False):
env.Append(CXXFLAGS=["/EHsc"]) 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 # Require C++17
if env.get("is_msvc", False): if env.get("is_msvc", False):
env.Append(CXXFLAGS=["/std:c++17"]) env.Append(CXXFLAGS=["/std:c++17"])