[igt-dev] [PATCH i-g-t 1/2] meson: Define all the rpath_dirs in one place

Arkadiusz Hiler arkadiusz.hiler at intel.com
Mon Aug 13 10:26:12 UTC 2018


So they are located close to the definitions of the corresponding
install_dirs and can be reused easily.

Cc: Petri Latvala <petri.latvala at intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler at intel.com>
---
 meson.build              | 38 ++++++++++++++++++++++++++++++++++++++
 tests/amdgpu/meson.build | 26 +-------------------------
 tests/meson.build        | 22 ----------------------
 tools/meson.build        | 32 +++++---------------------------
 4 files changed, 44 insertions(+), 74 deletions(-)

diff --git a/meson.build b/meson.build
index d45db9ac..7278c438 100644
--- a/meson.build
+++ b/meson.build
@@ -221,9 +221,47 @@ datadir = join_paths(get_option('datadir'), 'igt-gpu-tools')
 includedir = get_option('includedir')
 libdir = get_option('libdir')
 libexecdir = join_paths(get_option('libexecdir'), 'igt-gpu-tools')
+amdgpudir = join_paths(libexecdir, 'amdgpu')
 mandir = get_option('mandir')
 pkgconfigdir = join_paths(libdir, 'pkgconfig')
 
+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.
+
+	# 1. Start from the executable.
+	# 2. Executables are installed in certain dir. Add a .. for each
+	#    directory name in it.
+	# 3. Add relative path to libdir.
+
+	bindir_rpathdir = '$ORIGIN'
+	foreach p : bindir.split('/')
+		bindir_rpathdir = join_paths(bindir_rpathdir, '..')
+	endforeach
+	bindir_rpathdir = join_paths(bindir_rpathdir, libdir)
+
+	libexecdir_rpathdir = '$ORIGIN'
+	foreach p : libexecdir.split('/')
+		libexecdir_rpathdir = join_paths(libexecdir_rpathdir, '..')
+	endforeach
+	libexecdir_rpathdir = join_paths(libexecdir_rpathdir, libdir)
+
+	amdgpudir_rpathdir = '$ORIGIN'
+	foreach p : amdgpudir.split('/')
+		amdgpudir_rpathdir = join_paths(amdgpudir_rpathdir, '..')
+	endforeach
+	amdgpudir_rpathdir = join_paths(amdgpudir_rpathdir, libdir)
+else
+	bindir_rpathdir = ''
+	libexecdir_rpathdir = ''
+	amdgpudir_rpathdir = ''
+endif
+
 subdir('lib')
 if _build_tests
 	subdir('tests')
diff --git a/tests/amdgpu/meson.build b/tests/amdgpu/meson.build
index 15cfb2b5..566e851b 100644
--- a/tests/amdgpu/meson.build
+++ b/tests/amdgpu/meson.build
@@ -9,35 +9,11 @@ if libdrm_amdgpu.found()
 	amdgpu_deps += libdrm_amdgpu
 endif
 
-amdgpudir = join_paths(libexecdir, 'amdgpu')
-
-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 libexecdir are pathnames relative to
-	# prefix. meson enforces this.
-
-	# Start from the executable
-	amdgpu_rpathdir = '$ORIGIN'
-	# Executables are installed in amdgpudir. Add a .. for each
-	# directory name in it.
-	foreach p : amdgpudir.split('/')
-		amdgpu_rpathdir = join_paths(amdgpu_rpathdir, '..')
-	endforeach
-	# Add relative path to libdir
-	amdgpu_rpathdir = join_paths(amdgpu_rpathdir, libdir)
-else
-	amdgpu_rpathdir = ''
-endif
-
 foreach prog : amdgpu_progs
 	test_executables += executable(prog, prog + '.c',
 				       dependencies : amdgpu_deps,
 				       install_dir : amdgpudir,
-				       install_rpath : amdgpu_rpathdir,
+				       install_rpath : amdgpudir_rpathdir,
 				       install : true)
 	test_progs += join_paths('amdgpu', prog)
 endforeach
diff --git a/tests/meson.build b/tests/meson.build
index bb6c7627..17deb945 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -239,28 +239,6 @@ if _build_audio and alsa.found() and gsl.found()
 	test_deps += alsa
 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 libexecdir are pathnames relative to
-	# prefix. meson enforces this.
-
-	# Start from the executable
-	libexecdir_rpathdir = '$ORIGIN'
-	# Executables are installed in libexecdir. Add a .. for each
-	# directory name in it.
-	foreach p : libexecdir.split('/')
-		libexecdir_rpathdir = join_paths(libexecdir_rpathdir, '..')
-	endforeach
-	# Add relative path to libdir
-	libexecdir_rpathdir = join_paths(libexecdir_rpathdir, libdir)
-else
-	libexecdir_rpathdir = ''
-endif
-
 test_executables = []
 
 foreach prog : test_progs
diff --git a/tools/meson.build b/tools/meson.build
index ae9ba493..e4517d66 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -49,32 +49,10 @@ 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
-	tools_rpathdir = '$ORIGIN'
-	# Executables are installed in bindir. Add a .. for each
-	# directory name in it.
-	foreach p : bindir.split('/')
-		tools_rpathdir = join_paths(tools_rpathdir, '..')
-	endforeach
-	# Add relative path to libdir
-	tools_rpathdir = join_paths(tools_rpathdir, libdir)
-else
-	tools_rpathdir = ''
-endif
-
 foreach prog : tools_progs
 	executable(prog, prog + '.c',
 		   dependencies : tool_deps,
-		   install_rpath : tools_rpathdir,
+		   install_rpath : bindir_rpathdir,
 		   install : true)
 endforeach
 
@@ -85,21 +63,21 @@ if libudev.found()
 	]
 	executable('intel_dp_compliance', sources : intel_dp_compliance_src,
 		   dependencies : [tool_deps, libudev],
-		   install_rpath : tools_rpathdir,
+		   install_rpath : bindir_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 : tools_rpathdir,
+	   install_rpath : bindir_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 : tools_rpathdir,
+	   install_rpath : bindir_rpathdir,
 	   c_args : [
 	     '-DIGT_DATADIR="@0@"'.format(join_paths(prefix, datadir)),
 	   ])
@@ -118,7 +96,7 @@ shared_library('intel_aubdump', 'aubdump.c',
 
 executable('intel_gpu_top', 'intel_gpu_top.c',
 	   install : true,
-	   install_rpath : tools_rpathdir,
+	   install_rpath : bindir_rpathdir,
 	   dependencies : tool_deps + [ lib_igt_perf ])
 
 conf_data = configuration_data()
-- 
2.17.1



More information about the igt-dev mailing list