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 <jason@lowepower.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28687
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Jason Lowe-Power
2020-05-06 17:38:41 -07:00
committed by Giacomo Travaglini
parent 2d6cd436f7
commit 0bc5d77ed2

View File

@@ -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'):