From b3474802b81df6db83492adf251503d86b48299c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Tue, 31 Mar 2020 19:52:15 +0200
Subject: [PATCH] Rework setting of LD_LIBRARY_PATH for tests.

* testsuite/Makefile.in (check): Pass only TEST_SHLIB_DIR
to the run-tests script, and leave setting of LD_LIBRARY_PATH and
related variables to that script.
* examples/Makefile.in (check): Likewise.

* run-tests: Check TEST_SHLIB_DIR, and set up LD_LIBRARY_PATH and
related member variables.

* config.make.in (abs_top_builddir, TEST_SHLIB_DIR): New variables.
---
 ChangeLog             | 12 ++++++++++++
 config.make.in        |  3 +++
 examples/Makefile.in  |  3 +--
 run-tests             | 12 ++++++++++++
 testsuite/Makefile.in |  3 +--
 5 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index ce67af9e..30ae48e8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2020-03-31  Niels Möller  <nisse@lysator.liu.se>
+
+	* config.make.in (abs_top_builddir, TEST_SHLIB_DIR): New variables.
+
+	* run-tests: Check TEST_SHLIB_DIR, and set up LD_LIBRARY_PATH and
+	related member variables.
+
+	* testsuite/Makefile.in (check): Pass only TEST_SHLIB_DIR
+	to the run-tests script, and leave setting of LD_LIBRARY_PATH and
+	related variables to that script.
+	* examples/Makefile.in (check): Likewise.
+
 2020-03-26  Niels Möller  <nisse@lysator.liu.se>
 
 	* configure.ac: Bump package version to 3.6.
diff --git a/config.make.in b/config.make.in
index 649b7695..3f817076 100644
--- a/config.make.in
+++ b/config.make.in
@@ -64,6 +64,9 @@ bindir =	@bindir@
 libdir =	@libdir@
 includedir =	@includedir@
 infodir =	@infodir@
+abs_top_builddir = @abs_top_builddir@
+
+TEST_SHLIB_DIR = "${abs_top_builddir}/.lib"
 
 # PRE_CPPFLAGS and PRE_LDFLAGS lets each Makefile.in prepend its own
 # flags before CPPFLAGS and LDFLAGS. While EXTRA_CFLAGS are added at the end.
diff --git a/examples/Makefile.in b/examples/Makefile.in
index db8e91cc..eb6a8179 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -113,9 +113,8 @@ hogweed-benchmark$(EXEEXT): $(HOGWEED_BENCH_OBJS)
 $(TARGETS) : io.$(OBJEXT) ../libnettle.stamp
 $(HOGWEED_TARGETS): ../libhogweed.stamp
 
-# The PATH update is for windows dlls, DYLD_LIBRARY_PATH is for OSX.
 check: $(TS_ALL)
-	LD_LIBRARY_PATH=../.lib PATH="../.lib:$$PATH" DYLD_LIBRARY_PATH=../.lib \
+	TEST_SHLIB_DIR="$(TEST_SHLIB_DIR)" \
 	  srcdir="$(srcdir)" EMULATOR="$(EMULATOR)" EXEEXT="$(EXEEXT)" \
           "$(top_srcdir)"/run-tests $(TS_ALL)
 
diff --git a/run-tests b/run-tests
index 3d5655cf..5186d0c8 100755
--- a/run-tests
+++ b/run-tests
@@ -28,6 +28,18 @@ fi
 
 export srcdir
 
+if [ -n "$TEST_SHLIB_DIR" ] ; then
+  # Prepend to LD_LIBRARY_PATH, if it is alredy set.
+  LD_LIBRARY_PATH="${TEST_SHLIB_DIR}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
+  # For MACOS
+  DYLD_LIBRARY_PATH="$TEST_SHLIB_DIR"
+  # For Windows
+  PATH="${TEST_SHLIB_DIR}:${PATH}"
+  export LD_LIBRARY_PATH
+  export DYLD_LIBRARY_PATH
+  export PATH
+fi
+
 # When used in make rules, we sometimes get the filenames VPATH
 # expanded, but usually not.
 find_program () {
diff --git a/testsuite/Makefile.in b/testsuite/Makefile.in
index 70a92793..89b52efa 100644
--- a/testsuite/Makefile.in
+++ b/testsuite/Makefile.in
@@ -139,9 +139,8 @@ $(TARGETS) $(EXTRA_TARGETS): testutils.$(OBJEXT) ../nettle-internal.$(OBJEXT) \
 # data.
 VALGRIND = valgrind --error-exitcode=1 --leak-check=full --show-reachable=yes @IF_ASM@ --partial-loads-ok=yes
 
-# The PATH update is for windows dlls, DYLD_LIBRARY_PATH is for OSX.
 check: $(TS_ALL)
-	LD_LIBRARY_PATH=../.lib PATH="../.lib:$$PATH" DYLD_LIBRARY_PATH=../.lib \
+	TEST_SHLIB_DIR="$(TEST_SHLIB_DIR)" \
 	  srcdir="$(srcdir)" \
 	  EMULATOR="$(EMULATOR)" NM="$(NM)" EXEEXT="$(EXEEXT)" \
           $(top_srcdir)/run-tests $(TS_ALL)
-- 
GitLab