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:
committed by
Giacomo Travaglini
parent
2d6cd436f7
commit
0bc5d77ed2
19
SConstruct
19
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'):
|
||||
|
||||
Reference in New Issue
Block a user