diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 867e9dd1f658ac1a5f310e310140b21cdfd34504..c81fcca04af319f47f7900bf01785187ec054c03 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1174,8 +1174,7 @@ lalapps:conda:py39:
     - SSE="solar_system_ephemerides/ephemerides"
     - ./configure
           ${ENABLE_NIGHTLY}
-          --with-relative-data-path="../lalapps/data:../${SSE}/earth:../${SSE}/sun:../${SSE}/time"
-          --without-fallback-data-path
+          --with-fallback-data-path="../lalapps/data:../${SSE}/earth:../${SSE}/sun:../${SSE}/time"
           --disable-doxygen
           --disable-swig-octave
           --enable-mpi
@@ -1214,8 +1213,7 @@ lalapps:conda:py39:
     - SSE="solar_system_ephemerides/ephemerides"
     - ./configure
           ${ENABLE_NIGHTLY}
-          --with-relative-data-path="../../lalapps/data:../../${SSE}/earth:../../${SSE}/sun:../../${SSE}/time"
-          --without-fallback-data-path
+          --with-fallback-data-path="../../lalapps/data:../../${SSE}/earth:../../${SSE}/sun:../../${SSE}/time"
           --disable-doxygen
           --disable-swig-octave
           --enable-mpi
@@ -1411,6 +1409,9 @@ lalpulsar_longtests:
           --enable-python
           --enable-swig-python
     - make -j${CPU_COUNT}
+    # test finding data files
+    - make install
+    - env LAL_DEBUG_LEVEL=info lalpulsar_PrintDetectorState --detector H1 --Alpha 4.65 --Delta -0.51 --timeGPS 1100000000 >/dev/null
     # run long-running tests under bin/longtests/
     - make -j${CPU_COUNT} check -C bin/longtests/ LONGTESTS=1
   needs:
diff --git a/gnuscripts/lalsuite_build.m4 b/gnuscripts/lalsuite_build.m4
index 22a8044c5d159392b831894cde3bdd4e724af4fe..28a71e9f3565c3ec4a52a4636686ea3bac4f5d0f 100644
--- a/gnuscripts/lalsuite_build.m4
+++ b/gnuscripts/lalsuite_build.m4
@@ -1,7 +1,7 @@
 # -*- mode: autoconf; -*-
 # lalsuite_build.m4 - top level build macros
 #
-# serial 177
+# serial 178
 
 # restrict which LALSUITE_... patterns can appearing in output (./configure);
 # useful for debugging problems with unexpanded LALSUITE_... Autoconf macros
@@ -964,6 +964,33 @@ AC_DEFUN([LALSUITE_ENABLE_LALAPPS],[
   )
 ])
 
