scons: Move the marshal binary to the build directory
authorChun-Chen TK Hsu <chunchenhsu@google.com>
Mon, 20 May 2019 16:38:31 +0000 (00:38 +0800)
committerChun-Chen TK Hsu <chunchenhsu@google.com>
Tue, 21 May 2019 15:46:50 +0000 (15:46 +0000)
The current marshal binary is in $BUILD/python/ directory which makes
the dynamic linker fail to find shared libraries with rpath information
when the marshal is executing. Moving $BUILD/python/marshal to
$BUILD/marshal solves this problem.

This is because the marshal binary is built with the same flags as gem5
binary. And if one adds rpath information with add_local_rpath() in some
SConscripts, the marshal binary will also link to those shared libraries
and have the same rpath information.  So it must be in the same
directory as gem5 binary such that the dynamic linker could find those
shared libraries with the rpath information.

Signed-off-by: Chun-Chen TK Hsu
Change-Id: I98d9c3e0180abefe6b2b6a78ee5a96324038eb53
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18888
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/SConscript

index d21feeac9e548690fde4cb310bd06b231da68a4b..d8014b2489ad04f2cadbc52b4a3be03ce39952b9 100644 (file)
@@ -1131,7 +1131,7 @@ env.AlwaysBuild(tags)
 # Build a small helper that marshals the Python code using the same
 # version of Python as gem5. This is in an unorthodox location to
 # avoid building it for every variant.
-py_marshal = env.Program('python/marshal.cc')[0]
+py_marshal = env.Program('marshal', 'python/marshal.cc')[0]
 
 # Embed python files.  All .py files that have been indicated by a
 # PySource() call in a SConscript need to be embedded into the M5