diff options
author | Petri Latvala <petri.latvala@intel.com> | 2018-01-19 13:44:07 +0200 |
---|---|---|
committer | Arkadiusz Hiler <arkadiusz.hiler@intel.com> | 2018-03-12 14:08:26 +0200 |
commit | add8216df607db8152a38773b201dcb7e6656086 (patch) | |
tree | 94e3f7f22fba053158d2db3e9a09d2202e280140 /tools/meson.build | |
parent | ffba1cec3cb4a4bf53bba1e333e3ac94c52ce8a2 (diff) |
meson: Set up runpath for installed executables
Meson builds libigt as a shared library, and executables naturally
have to find it at runtime. Using default options puts the library to
a normal search paths, but any modifications to the directory options
or a non-conventional prefix setting makes using LD_LIBRARY_PATH or
other library search means mandatory.
Add a build option 'use_rpath' (default: false) that makes meson set
up DT_RUNPATH at install time, pointing to the library with a path
relative to the executable, using $ORIGIN. That way the installed
executables find the library even when not installed to exactly the
build-time configured prefix path, a setup CI occasionally uses.
Signed-off-by: Petri Latvala <petri.latvala@intel.com>
Cc: Tomi Sarvela <tomi.p.sarvela@intel.com>
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Tested-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Diffstat (limited to 'tools/meson.build')
-rw-r--r-- | tools/meson.build | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tools/meson.build b/tools/meson.build index a96735c22..bd2d313d5 100644 --- a/tools/meson.build +++ b/tools/meson.build @@ -50,9 +50,32 @@ if libdrm_intel.found() tool_deps += zlib endif +if get_option('use_rpath') + # Set up runpath for the test executables towards libigt.so. + # The path should be relative to $ORIGIN so the library is + # still found properly even if installed to a path other than + # prefix. + + # libdir and bindir are pathnames relative to prefix. meson + # enforces this. + + # Start from the executable + rpathdir = '$ORIGIN' + # Executables are installed in bindir. Add a .. for each + # directory name in it. + foreach p : bindir.split('/') + rpathdir = join_paths(rpathdir, '..') + endforeach + # Add relative path to libdir + rpathdir = join_paths(rpathdir, libdir) +else + rpathdir = '' +endif + foreach prog : tools_progs executable(prog, prog + '.c', dependencies : tool_deps, + install_rpath : rpathdir, install : true) endforeach @@ -63,18 +86,21 @@ if libudev.found() ] executable('intel_dp_compliance', sources : intel_dp_compliance_src, dependencies : [tool_deps, libudev], + install_rpath : rpathdir, install : true) endif intel_l3_parity_src = [ 'intel_l3_parity.c', 'intel_l3_udev_listener.c' ] executable('intel_l3_parity', sources : intel_l3_parity_src, dependencies : tool_deps, + install_rpath : rpathdir, install : true) intel_reg_src = [ 'intel_reg.c', 'intel_reg_decode.c', 'intel_reg_spec.c' ] executable('intel_reg', sources : intel_reg_src, dependencies : tool_deps, install : true, + install_rpath : rpathdir, c_args : [ '-DIGT_DATADIR="@0@"'.format(join_paths(prefix, datadir)), ]) |