+AC_DEFUN([LALSUITE_WITH_FALLBACK_DATA_PATH],[
+  AC_ARG_WITH(
+    [fallback_data_path],
+    AS_HELP_STRING([--with-fallback-data-path],[use hard-coded fallback location for LAL data path [default: $(pkgdatadir)]]),
+    [
+      AS_CASE(["${with_fallback_data_path}"],
+        [yes],[fallback_data_path='"$(pkgdatadir)"'],
+        [no],[fallback_data_path=NULL],
+        [
+          for n in `echo ${with_fallback_data_path} | sed 's|:| |g'`; do
+            AS_CASE(["${n}"],
+              ['./'*],[:],
+              ['../'*],[:],
+              ['$('*],[:],
+              [AC_MSG_ERROR([bad fallback LAL data path value '${n}' for --with-fallback-data-path])]
+            )
+          done
+          fallback_data_path="\"${with_fallback_data_path}\""
+        ]
+      )
+    ],[
+      fallback_data_path='"$(pkgdatadir)"'
+    ]
+  )
+  AM_CPPFLAGS="-DLAL_FALLBACK_DATA_PATH='${fallback_data_path}' ${AM_CPPFLAGS}"
+])
+
 AC_DEFUN([LALSUITE_WITH_CUDA],[
   AC_ARG_WITH(
     [cuda],
diff --git a/lal/configure.ac b/lal/configure.ac
index 4583145f0fae4f6f56d6f59b30aa45b058e3727e..6ddb3f9e7d0d4a04e7c239a23b4c2cb01d42287b 100644
--- a/lal/configure.ac
+++ b/lal/configure.ac
@@ -127,6 +127,7 @@ AC_CANONICAL_HOST
 LALSUITE_CHECK_PLATFORM
 LALSUITE_CHECK_GIT_REPO
 LALSUITE_DISTCHECK_CONFIGURE_FLAGS
+LALSUITE_WITH_FALLBACK_DATA_PATH
 
 LAL_ENABLE_INTELFFT
 LAL_ENABLE_FFTW3_MEMALIGN
@@ -135,7 +136,6 @@ LALSUITE_ENABLE_GCC_FLAGS
 LALSUITE_ENABLE_STRICT_DEFS
 
 LAL_WITH_DEFAULT_DEBUG_LEVEL
-LAL_WITH_DATA_PATH
 LAL_ENABLE_MEMORY_FUNCTIONS
 LAL_ENABLE_PTHREAD_LOCK
 LALSUITE_ENABLE_NIGHTLY
@@ -348,7 +348,6 @@ LALSUITE_ADD_GCC_FLAGS
 AC_SUBST([LDADD], ["\$(top_builddir)/lib/liblal.la \$(top_builddir)/lib/support/liblalsupport.la"])
 
 # add extra preprocessor flags
-AM_CPPFLAGS="-DPKG_DATA_DIR='\"\$(pkgdatadir)/\"' ${AM_CPPFLAGS}"
 AM_CPPFLAGS="-I\$(top_builddir)/include -I\$(top_srcdir)/lib ${AM_CPPFLAGS}"
 
 # force all python modules into the exec dir to prevent mixed C and
diff --git a/lal/gnuscripts/lal.m4 b/lal/gnuscripts/lal.m4
index c61d8dc305f8cca65238e08e7f9aabc869078655..4fc7ea3dfc28b9b7708eb8d412ee86af89ccb04c 100644
--- a/lal/gnuscripts/lal.m4
+++ b/lal/gnuscripts/lal.m4
@@ -1,6 +1,6 @@
 # lal.m4 - lal specific macros
 #
-# serial 24
+# serial 25
 
 AC_DEFUN([LAL_WITH_DEFAULT_DEBUG_LEVEL],[
   AC_ARG_WITH(
@@ -14,37 +14,6 @@ AC_DEFUN([LAL_WITH_DEFAULT_DEBUG_LEVEL],[
   AC_DEFINE_UNQUOTED([LAL_DEFAULT_DEBUG_LEVEL],[${with_default_debug_level}],[Set default value of lalDebugLevel])
 ])
 
-AC_DEFUN([LAL_WITH_DATA_PATH],[
-  AC_ARG_WITH(
-    [relative_data_path],
-    AS_HELP_STRING([--with-relative-data-path],[set locations relative to liblalsupport.so for LAL data path [default: none]]),
-    [
-      for n in `echo ${with_relative_data_path} | sed 's|:| |g'`; do
-        AS_IF([test "x`expr "X${n}" : ["^\(X\./.*$\)"]`" != "xX${n}" && test "x`expr "X${n}" : ["^\(X\.\./.*$\)"]`" != "xX${n}"],[
-          AC_MSG_ERROR([bad relative path value '${with_relative_data_path}' for --with-relative-data-path])
-        ])
-      done
-      AC_DEFINE_UNQUOTED([LAL_RELATIVE_DATA_PATH],["${with_relative_data_path}"],[Set location relative to liblal.so for LAL data path])
-    ]
-  )
-  AC_ARG_WITH(
-    [fallback_data_path],
-    AS_HELP_STRING([--with-fallback-data-path],[use hard-coded fallback location for LAL data path [default: yes]]),
-    [
-      AS_CASE(["${with_fallback_data_path}"],
-        [yes],[:],
-        [no],[:],
-        AC_MSG_ERROR([bad value '${with_fallback_data_path}' for --with-fallback-data-path])
-      )
-    ],[
-      with_fallback_data_path=yes
-    ]
-  )
-  AS_IF([test "X${with_fallback_data_path}" = Xyes],[
-    AC_DEFINE_UNQUOTED([LAL_FALLBACK_DATA_PATH],[1],[Use hard-coded fallback location for LAL data path])
-  ])
-])
-
 AC_DEFUN([LAL_ENABLE_FFTW3_MEMALIGN],
 [AC_ARG_ENABLE(
   [fftw3_memalign],
diff --git a/lal/lib/support/FileIO.c b/lal/lib/support/FileIO.c
index eb6db82a08bf73ba473d6213980c15fb23663eba..7150aabc02b9fb7a6ad57ce39ea0861bc29fad6d 100644
--- a/lal/lib/support/FileIO.c
+++ b/lal/lib/support/FileIO.c
@@ -79,36 +79,15 @@ LALFILE *lalstderr( void )
   return &_lalstderr;
 }
 
-/** 'Resolve' a given filename 'fname', returning a file path where the
- *  file can successfully be opened by fopen() using mode='rb'.
- *
- * Return: successful file-path or NULL if failed.
- *
- * Resolving uses the following algorithm: if 'fname' contains a
- * i) (relative or absolute) path: only tries to open that path directly
- * ii) pure filename: try
- *     1) local dir, then
- *     2) search LAL_DATA_PATH, then
- *     3) search LAL_RELATIVE_DATA_PATH relative to location of liblalsupport.so (if enabled), then
- *     4) try fallbackdir (if enabled/given)
- *     return first successful hit
- *
- * Note: it is not an error if the given 'fname' cannot be resolved,
- * this will simply return NULL but xlalErrno will not be set in that case.
- *
- * Note2: successfully resolving an 'fname' doesn't guarantee that the path points
- * to a file, as directories can also be opened in 'rb'.
- *
- * Note3: the returned string is allocated here and must be XLALFree'ed by the caller.
- */
+
+/** \cond DONT_DOXYGEN */
+/* should be only called from XLAL_FILE_RESOLVE_PATH() */
 char *
-XLALFileResolvePathLong ( const char *fname,                //!< [in] filename or file-path to resolve
-                          const char UNUSED *fallbackdir    //!< [in] directory to try as a last resort (usually PKG_DATA_DIR) [can be NULL]
-                          )
+XLALFileResolvePathLong ( const char *fname, const char *fallbackpath )
 {
   XLAL_CHECK_NULL ( fname != NULL, XLAL_EINVAL );
 
-  UINT4 fname_len = strlen ( fname );
+  const UINT4 fname_len = strlen ( fname );
 
   XLALPrintInfo ( "%s(): trying to resolve fname='%s' ...\n", __func__, fname );
 
@@ -128,7 +107,7 @@ XLALFileResolvePathLong ( const char *fname,                //!< [in] filename o
       } // if not found
 
     } // end: if path given
-  else	// if pure filename given: try 1) local directory, then 2) scan LAL_DATA_PATH, then 3) scan LAL_RELATIVE_DATA_PATH (if enabled), then 4) try fallbackdir (if enabled/given)
+  else	// if pure filename given: try 1) local directory, then 2) scan LAL_DATA_PATH, then 3) scan 'fallbackpath' (if given)
     {
       FILE *tmp;
       char *resolveFname = NULL;
@@ -174,73 +153,62 @@ XLALFileResolvePathLong ( const char *fname,                //!< [in] filename o
 
         } // if LAL_DATA_PATH given
 
-      // ----- Strategy 3: scan LAL_RELATIVE_DATA_PATH relative to location of to liblalsupport.so, if enabled
-#ifndef LAL_RELATIVE_DATA_PATH
-      XLALPrintInfo ( "%s(): skip strategy LAL_RELATIVE_DATA_PATH: disabled\n", __func__ );
-#else
-      XLALPrintInfo ( "%s(): strategy: LAL_RELATIVE_DATA_PATH='%s'\n", __func__, LAL_RELATIVE_DATA_PATH );
-      {
+      // ----- Strategy 3: scan 'fallbackpath', if given
+      if ( ! fallbackpath ) {
+        XLALPrintInfo ( "%s(): skip strategy: fallbackpath=NULL\n", __func__ );
+      } else {
+        XLALPrintInfo ( "%s(): strategy: fallbackpath='%s'\n", __func__, fallbackpath );
 
         // get location of liblalsupport.so
+        char *module_path = NULL;
         int module_path_length = wai_getModulePath ( NULL, 0, NULL );
-        if ( module_path_length <= 0 ) {
-          XLALPrintInfo ( "%s(): skip strategy LAL_RELATIVE_DATA_PATH: wai_getModulePath() failed\n", __func__ );
-        } else {
-          char *module_path = XLALMalloc ( module_path_length + 1 );
+        int module_dirname_length = 0;
+        if ( module_path_length > 0 ) {
+          module_path = XLALMalloc ( module_path_length + 1 );
           XLAL_CHECK_NULL ( module_path != NULL, XLAL_ENOMEM );
-          int module_dirname_length = 0;
           XLAL_CHECK_NULL ( wai_getModulePath ( module_path, module_path_length, &module_dirname_length ) > 0, XLAL_EERR );
           module_path[module_path_length] = '\0';
           XLAL_CHECK_NULL ( module_dirname_length >= 0, XLAL_EERR );
           XLAL_CHECK_NULL ( module_dirname_length < module_path_length, XLAL_EERR );
           module_path[module_dirname_length] = '\0';
+        }
 
-          // try path starting in directory containing liblalsupport.so, plus path tokens from LAL_RELATIVE_DATA_PATH
-          TokenList *subPaths = NULL;
-          XLAL_CHECK_NULL ( XLALCreateTokenList ( &subPaths, LAL_RELATIVE_DATA_PATH, ":" ) == XLAL_SUCCESS, XLAL_EFUNC );
-          for ( UINT4 i = 0; i < subPaths->nTokens; i ++ )
-            {
-              const char *subPath_i = subPaths->tokens[i];
-              XLAL_CHECK_NULL ( (resolveFname = XLALRealloc ( resolveFname, module_dirname_length + 1 + strlen(subPath_i) + 1 + fname_len + 1 )) != NULL, XLAL_ENOMEM );
+        // search 'fallbackpath'; relative paths are considered relative to location of liblalsupport.so (if known)
+        TokenList *subPaths = NULL;
+        XLAL_CHECK_NULL ( XLALCreateTokenList ( &subPaths, fallbackpath, ":" ) == XLAL_SUCCESS, XLAL_EFUNC );
+        for ( UINT4 i = 0; i < subPaths->nTokens; i ++ )
+          {
+            const char *subPath_i = subPaths->tokens[i];
+            const UINT4 subPath_i_len = strlen ( subPath_i );
+            if ( subPath_i_len == 0 ) {
+              XLALPrintInfo ( "%s(): skip empty fallbackpath element\n", __func__ );
+              continue;
+            }
+            if ( subPath_i[0] == '.' ) {
+              if ( ! module_path ) {
+                XLALPrintInfo ( "%s(): skip relative fallbackpath element '%s': location of liblalsupport.so unknown\n", __func__, subPath_i );
+                continue;
+              }
+              XLAL_CHECK_NULL ( (resolveFname = XLALRealloc ( resolveFname, module_dirname_length + 1 + subPath_i_len + 1 + fname_len + 1 )) != NULL, XLAL_ENOMEM );
               sprintf ( resolveFname, "%s/%s/%s", module_path, subPath_i, fname );
-              XLALPrintInfo ( "%s(): trying '%s' -> '%s' ...\n", __func__, fname, resolveFname );
-              if ( (tmp = LALFopen ( resolveFname, "rb" )) != NULL ) {
-                LALFclose ( tmp );
-                XLALFree ( module_path );
-                XLALDestroyTokenList ( subPaths );
-                XLALPrintInfo ( "%s(): success '%s' -> '%s'\n", __func__, fname, resolveFname );
-                return resolveFname;
-              } // if found
+            } else {
+              XLAL_CHECK_NULL ( (resolveFname = XLALRealloc ( resolveFname, subPath_i_len + 1 + fname_len + 1 )) != NULL, XLAL_ENOMEM );
+              sprintf ( resolveFname, "%s/%s", subPath_i, fname );
             }
+            XLALPrintInfo ( "%s(): trying '%s' -> '%s' ...\n", __func__, fname, resolveFname );
+            if ( (tmp = LALFopen ( resolveFname, "rb" )) != NULL ) {
+              LALFclose ( tmp );
+              XLALFree ( module_path );
+              XLALDestroyTokenList ( subPaths );
+              XLALPrintInfo ( "%s(): success '%s' -> '%s'\n", __func__, fname, resolveFname );
+              return resolveFname;
+            } // if found
+          }
+
+        XLALFree ( module_path );
+        XLALDestroyTokenList ( subPaths );
 
-          XLALFree ( module_path );
-          XLALDestroyTokenList ( subPaths );
-
-        }
       }
-#endif // if LAL_RELATIVE_DATA_PATH
-
-      // ----- Strategy 4: try 'fallbackdir' if given
-#ifndef LAL_FALLBACK_DATA_PATH
-      XLALPrintInfo ( "%s(): skip strategy fallbackdir: disabled\n", __func__ );
-#else
-      if ( fallbackdir == NULL )
-        {
-          XLALPrintInfo ( "%s(): skip strategy fallbackdir: argument not given\n", __func__ );
-        }
-      else
-        {
-          XLALPrintInfo ( "%s(): strategy: fallbackdir='%s'\n", __func__, fallbackdir );
-          XLAL_CHECK_NULL ( (resolveFname = XLALRealloc ( resolveFname, strlen(fallbackdir) + 1 + strlen(fname) + 1 )) != NULL, XLAL_ENOMEM );
-          sprintf ( resolveFname, "%s/%s", fallbackdir, fname );
-          XLALPrintInfo ( "%s(): trying '%s' -> '%s' ...\n", __func__, fname, resolveFname );
-          if ( (tmp = LALFopen ( resolveFname, "rb" )) != NULL ) {
-            LALFclose ( tmp );
-            XLALPrintInfo ( "%s(): success '%s' -> '%s'\n", __func__, fname, resolveFname );
-            return resolveFname;
-          } // if found
-        } // if fallbackdir
-#endif // if LAL_FALLBACK_DATA_PATH
 
       XLALFree ( resolveFname );
 
@@ -252,14 +220,14 @@ XLALFileResolvePathLong ( const char *fname,                //!< [in] filename o
 
 } // XLALFileResolvePathLong()
 
-/** Simple wrapper to XLALFileResolvePathLong(), using hardcoded fallbackdir=PKG_DATA_DIR
- */
+/* Simple wrapper to XLAL_FILE_RESOLVE_PATH(), using hardcoded fallbackdir for LAL
+   Use of XLAL_FILE_RESOLVE_PATH() directly is preferred; kept for ABI backward compatibility */
 char *
-XLALFileResolvePath ( const char *fname	  //!< [in] filename or file-path to resolve
-                      )
+XLALFileResolvePath ( const char *fname )
 {
-  return XLALFileResolvePathLong ( fname, PKG_DATA_DIR );
+  return XLAL_FILE_RESOLVE_PATH( fname );
 } // XLALFileResolvePath()
+/** \endcond */ // DONT_DOXYGEN
 
 /** Read a complete data-file into memory as a string
  */
diff --git a/lal/lib/support/FileIO.h b/lal/lib/support/FileIO.h
index 6e8a10a4526a118a155091990971acd5a4f4f7d1..6a7dafa3c8a57f4b581da2eaa323432126aee9de 100644
--- a/lal/lib/support/FileIO.h
+++ b/lal/lib/support/FileIO.h
@@ -26,6 +26,7 @@ extern "C" {
 
 #include <stdio.h>
 #include <stdarg.h>
+#include <lal/LALStddef.h>
 #include <lal/LALStdio.h>
 
 /**
@@ -81,8 +82,38 @@ int XLALFileIsRegularAndGetSize ( const char *path, size_t *fileLen );
 int XLALFileIsRegular ( const char *path );
 size_t XLALFileSize ( const char *path );
 
-char *XLALFileResolvePathLong ( const char *fname, const char *fallbackdir );
-char *XLALFileResolvePath( const char *fname );
+/** \cond DONT_DOXYGEN */
+char *XLALFileResolvePathLong ( const char *fname, const char *fallbackpath );
+char *XLALFileResolvePath ( const char *fname );
+/** \endcond */ // DONT_DOXYGEN
+
+/** 'Resolve' a given filename 'fname', returning a file path where the
+ *  file can successfully be opened by fopen() using mode='rb'.
+ *
+ * Return: successful file-path or NULL if failed.
+ *
+ * Resolving uses the following algorithm: if 'fname' contains a
+ * i) (relative or absolute) path: only tries to open that path directly
+ * ii) pure filename: try
+ *     1) local dir, then
+ *     2) search $LAL_DATA_PATH, then
+ *     3) search 'fallbackpath'; relative paths are considered relative to location of liblalsupport.so (if known)
+ *     return first successful hit
+ *
+ * Note: it is not an error if the given 'fname' cannot be resolved,
+ * this will simply return NULL but xlalErrno will not be set in that case.
+ *
+ * Note2: successfully resolving an 'fname' doesn't guarantee that the path points
+ * to a file, as directories can also be opened in 'rb'.
+ *
+ * Note3: the returned string is allocated here and must be XLALFree'ed by the caller.
+ *
+ * Note4: this function should only be used from within LALSuite, as it relies
+ * on macros defined by the LALSuite build system. For the public API, functions
+ * should be defined for specific types of data files, which then call
+ * XLAL_FILE_RESOLVE_PATH() internally.
+ */
+#define XLAL_FILE_RESOLVE_PATH( fname ) XLALFileResolvePathLong ( fname, LAL_FALLBACK_DATA_PATH )
 
 char *XLALFileLoad ( const char *path );
 
diff --git a/lalapps/configure.ac b/lalapps/configure.ac
index 0dcbe886ebad6ba498162bf79c49fe294335289d..c545e8395fd9d5319fc3f58af4be45d30e7df0da 100644
--- a/lalapps/configure.ac
+++ b/lalapps/configure.ac
@@ -73,6 +73,7 @@ LALSUITE_ARG_VAR
 LALSUITE_CHECK_PLATFORM
 LALSUITE_CHECK_GIT_REPO
 LALSUITE_DISTCHECK_CONFIGURE_FLAGS
+LALSUITE_WITH_FALLBACK_DATA_PATH
 
 LALSUITE_ENABLE_GCC_FLAGS
 LALSUITE_ENABLE_STRICT_DEFS
@@ -258,7 +259,6 @@ AC_DEFINE_UNQUOTED([PREFIX],["$prefix"],[Install prefix])
 LALSUITE_ADD_GCC_FLAGS
 
 # add extra preprocessor flags
-AM_CPPFLAGS="-DPKG_DATA_DIR='\"\$(pkgdatadir)/\"' ${AM_CPPFLAGS}"
 AM_CPPFLAGS="-I\$(top_builddir)/src/lalapps ${AM_CPPFLAGS}"
 AM_CPPFLAGS="-I\$(top_srcdir)/src/lalapps ${AM_CPPFLAGS}"
 AM_CPPFLAGS="-I\$(top_srcdir)/src ${AM_CPPFLAGS}"
diff --git a/lalburst/configure.ac b/lalburst/configure.ac
index ed6b67fc2c346e86b1c7f4f2a37a172b26fa401b..a2344a84b8503be6fabca2fcfc52e4b6d8745daa 100644
--- a/lalburst/configure.ac
+++ b/lalburst/configure.ac
@@ -83,6 +83,7 @@ LALSUITE_ARG_VAR
 LALSUITE_CHECK_PLATFORM
 LALSUITE_CHECK_GIT_REPO
 LALSUITE_DISTCHECK_CONFIGURE_FLAGS
+LALSUITE_WITH_FALLBACK_DATA_PATH
 
 # nightly build
 LALSUITE_ENABLE_NIGHTLY
@@ -168,7 +169,6 @@ LALSUITE_ADD_GCC_FLAGS
 AC_SUBST([LDADD], ["\$(top_builddir)/lib/liblalburst.la"])
 
 # add extra preprocessor flags
-AM_CPPFLAGS="-DPKG_DATA_DIR='\"\$(pkgdatadir)/\"' ${AM_CPPFLAGS}"
 AM_CPPFLAGS="-I\$(top_builddir)/include ${AM_CPPFLAGS}"
 
 # force headers to be installed in ${includedir}/lal, ignoring library name
diff --git a/lalframe/configure.ac b/lalframe/configure.ac
index db69ac097dc77b19edc2fe48bb28fa5f4b19f2d9..8e2ef98d9dc3b85d2f1792e3b2084c8f9028a1e6 100644
--- a/lalframe/configure.ac
+++ b/lalframe/configure.ac
@@ -82,6 +82,7 @@ LALSUITE_ARG_VAR
 LALSUITE_CHECK_PLATFORM
 LALSUITE_CHECK_GIT_REPO
 LALSUITE_DISTCHECK_CONFIGURE_FLAGS
+LALSUITE_WITH_FALLBACK_DATA_PATH
 
 # nightly build
 LALSUITE_ENABLE_NIGHTLY
@@ -206,7 +207,6 @@ LALSUITE_ADD_GCC_FLAGS
 AC_SUBST([LDADD], ["\$(top_builddir)/lib/liblalframe.la"])
 
 # add extra preprocessor flags
-AM_CPPFLAGS="-DPKG_DATA_DIR='\"\$(pkgdatadir)/\"' ${AM_CPPFLAGS}"
 AM_CPPFLAGS="-I\$(top_builddir)/include ${AM_CPPFLAGS}"
 
 # force headers to be installed in ${includedir}/lal, ignoring library name
diff --git a/lalinference/configure.ac b/lalinference/configure.ac
index c3e7a7a6eebf5f9c24d9d54605b4a3e20f0161c4..4575cc05d5a616ee4931aff3a0a95761d84d1d45 100644
--- a/lalinference/configure.ac
+++ b/lalinference/configure.ac
@@ -98,6 +98,7 @@ LALSUITE_ARG_VAR
 LALSUITE_CHECK_PLATFORM
 LALSUITE_CHECK_GIT_REPO
 LALSUITE_DISTCHECK_CONFIGURE_FLAGS
+LALSUITE_WITH_FALLBACK_DATA_PATH
 
 # nightly build
 LALSUITE_ENABLE_NIGHTLY
@@ -211,7 +212,6 @@ LALSUITE_ADD_GCC_FLAGS
 AC_SUBST([LDADD], ["\$(top_builddir)/lib/liblalinference.la"])
 
 # add extra preprocessor flags
-AM_CPPFLAGS="-DPKG_DATA_DIR='\"\$(pkgdatadir)/\"' ${AM_CPPFLAGS}"
 AM_CPPFLAGS="-I\$(top_builddir)/include ${AM_CPPFLAGS}"
 
 # force headers to be installed in ${includedir}/lal, ignoring library name
diff --git a/lalinspiral/configure.ac b/lalinspiral/configure.ac
index 3572275dc80f310b625e4677de4f69248129997d..98d3161da2edfb78d921b498b30c6cdfdad32ea9 100644
--- a/lalinspiral/configure.ac
+++ b/lalinspiral/configure.ac
@@ -86,6 +86,7 @@ LALSUITE_ARG_VAR
 LALSUITE_CHECK_PLATFORM
 LALSUITE_CHECK_GIT_REPO
 LALSUITE_DISTCHECK_CONFIGURE_FLAGS
+LALSUITE_WITH_FALLBACK_DATA_PATH
 
 # nightly build
 LALSUITE_ENABLE_NIGHTLY
@@ -173,7 +174,6 @@ LALSUITE_ADD_GCC_FLAGS
 AC_SUBST([LDADD], ["\$(top_builddir)/lib/liblalinspiral.la"])
 
 # add extra preprocessor flags
-AM_CPPFLAGS="-DPKG_DATA_DIR='\"\$(pkgdatadir)/\"' ${AM_CPPFLAGS}"
 AM_CPPFLAGS="-I\$(top_builddir)/include ${AM_CPPFLAGS}"
 
 # force headers to be installed in ${includedir}/lal, ignoring library name
diff --git a/lalmetaio/configure.ac b/lalmetaio/configure.ac
index 63df48e9a82602a60f5d7a3d5979ef0a985dc8c1..8050216b1d6d13ef8bfd29452b5dbee90f9e07e4 100644
--- a/lalmetaio/configure.ac
+++ b/lalmetaio/configure.ac
@@ -77,6 +77,7 @@ LALSUITE_ARG_VAR
 LALSUITE_CHECK_PLATFORM
 LALSUITE_CHECK_GIT_REPO
 LALSUITE_DISTCHECK_CONFIGURE_FLAGS
+LALSUITE_WITH_FALLBACK_DATA_PATH
 
 # nightly build
 LALSUITE_ENABLE_NIGHTLY
@@ -148,7 +149,6 @@ LALSUITE_ADD_GCC_FLAGS
 AC_SUBST([LDADD], ["\$(top_builddir)/lib/liblalmetaio.la"])
 
 # add extra preprocessor flags
-AM_CPPFLAGS="-DPKG_DATA_DIR='\"\$(pkgdatadir)/\"' ${AM_CPPFLAGS}"
 AM_CPPFLAGS="-I\$(top_builddir)/include ${AM_CPPFLAGS}"
 
 # force headers to be installed in ${includedir}/lal, ignoring library name
diff --git a/lalpulsar/configure.ac b/lalpulsar/configure.ac
index 8f837553939a7827f0d38da2260a40048602bfee..1fef8174970ce258b0347c804112ead6af0126fd 100644
--- a/lalpulsar/configure.ac
+++ b/lalpulsar/configure.ac
@@ -101,6 +101,7 @@ LALSUITE_ARG_VAR
 LALSUITE_CHECK_PLATFORM
 LALSUITE_CHECK_GIT_REPO
 LALSUITE_DISTCHECK_CONFIGURE_FLAGS
+LALSUITE_WITH_FALLBACK_DATA_PATH
 
 # nightly build
 LALSUITE_ENABLE_NIGHTLY
@@ -236,7 +237,6 @@ LALSUITE_ADD_GCC_FLAGS
 AC_SUBST([LDADD], ["\$(top_builddir)/lib/liblalpulsar.la"])
 
 # add extra preprocessor flags
-AM_CPPFLAGS="-DPKG_DATA_DIR='\"\$(pkgdatadir)/\"' ${AM_CPPFLAGS}"
 AM_CPPFLAGS="-I\$(top_builddir)/include ${AM_CPPFLAGS}"
 
 # force headers to be installed in ${includedir}/lal, ignoring library name
diff --git a/lalpulsar/lib/LALInitBarycenter.c b/lalpulsar/lib/LALInitBarycenter.c
index 300cc70638c0b21e7f2077d2c0906b2924c30a62..ab7dfd7e74eb5e3c1a02602ca91366d4509db8a3 100644
--- a/lalpulsar/lib/LALInitBarycenter.c
+++ b/lalpulsar/lib/LALInitBarycenter.c
@@ -97,7 +97,7 @@ XLALInitTimeCorrections ( const CHAR *timeCorrectionFile /**< File containing Ea
     XLAL_ERROR_NULL( XLAL_EINVAL, "Invalid NULL input for 'timeCorrectionFile'\n" );
 
   char *fname_path;
-  XLAL_CHECK_NULL ( (fname_path = XLALPulsarFileResolvePath ( timeCorrectionFile )) != NULL, XLAL_EINVAL );
+  XLAL_CHECK_NULL ( (fname_path = XLAL_FILE_RESOLVE_PATH( timeCorrectionFile )) != NULL, XLAL_EINVAL );
 
   /* read in file with XLALParseDataFile to ignore comment header lines */
   if ( XLALParseDataFile ( &flines, fname_path ) != XLAL_SUCCESS ) {
@@ -444,14 +444,15 @@ XLALDestroyEphemerisVector ( EphemerisVector *ephemV )
 } /* XLALDestroyEphemerisVector() */
 
 
-/** Simple wrapper to XLALFileResolvePathLong(), using hardcoded fallbackdir=PKG_DATA_DIR
- */
+/** \cond DONT_DOXYGEN */
+/* Simple wrapper to XLAL_FILE_RESOLVE_PATH(), using hardcoded fallbackdir for LALPulsar
+   Use of XLAL_FILE_RESOLVE_PATH() directly is preferred; kept for ABI backward compatibility */
 char *
-XLALPulsarFileResolvePath ( const char *fname	  //!< [in] filename or file-path to resolve
-                            )
+XLALPulsarFileResolvePath ( const char *fname )
 {
-  return XLALFileResolvePathLong ( fname, PKG_DATA_DIR );
+  return XLAL_FILE_RESOLVE_PATH( fname );
 } // XLALPulsarFileResolvePath()
+/** \endcond */
 
 /**
  * XLAL function to read ephemeris-data from one file, returning a EphemerisVector.
@@ -461,8 +462,7 @@ XLALPulsarFileResolvePath ( const char *fname	  //!< [in] filename or file-path
  * to read "<fname>.gz" instead. This allows us to handle gzip-compressed ephemeris-files without having
  * to worry about the detailed filename extension used in the case of compression.
  *
- * NOTE2: files are searches first locally, then in LAL_DATA_PATH, and finally in PKG_DATA_DIR
- * using XLALPulsarFileResolvePath()
+ * NOTE2: files are searched using XLAL_FILE_RESOLVE_PATH()
  */
 EphemerisVector *
 XLALReadEphemerisFile ( const CHAR *fname )
@@ -473,13 +473,13 @@ XLALReadEphemerisFile ( const CHAR *fname )
   char *fname_path = NULL;
 
   // first check if "<fname>" can be resolved ...
-  if ( (fname_path = XLALPulsarFileResolvePath ( fname )) == NULL )
+  if ( (fname_path = XLAL_FILE_RESOLVE_PATH( fname )) == NULL )
     {
       // if not, check if we can find "<fname>.gz" instead ...
       char *fname_gz;
       XLAL_CHECK_NULL ( (fname_gz = XLALMalloc ( strlen(fname) + strlen(".gz") + 1 )) != NULL, XLAL_ENOMEM );
       sprintf ( fname_gz, "%s.gz", fname );
-      if ( (fname_path = XLALPulsarFileResolvePath ( fname_gz )) == NULL )
+      if ( (fname_path = XLAL_FILE_RESOLVE_PATH( fname_gz )) == NULL )
         {
           XLALFree ( fname_gz );
           XLAL_ERROR_NULL ( XLAL_EINVAL, "Failed to find ephemeris-file '%s[.gz]'\n", fname );
diff --git a/lalsimulation/configure.ac b/lalsimulation/configure.ac
index 57dbadf13a7827cde8f8add36286e298cac0a2af..b1ad24fb04c53cfc1c2bbdc94fe67942ecc7068a 100644
--- a/lalsimulation/configure.ac
+++ b/lalsimulation/configure.ac
@@ -84,6 +84,7 @@ LALSUITE_ARG_VAR
 LALSUITE_CHECK_PLATFORM
 LALSUITE_CHECK_GIT_REPO
 LALSUITE_DISTCHECK_CONFIGURE_FLAGS
+LALSUITE_WITH_FALLBACK_DATA_PATH
 
 # nightly build
 LALSUITE_ENABLE_NIGHTLY
@@ -224,7 +225,6 @@ LALSUITE_ADD_GCC_FLAGS
 AC_SUBST([LDADD], ["\$(top_builddir)/lib/liblalsimulation.la"])
 
 # add extra preprocessor flags
-AM_CPPFLAGS="-DPKG_DATA_DIR='\"\$(pkgdatadir)/\"' ${AM_CPPFLAGS}"
 AM_CPPFLAGS="-I\$(top_builddir)/include ${AM_CPPFLAGS}"
 
 # force headers to be installed in ${includedir}/lal, ignoring library name
diff --git a/lalsimulation/lib/LALSimIMRNRHybSur3dq8.c b/lalsimulation/lib/LALSimIMRNRHybSur3dq8.c
index 16f468433b76e92e4ea74a34f274000731dc146e..3693b4df624af38611bb83adfa502af44591aeda 100644
--- a/lalsimulation/lib/LALSimIMRNRHybSur3dq8.c
+++ b/lalsimulation/lib/LALSimIMRNRHybSur3dq8.c
@@ -112,7 +112,7 @@ static void NRHybSur3dq8_Init_LALDATA(void) {
 
     if (NRHybSur3dq8_IsSetup()) return;
 
-    char *path = XLALFileResolvePathLong(NRHybSur3dq8_DATAFILE, PKG_DATA_DIR);
+    char *path = XLAL_FILE_RESOLVE_PATH(NRHybSur3dq8_DATAFILE);
     if (path==NULL) {
         XLAL_ERROR_VOID(XLAL_ENOENT,
             "Unable to find data file %s in $LAL_DATA_PATH\n",
diff --git a/lalsimulation/lib/LALSimIMRNRSur4d2s.c b/lalsimulation/lib/LALSimIMRNRSur4d2s.c
index 7e69317c76ef2c04185dc4dff838899fa9d00e9f..4882763fc14e8505ef9cc0e3988f17fb4f4264be 100644
--- a/lalsimulation/lib/LALSimIMRNRSur4d2s.c
+++ b/lalsimulation/lib/LALSimIMRNRSur4d2s.c
@@ -1114,7 +1114,7 @@ static void NRSurrogate_Init_LALDATA(void)
 {
   if (NRSurrogate_IsSetup()) return;
 
-  char *path = XLALFileResolvePathLong(NRSUR4D2S_DATAFILE, PKG_DATA_DIR);
+  char *path = XLAL_FILE_RESOLVE_PATH(NRSUR4D2S_DATAFILE);
 
   if (path==NULL)
     XLAL_ERROR_VOID(XLAL_EIO, "Unable to resolve data file %s in $LAL_DATA_PATH\n", NRSUR4D2S_DATAFILE);
diff --git a/lalsimulation/lib/LALSimIMRPrecessingNRSur.c b/lalsimulation/lib/LALSimIMRPrecessingNRSur.c
index 2b03370f8aa5b51cc52e2f5fd2c5fd1c86635935..32d9d5fbe5bcab2de5fc6f29585ac05d54fa221f 100644
--- a/lalsimulation/lib/LALSimIMRPrecessingNRSur.c
+++ b/lalsimulation/lib/LALSimIMRPrecessingNRSur.c
@@ -150,7 +150,7 @@ static PrecessingNRSurData __lalsim_NRSur7dq4_data;
 static void NRSur7dq2_Init_LALDATA(void) {
     if (NRSur7dq2_IsSetup()) return;
 
-    char *path = XLALFileResolvePathLong(NRSUR7DQ2_DATAFILE, PKG_DATA_DIR);
+    char *path = XLAL_FILE_RESOLVE_PATH(NRSUR7DQ2_DATAFILE);
     if (path==NULL)
         XLAL_ERROR_VOID(XLAL_EIO, "Unable to resolve data file %s in $LAL_DATA_PATH\n", NRSUR7DQ2_DATAFILE);
     char *dir = dirname(path);
@@ -178,7 +178,7 @@ static void NRSur7dq4_Init_LALDATA(void) {
 
     if (NRSur7dq4_IsSetup()) return;
 
-    char *path = XLALFileResolvePathLong(NRSUR7DQ4_DATAFILE, PKG_DATA_DIR);
+    char *path = XLAL_FILE_RESOLVE_PATH(NRSUR7DQ4_DATAFILE);
     if (path==NULL)
         XLAL_ERROR_VOID(XLAL_EIO, "Unable to resolve data file %s in $LAL_DATA_PATH\n", NRSUR7DQ4_DATAFILE);
     char *dir = dirname(path);
diff --git a/lalsimulation/lib/LALSimIMRSEOBNRv1ROMDoubleSpin.c b/lalsimulation/lib/LALSimIMRSEOBNRv1ROMDoubleSpin.c
index 9fcb6a9d5242f02a6d82ad41486a06683b8e76b5..c74ecae804502dc7fd96c820d3d197cdfa7bf468 100644
--- a/lalsimulation/lib/LALSimIMRSEOBNRv1ROMDoubleSpin.c
+++ b/lalsimulation/lib/LALSimIMRSEOBNRv1ROMDoubleSpin.c
@@ -869,7 +869,7 @@ static void SEOBNRv1ROMDoubleSpin_Init_LALDATA(void)
   // then we expect the remaining datafiles to also be there.
   char datafile[] = "SEOBNRv1ROM_DS_Phase_ciall.dat";
 
-  char *path = XLALFileResolvePathLong(datafile, PKG_DATA_DIR);
+  char *path = XLAL_FILE_RESOLVE_PATH(datafile);
   if (path==NULL)
     XLAL_ERROR_VOID(XLAL_EIO, "Unable to resolve data file %s in $LAL_DATA_PATH\n", datafile);
   char *dir = dirname(path);
diff --git a/lalsimulation/lib/LALSimIMRSEOBNRv1ROMEffectiveSpin.c b/lalsimulation/lib/LALSimIMRSEOBNRv1ROMEffectiveSpin.c
index 1ff5d9619b5834755818205742dcb8a4930c34e6..3b58cc1db178b1e5780969bd9c7bf2b12316d8f4 100644
--- a/lalsimulation/lib/LALSimIMRSEOBNRv1ROMEffectiveSpin.c
+++ b/lalsimulation/lib/LALSimIMRSEOBNRv1ROMEffectiveSpin.c
@@ -858,7 +858,7 @@ static void SEOBNRv1ROMEffectiveSpin_Init_LALDATA(void)
   // then we expect the remaining datafiles to also be there.
   char datafile[] = "SEOBNRv1ROM_SS_Phase_ciall.dat";
 
-  char *path = XLALFileResolvePathLong(datafile, PKG_DATA_DIR);
+  char *path = XLAL_FILE_RESOLVE_PATH(datafile);
   if (path==NULL)
     XLAL_ERROR_VOID(XLAL_EIO, "Unable to resolve data file %s in $LAL_DATA_PATH\n", datafile);
   char *dir = dirname(path);
diff --git a/lalsimulation/lib/LALSimIMRSEOBNRv2ChirpTime.c b/lalsimulation/lib/LALSimIMRSEOBNRv2ChirpTime.c
index 15a2e5dbb9e3e2446a08338f2ada3df023538ba2..76fca9855c69c615048aa3cea4680016ece2f498 100644
--- a/lalsimulation/lib/LALSimIMRSEOBNRv2ChirpTime.c
+++ b/lalsimulation/lib/LALSimIMRSEOBNRv2ChirpTime.c
@@ -357,7 +357,7 @@ static void Init_LALDATA(void)
   if (ChirpTimeData != NULL) return;
 
   char datafile[] = "SEOBNRv2ChirpTimeSS.dat";
-  char *path = XLALFileResolvePathLong(datafile, PKG_DATA_DIR);
+  char *path = XLAL_FILE_RESOLVE_PATH(datafile);
   if (path==NULL)
     XLAL_ERROR_VOID(XLAL_EIO, "Unable to resolve data file %s in $LAL_DATA_PATH\n", datafile);
   char *dir = dirname(path);
diff --git a/lalsimulation/lib/LALSimIMRSEOBNRv2ROMDoubleSpin.c b/lalsimulation/lib/LALSimIMRSEOBNRv2ROMDoubleSpin.c
index cfde658e64da5e5a9269fde571a3fa45ac5da4ab..b9f292bd6a0b3a9ee29e0a9bcc15848efa6a9da1 100644
--- a/lalsimulation/lib/LALSimIMRSEOBNRv2ROMDoubleSpin.c
+++ b/lalsimulation/lib/LALSimIMRSEOBNRv2ROMDoubleSpin.c
@@ -1584,7 +1584,7 @@ static void SEOBNRv2ROMDoubleSpin_Init_LALDATA(void)
   // then we expect the remaining datafiles to also be there.
   char datafile[] = "SEOBNRv2ROM_DS_sub1_Phase_ciall.dat";
 
-  char *path = XLALFileResolvePathLong(datafile, PKG_DATA_DIR);
+  char *path = XLAL_FILE_RESOLVE_PATH(datafile);
   if (path==NULL)
     XLAL_ERROR_VOID(XLAL_EIO, "Unable to resolve data file %s in $LAL_DATA_PATH\n", datafile);
   char *dir = dirname(path);
diff --git a/lalsimulation/lib/LALSimIMRSEOBNRv2ROMDoubleSpinHI.c b/lalsimulation/lib/LALSimIMRSEOBNRv2ROMDoubleSpinHI.c
index 9018ae7cf90ede0a883fe316893f437e3509f253..09672c867cb4f0b66243f8ea721e2789f50a6354 100644
--- a/lalsimulation/lib/LALSimIMRSEOBNRv2ROMDoubleSpinHI.c
+++ b/lalsimulation/lib/LALSimIMRSEOBNRv2ROMDoubleSpinHI.c
@@ -1925,7 +1925,7 @@ static void SEOBNRv2ROMDoubleSpin_Init_LALDATA(void)
   const char datafile[] = "SEOBNRv2ROM_DS_HI_sub1_Phase_ciall.dat";
 #endif
 
-  char *path = XLALFileResolvePathLong(datafile, PKG_DATA_DIR);
+  char *path = XLAL_FILE_RESOLVE_PATH(datafile);
   if (path==NULL)
     XLAL_ERROR_VOID(XLAL_EIO, "Unable to resolve data file %s in $LAL_DATA_PATH\n", datafile);
   char *dir = dirname(path);
diff --git a/lalsimulation/lib/LALSimIMRSEOBNRv2ROMEffectiveSpin.c b/lalsimulation/lib/LALSimIMRSEOBNRv2ROMEffectiveSpin.c
index 1747f10f25cb913fd50f1f01fabcdcc98393e51a..603f50db8425e6bee4e67d28c918bb0d5eea4471 100644
--- a/lalsimulation/lib/LALSimIMRSEOBNRv2ROMEffectiveSpin.c
+++ b/lalsimulation/lib/LALSimIMRSEOBNRv2ROMEffectiveSpin.c
@@ -1098,7 +1098,7 @@ static void SEOBNRv2ROMEffectiveSpin_Init_LALDATA(void)
   // then we expect the remaining datafiles to also be there.
   char datafile[] = "SEOBNRv2ROM_SS_Phase_ciall.dat";
 
-  char *path = XLALFileResolvePathLong(datafile, PKG_DATA_DIR);
+  char *path = XLAL_FILE_RESOLVE_PATH(datafile);
   if (path==NULL)
     XLAL_ERROR_VOID(XLAL_EIO, "Unable to resolve data file %s in $LAL_DATA_PATH\n", datafile);
   char *dir = dirname(path);
diff --git a/lalsimulation/lib/LALSimIMRSEOBNRv4HMROM.c b/lalsimulation/lib/LALSimIMRSEOBNRv4HMROM.c
index a84b9880456d257c4f939b26574eae4229c9ad2d..5cde208a5631e66454fd179dad497fd4409db7c7 100644
--- a/lalsimulation/lib/LALSimIMRSEOBNRv4HMROM.c
+++ b/lalsimulation/lib/LALSimIMRSEOBNRv4HMROM.c
@@ -442,7 +442,7 @@ UNUSED static void SEOBNRv4HMROM_Init_LALDATA(void)
   // Expect ROM datafile in a directory listed in LAL_DATA_PATH,
 #ifdef LAL_HDF5_ENABLED
 #define datafile ROMDataHDF5
-  char *path = XLALFileResolvePathLong(datafile, PKG_DATA_DIR);
+  char *path = XLAL_FILE_RESOLVE_PATH(datafile);
   if (path==NULL){
     XLAL_ERROR_VOID(XLAL_EIO, "Unable to resolve data file %s in $LAL_DATA_PATH\n", datafile);
   }
@@ -2942,4 +2942,4 @@ int XLALSimIMRSEOBNRv4HMROMFrequencySequence_Modes(
 
   return(retcode);
 }
-/** @} */
\ No newline at end of file
+/** @} */
diff --git a/lalsimulation/lib/LALSimIMRSEOBNRv4ROM.c b/lalsimulation/lib/LALSimIMRSEOBNRv4ROM.c
index 5a83110506b904be200b25903773aec994b4eda6..c054fb1b9cf06cb7e6cdf6f55b59d06ad0b11c80 100644
--- a/lalsimulation/lib/LALSimIMRSEOBNRv4ROM.c
+++ b/lalsimulation/lib/LALSimIMRSEOBNRv4ROM.c
@@ -1603,7 +1603,7 @@ UNUSED static void SEOBNRv4ROM_Init_LALDATA(void)
   // Expect ROM datafile in a directory listed in LAL_DATA_PATH,
 #ifdef LAL_HDF5_ENABLED
 #define datafile ROMDataHDF5
-  char *path = XLALFileResolvePathLong(datafile, PKG_DATA_DIR);
+  char *path = XLAL_FILE_RESOLVE_PATH(datafile);
   if (path==NULL)
     XLAL_ERROR_VOID(XLAL_EIO, "Unable to resolve data file %s in $LAL_DATA_PATH\n", datafile);
   char *dir = dirname(path);
diff --git a/lalsimulation/lib/LALSimIMRSEOBNRv4TSurrogate.c b/lalsimulation/lib/LALSimIMRSEOBNRv4TSurrogate.c
index 7366e543af7db4a01f4d11fe120fc22a4806326b..875dbd798a4008af2516c4fb92826d9c0ac7b93f 100644
--- a/lalsimulation/lib/LALSimIMRSEOBNRv4TSurrogate.c
+++ b/lalsimulation/lib/LALSimIMRSEOBNRv4TSurrogate.c
@@ -1291,7 +1291,7 @@ UNUSED static void Surrogate_Init_LALDATA(void)
   // Expect ROM datafile in a directory listed in LAL_DATA_PATH,
 #ifdef LAL_HDF5_ENABLED
 #define datafile SurDataHDF5
-  char *path = XLALFileResolvePathLong(datafile, PKG_DATA_DIR);
+  char *path = XLAL_FILE_RESOLVE_PATH(datafile);
   if (path==NULL)
     XLAL_ERROR_VOID(XLAL_EIO, "Unable to resolve data file %s in $LAL_DATA_PATH\n", datafile);
   char *dir = dirname(path);
diff --git a/lalsimulation/lib/LALSimIMRSEOBNRv5HMROM.c b/lalsimulation/lib/LALSimIMRSEOBNRv5HMROM.c
index abb494e93631f509a54002ae939829df11dcc3a1..d52ba39b373131b6a53b49c6b6a71647da798558 100644
--- a/lalsimulation/lib/LALSimIMRSEOBNRv5HMROM.c
+++ b/lalsimulation/lib/LALSimIMRSEOBNRv5HMROM.c
@@ -469,7 +469,7 @@ UNUSED static void SEOBNRv5HMROM_Init_LALDATA(void)
   // Expect ROM datafile in a directory listed in LAL_DATA_PATH,
 #ifdef LAL_HDF5_ENABLED
 #define datafile ROMDataHDF5
-  char *path = XLALFileResolvePathLong(datafile, PKG_DATA_DIR);
+  char *path = XLAL_FILE_RESOLVE_PATH(datafile);
   if (path==NULL){
     XLAL_ERROR_VOID(XLAL_EIO, "Unable to resolve data file %s in $LAL_DATA_PATH\n", datafile);
   }
@@ -501,7 +501,7 @@ UNUSED static void SEOBNRv5ROM_Init_LALDATA(void)
   // Expect ROM datafile in a directory listed in LAL_DATA_PATH,
 #ifdef LAL_HDF5_ENABLED
 #define datafile22 ROM22DataHDF5
-  char *path = XLALFileResolvePathLong(datafile22, PKG_DATA_DIR);
+  char *path = XLAL_FILE_RESOLVE_PATH(datafile22);
   if (path==NULL){
     XLAL_ERROR_VOID(XLAL_EIO, "Unable to resolve data file %s in $LAL_DATA_PATH\n", datafile22);
   }
@@ -3221,4 +3221,4 @@ int XLALSimIMRSEOBNRv5ROMTimeOfFrequency(
   return(XLAL_SUCCESS);
 }
 
-/** @} */
\ No newline at end of file
+/** @} */
diff --git a/lalsimulation/lib/LALSimInspiralTEOBResumROM.c b/lalsimulation/lib/LALSimInspiralTEOBResumROM.c
index 9a1dfbf9dcb77e4323618eb318bdfc09fa405831..053ade284320aac85f3c5dfdf0c8138715a7f7e6 100644
--- a/lalsimulation/lib/LALSimInspiralTEOBResumROM.c
+++ b/lalsimulation/lib/LALSimInspiralTEOBResumROM.c
@@ -791,7 +791,7 @@ static void TEOBResumROM_Init_LALDATA(void)
   // then we expect the remaining datafiles to also be there.
   char datafile[] = "TEOBResumROM_Phase_ciall.dat";
 
-  char *path = XLALFileResolvePathLong(datafile, PKG_DATA_DIR);
+  char *path = XLAL_FILE_RESOLVE_PATH(datafile);
   if (path==NULL)
     XLAL_ERROR_VOID(XLAL_EIO, "Unable to resolve data file %s in $LAL_DATA_PATH\n", datafile);
   char *dir = dirname(path);
diff --git a/lalsimulation/lib/LALSimNRSurRemnantUtils.c b/lalsimulation/lib/LALSimNRSurRemnantUtils.c
index 35d9a3a502c86909ad8e649c7a6c715b3b50e4e6..21fa93de7a3f5d867f8bf66ca9f2103b5fc8cd71 100644
--- a/lalsimulation/lib/LALSimNRSurRemnantUtils.c
+++ b/lalsimulation/lib/LALSimNRSurRemnantUtils.c
@@ -67,7 +67,7 @@ void NRSurRemnant_LoadH5File(
     const char* NRSurRemnant_DATAFILE   /**< H5 file name to load. */
 ) {
 
-    char *path = XLALFileResolvePathLong(NRSurRemnant_DATAFILE, PKG_DATA_DIR);
+    char *path = XLAL_FILE_RESOLVE_PATH(NRSurRemnant_DATAFILE);
     if (path==NULL) {
         XLAL_ERROR_VOID(XLAL_ENOENT,
             "Unable to find data file %s in $LAL_DATA_PATH\n",
diff --git a/lalsimulation/lib/LALSimReadData.c b/lalsimulation/lib/LALSimReadData.c
index 15a4571bfb6405165ed19938a84e643ef620a620..41bbbf0deec368ff2bd6134397530aafbed6443f 100644
--- a/lalsimulation/lib/LALSimReadData.c
+++ b/lalsimulation/lib/LALSimReadData.c
@@ -59,7 +59,7 @@
 LALFILE *XLALSimReadDataFileOpen(const char *fname)
 {
     LALFILE *fp = NULL;
-    char *path = XLALFileResolvePathLong(fname, PKG_DATA_DIR);
+    char *path = XLAL_FILE_RESOLVE_PATH(fname);
     if (!path)  /* could not find file */
         XLAL_ERROR_FAIL(XLAL_EIO, "Could not find data file %s\n", fname);
     fp = XLALFileOpenRead(path);