diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/SConscript | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/SConscript b/src/SConscript index 361479d57..dc284b104 100755 --- a/src/SConscript +++ b/src/SConscript @@ -1268,23 +1268,34 @@ needed_envs = [identifyTarget(target) for target in BUILD_TARGETS] if 'all' in needed_envs: needed_envs += target_types +disable_partial = False +if env['PLATFORM'] == 'darwin': + # Up until Apple LLVM version 10.0.0 (clang-1000.11.45.5), partial + # linked objects do not expose symbols that are marked with the + # hidden visibility and consequently building gem5 on Mac OS + # fails. As a workaround, we disable partial linking, however, we + # may want to revisit in the future. + disable_partial = True + # Debug binary if 'debug' in needed_envs: makeEnv(env, 'debug', '.do', CCFLAGS = Split(ccflags['debug']), CPPDEFINES = ['DEBUG', 'TRACING_ON=1'], - LINKFLAGS = Split(ldflags['debug'])) + LINKFLAGS = Split(ldflags['debug']), + disable_partial=disable_partial) # Optimized binary if 'opt' in needed_envs: makeEnv(env, 'opt', '.o', CCFLAGS = Split(ccflags['opt']), CPPDEFINES = ['TRACING_ON=1'], - LINKFLAGS = Split(ldflags['opt'])) + LINKFLAGS = Split(ldflags['opt']), + disable_partial=disable_partial) # "Fast" binary if 'fast' in needed_envs: - disable_partial = \ + disable_partial = disable_partial and \ env.get('BROKEN_INCREMENTAL_LTO', False) and \ GetOption('force_lto') makeEnv(env, 'fast', '.fo', strip = True, @@ -1298,11 +1309,13 @@ if 'prof' in needed_envs: makeEnv(env, 'prof', '.po', CCFLAGS = Split(ccflags['prof']), CPPDEFINES = ['NDEBUG', 'TRACING_ON=0'], - LINKFLAGS = Split(ldflags['prof'])) + LINKFLAGS = Split(ldflags['prof']), + disable_partial=disable_partial) # Profiled binary using google-pprof if 'perf' in needed_envs: makeEnv(env, 'perf', '.gpo', CCFLAGS = Split(ccflags['perf']), CPPDEFINES = ['NDEBUG', 'TRACING_ON=0'], - LINKFLAGS = Split(ldflags['perf'])) + LINKFLAGS = Split(ldflags['perf']), + disable_partial=disable_partial) |