From 20f41dfa93632235b080c318ca42894cd1cb8e36 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Sat, 6 Feb 2021 23:41:35 -0800 Subject: [PATCH] scons: Update the Check(Cxx|Link)Flag checks to set their vars. This avoids boilerplate where we check to see if flag X is supported, and if so then set flag X. Since there are shared and static versions of the linker flags but we only explicitly check the static ones, this change also adds a parameter to CheckLinkFlag to set both flavors. This defaults to true since I assume most of the time linking flags will apply to both. Change-Id: I983222169e9835aeb98570362f7004e2ef0240d0 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/40855 Reviewed-by: Gabe Black Maintainer: Gabe Black Tested-by: kokoro --- SConstruct | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/SConstruct b/SConstruct index 2e83aa2fa..6b028ee0e 100755 --- a/SConstruct +++ b/SConstruct @@ -512,21 +512,26 @@ timeout_version = timeout_lines[0].split() if timeout_lines else [] main['TIMEOUT'] = timeout_version and \ compareVersions(timeout_version[-1], '8.13') >= 0 -def CheckCxxFlag(context, flag): +def CheckCxxFlag(context, flag, autoadd=True): context.Message("Checking for compiler %s support... " % flag) last_cxxflags = context.env['CXXFLAGS'] context.env.Append(CXXFLAGS=[flag]) ret = context.TryCompile('', '.cc') - context.env['CXXFLAGS'] = last_cxxflags + if not autoadd: + context.env['CXXFLAGS'] = last_cxxflags context.Result(ret) return ret -def CheckLinkFlag(context, flag): +def CheckLinkFlag(context, flag, autoadd=True, set_for_shared=True): context.Message("Checking for linker %s support... " % flag) last_linkflags = context.env['LINKFLAGS'] context.env.Append(LINKFLAGS=[flag]) ret = context.TryLink('int main(int, char *[]) { return 0; }', '.cc') - context.env['LINKFLAGS'] = last_linkflags + if not autoadd: + context.env['LINKFLAGS'] = last_linkflags + if set_for_shared: + assert(autoadd) + context.env.Append(SHLINKFLAGS=[flag]) context.Result(ret) return ret @@ -621,13 +626,9 @@ if main['M5_BUILD_CACHE']: CacheDir(main['M5_BUILD_CACHE']) if not GetOption('no_compress_debug'): - if conf.CheckCxxFlag('-gz'): - main.Append(CXXFLAGS=['-gz']) - else: + if not conf.CheckCxxFlag('-gz'): warning("Can't enable object file debug section compression") - if conf.CheckLinkFlag('-gz'): - main.Append(LINKFLAGS=['-gz'], SHLINKFLAGS=['-gz']) - else: + if not conf.CheckLinkFlag('-gz'): warning("Can't enable executable debug section compression") main['USE_PYTHON'] = not GetOption('without_python') -- 2.30.2