From 15b570bbddaa798c0aae2c2900b331bd5c98d35d Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Thu, 15 Jan 2015 17:24:28 -0800 Subject: [PATCH] Add profile targets for gcc and clang --- SConstruct | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/SConstruct b/SConstruct index 91eb6caf9..586ca0cd6 100644 --- a/SConstruct +++ b/SConstruct @@ -11,14 +11,17 @@ all All available variants debug All available debug variants release All available release variants + profile All available profile variants clang All clang variants clang.debug clang debug variant clang.release clang release variant + clang.profile clang profile variant gcc All gcc variants gcc.debug gcc debug variant gcc.release gcc release variant + gcc.profile gcc profile variant msvc All msvc variants msvc.debug MSVC debug variant @@ -28,6 +31,11 @@ count Show line count metrics + Any individual target can also have ".nounity" appended for a classic, + non unity build. Example: + + scons gcc.debug.nounity + If the clang toolchain is detected, then the default target will use it, else the gcc toolchain will be used. On Windows environments, the MSVC toolchain is also detected. @@ -250,7 +258,7 @@ def config_env(toolchain, variant, env): if variant == 'debug': env.Append(CPPDEFINES=['DEBUG', '_DEBUG']) - elif variant == 'release': + elif variant == 'release' or variant == 'profile': env.Append(CPPDEFINES=['NDEBUG']) if toolchain in Split('clang gcc'): @@ -268,6 +276,21 @@ def config_env(toolchain, variant, env): '-g' # generate debug symbols ]) + env.Append(LINKFLAGS=[ + '-rdynamic', + '-g', + ]) + + if variant == 'profile': + env.Append(CCFLAGS=[ + '-p', + '-pg', + ]) + env.Append(LINKFLAGS=[ + '-p', + '-pg', + ]) + if toolchain == 'clang': env.Append(CCFLAGS=['-Wno-redeclared-class-member']) env.Append(CPPDEFINES=['BOOST_ASIO_HAS_STD_ARRAY']) @@ -331,10 +354,6 @@ def config_env(toolchain, variant, env): else: env.Append(LIBS=['rt']) - env.Append(LINKFLAGS=[ - '-rdynamic' - ]) - if variant == 'release': env.Append(CCFLAGS=[ '-O3', @@ -481,7 +500,7 @@ base.Append(CPPPATH=[ ]) # Configure the toolchains, variants, default toolchain, and default target -variants = ['debug', 'release'] +variants = ['debug', 'release', 'profile'] all_toolchains = ['clang', 'gcc', 'msvc'] if Beast.system.osx: toolchains = ['clang'] @@ -552,6 +571,8 @@ msvc_configs = [] for tu_style in ['classic', 'unity']: for toolchain in all_toolchains: for variant in variants: + if variant == 'profile' and toolchain == 'msvc': + continue # Configure this variant's construction environment env = base.Clone() config_env(toolchain, variant, env)