summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Kanavin <alex.kanavin@gmail.com>2018-01-03 17:02:01 +0200
committerAlexander Kanavin <alex.kanavin@gmail.com>2019-12-13 17:07:51 +0100
commit48f41930a773bdd48b9664b2fc5b1e45d6bc5688 (patch)
treea4e625bba2dcd95dfb61c760ac14106941fc3add
parent3d4ed1dbccd3b7cf379fdff263be2af58fd35807 (diff)
downloadgobject-introspection-48f41930a773bdd48b9664b2fc5b1e45d6bc5688.tar.gz
giscanner: add a --lib-dirs-envvar option
By default LD_LIBRARY_PATH is set to the list of target library paths; this breaks down in cross-compilation environment, as we need to run a native emulation wrapper rather than the target binary itself. This patch allows exporting those paths to a different environment variable which can be picked up and used by the wrapper. Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-rw-r--r--giscanner/ccompiler.py4
-rw-r--r--giscanner/dumper.py3
-rw-r--r--giscanner/scannermain.py3
3 files changed, 7 insertions, 3 deletions
diff --git a/giscanner/ccompiler.py b/giscanner/ccompiler.py
index 4ad572c3..a81d4b86 100644
--- a/giscanner/ccompiler.py
+++ b/giscanner/ccompiler.py
@@ -174,7 +174,7 @@ class CCompiler(object):
self._cflags_no_deprecation_warnings = "-Wno-deprecated-declarations"
- def get_internal_link_flags(self, args, libtool, libraries, extra_libraries, libpaths):
+ def get_internal_link_flags(self, args, libtool, libraries, extra_libraries, libpaths, lib_dirs_envvar):
# An "internal" link is where the library to be introspected
# is being built in the current directory.
@@ -184,7 +184,7 @@ class CCompiler(object):
if os.name == 'nt':
runtime_path_envvar = ['LIB', 'PATH']
else:
- runtime_path_envvar = ['LD_LIBRARY_PATH', 'DYLD_FALLBACK_LIBRARY_PATH']
+ runtime_path_envvar = ['LD_LIBRARY_PATH', 'DYLD_FALLBACK_LIBRARY_PATH'] if not lib_dirs_envvar else [lib_dirs_envvar]
# Search the current directory first
# (This flag is not supported nor needed for Visual C++)
args.append('-L.')
diff --git a/giscanner/dumper.py b/giscanner/dumper.py
index efa18782..61942faf 100644
--- a/giscanner/dumper.py
+++ b/giscanner/dumper.py
@@ -240,7 +240,8 @@ class DumpCompiler(object):
libtool,
self._options.libraries,
self._options.extra_libraries,
- self._options.library_paths)
+ self._options.library_paths,
+ self._options.lib_dirs_envvar)
args.extend(pkg_config_libs)
else:
diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py
index 4aeb4172..ca9065b2 100644
--- a/giscanner/scannermain.py
+++ b/giscanner/scannermain.py
@@ -126,6 +126,9 @@ def _get_option_parser():
parser.add_option("", "--use-ldd-wrapper",
action="store", dest="ldd_wrapper", default=None,
help="wrapper to use instead of ldd (useful when cross-compiling)")
+ parser.add_option("", "--lib-dirs-envvar",
+ action="store", dest="lib_dirs_envvar", default=None,
+ help="environment variable to write a list of library directories to (for running the transient binary), instead of standard LD_LIBRARY_PATH")
parser.add_option("", "--program-arg",
action="append", dest="program_args", default=[],
help="extra arguments to program")