From 0bc5d77ed27e0765953d93c2376a4b4aea675a01 Mon Sep 17 00:00:00 2001 From: Jason Lowe-Power Date: Wed, 6 May 2020 17:38:41 -0700 Subject: [PATCH] scons: Update python-config flags for python3.8 Starting in python 3.8 the python3-config utility requires the --embed flag to output -lpython3.8. Without this flag, gem5 won't link to the python library. More details: https://bugs.python.org/issue36721 https://github.com/python/cpython/pull/13500 Change-Id: Id9c63577dcd2defa7ae62cc32e042c4a245e7082 Signed-off-by: Jason Lowe-Power Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28687 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- SConstruct | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/SConstruct b/SConstruct index ba4affaf7..b7608a8b2 100755 --- a/SConstruct +++ b/SConstruct @@ -97,7 +97,7 @@ import SCons import SCons.Node import SCons.Node.FS -from m5.util import compareVersions, readCommand +from m5.util import compareVersions, readCommand, readCommandWithReturn help_texts = { "options" : "", @@ -683,8 +683,21 @@ if main['USE_PYTHON']: # Read the linker flags and split them into libraries and other link # flags. The libraries are added later through the call the CheckLib. - py_ld_flags = readCommand([python_config, '--ldflags'], - exception='').split() + # Note: starting in Python 3.8 the --embed flag is required to get the + # -lpython3.8 linker flag + retcode, cmd_stdout = readCommandWithReturn( + [python_config, '--ldflags', '--embed'], exception='') + if retcode != 0: + # If --embed isn't detected then we're running python <3.8 + retcode, cmd_stdout = readCommandWithReturn( + [python_config, '--ldflags'], exception='') + + # Checking retcode again + if retcode != 0: + error("Failing on python-config --ldflags command") + + py_ld_flags = cmd_stdout.split() + py_libs = [] for lib in py_ld_flags: if not lib.startswith('-l'): -- 2.30.2