Make the sdl2-config script relocatable
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e434a8a..8c512bb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2697,6 +2697,7 @@ configure_file("${SDL2_SOURCE_DIR}/include/SDL_revision.h.cmake"
if(NOT WINDOWS OR CYGWIN OR MINGW)
set(prefix ${CMAKE_INSTALL_PREFIX})
+ file(RELATIVE_PATH bin_prefix_relpath "${CMAKE_INSTALL_FULL_BINDIR}" "${CMAKE_INSTALL_PREFIX}")
set(exec_prefix "\${prefix}")
set(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}")
diff --git a/configure b/configure
index 9d37869..027fa94 100755
--- a/configure
+++ b/configure
@@ -653,6 +653,7 @@ SDL_RLD_FLAGS
SDL_STATIC_LIBS
SDL_LIBS
SDL_CFLAGS
+bin_prefix_relpath
cmake_prefix_relpath
INSTALL_SDL2_CONFIG
LIBUSB_LIBS
@@ -27058,6 +27059,10 @@ eval pkg_cmakedir=$libdir/cmake/SDL2
cmake_prefix_relpath="$(echo -n "$pkg_cmakedir" | sed -E "s#^$pkg_prefix##" | sed -E "s#[A-Za-z0-9_ .-]+#..#g" )"
+eval pkg_bindir=$bindir
+bin_prefix_relpath="$(echo -n "pkg_bindir" | sed -E "s#^$pkg_prefix##" | sed -E "s#[A-Za-z0-9_ .-]+#..#g" )"
+
+
diff --git a/configure.ac b/configure.ac
index b81286e..2686db6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4694,6 +4694,11 @@ eval pkg_cmakedir=$libdir/cmake/SDL2
cmake_prefix_relpath="$(echo -n "$pkg_cmakedir" | sed -E "s#^$pkg_prefix##" | sed -E "s#[A-Za-z0-9_ .-]+#..#g" )"
AC_SUBST([cmake_prefix_relpath])
+dnl Calculate the location of the prefix, relative to bindir
+eval pkg_bindir=$bindir
+bin_prefix_relpath="$(echo -n "pkg_bindir" | sed -E "s#^$pkg_prefix##" | sed -E "s#[A-Za-z0-9_ .-]+#..#g" )"
+AC_SUBST([bin_prefix_relpath])
+
dnl Expand the cflags and libraries needed by apps using SDL
AC_SUBST(SDL_CFLAGS)
AC_SUBST(SDL_LIBS)
diff --git a/sdl2-config.in b/sdl2-config.in
index 5a2aed2..f6e5a50 100644
--- a/sdl2-config.in
+++ b/sdl2-config.in
@@ -1,6 +1,10 @@
#!/bin/sh
-prefix=@prefix@
+# Get the canonical path of the folder containing this script
+bindir=$(cd -P -- "$(dirname -- "$0")" && printf '%s\n' "$(pwd -P)")
+
+# Calculate the canonical path of the prefix, relative to the folder of this script
+prefix=$(cd -P -- "$bindir/@bin_prefix_relpath@" && printf '%s\n' "$(pwd -P)")
exec_prefix=@exec_prefix@
exec_prefix_set=no
libdir=@libdir@