/@unixroot is replaced by $UNIXROOT, which points a drive on which programs following FHS are installed. This enables a program to find a proper directory even if it is executed on a differrent drive from the drive on which it is installed.
For examples, consider a program package installed on f: with --prefix=/usr. That is, it is installed in f:/usr. Now, if it is executed on a drive e: like this, E:>f:/usr/bin/program then PREFIX will be /usr. However /usr is on drive f: not drive e:. So it will fail to find something based on PREFIX. If using /@unixroot, it will be replaced by $UNIXROOT. In this case, if UNIXROOT is set to 'f:', and PREFIX is /@unixroot/usr, then it will translated to f:/usr. * modules/configmake (UNIXROOT): New. /@unixroot on kLIBC, otherwise empty string. (PREFIX, EXEC_PREFIX, BINDIR, SBINDIR, LIBEXECDIR, DATAROOTDIR, DATADIR, SYSCONFDIR, SHAREDSTATEDIR, LOCALSTATEDIR, RUNSTATEDIR, INCLUDEDIR, OLDINCLUDEDIR, DOCDIR, INFODIR, HTMLDIR, DVIDIR, PDFDIR, PSDIR, LIBDIR, LISPDIR, LOCALEDIR, MANDIR, MANEXT, PKGDATADIR, PKGINCLUDEDIR, PKGLIBDIR, PKGLIBEXECDIR): Prepend UNIXROOT. --- modules/configmake | 63 +++++++++++++++++++++++++++++------------------------- 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/modules/configmake b/modules/configmake index 5a60f4f..aa9e6a9 100644 --- a/modules/configmake +++ b/modules/configmake @@ -17,35 +17,40 @@ Makefile.am: configmake.h: Makefile $(AM_V_GEN)rm -f $@-t && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ - echo '#define PREFIX "$(prefix)"'; \ - echo '#define EXEC_PREFIX "$(exec_prefix)"'; \ - echo '#define BINDIR "$(bindir)"'; \ - echo '#define SBINDIR "$(sbindir)"'; \ - echo '#define LIBEXECDIR "$(libexecdir)"'; \ - echo '#define DATAROOTDIR "$(datarootdir)"'; \ - echo '#define DATADIR "$(datadir)"'; \ - echo '#define SYSCONFDIR "$(sysconfdir)"'; \ - echo '#define SHAREDSTATEDIR "$(sharedstatedir)"'; \ - echo '#define LOCALSTATEDIR "$(localstatedir)"'; \ - echo '#define RUNSTATEDIR "$(runstatedir)"'; \ - echo '#define INCLUDEDIR "$(includedir)"'; \ - echo '#define OLDINCLUDEDIR "$(oldincludedir)"'; \ - echo '#define DOCDIR "$(docdir)"'; \ - echo '#define INFODIR "$(infodir)"'; \ - echo '#define HTMLDIR "$(htmldir)"'; \ - echo '#define DVIDIR "$(dvidir)"'; \ - echo '#define PDFDIR "$(pdfdir)"'; \ - echo '#define PSDIR "$(psdir)"'; \ - echo '#define LIBDIR "$(libdir)"'; \ - echo '#define LISPDIR "$(lispdir)"'; \ - echo '#define LOCALEDIR "$(localedir)"'; \ - echo '#define MANDIR "$(mandir)"'; \ - echo '#define MANEXT "$(manext)"'; \ - echo '#define PKGDATADIR "$(pkgdatadir)"'; \ - echo '#define PKGINCLUDEDIR "$(pkgincludedir)"'; \ - echo '#define PKGLIBDIR "$(pkglibdir)"'; \ - echo '#define PKGLIBEXECDIR "$(pkglibexecdir)"'; \ - } | sed '/""/d' > $@-t && \ + echo '#ifdef __KLIBC__'; \ + echo '# define UNIXROOT "/@unixroot"'; \ + echo '#else'; \ + echo '# define UNIXROOT ""'; \ + echo '#endif'; \ + echo '#define PREFIX UNIXROOT "$(prefix)"'; \ + echo '#define EXEC_PREFIX UNIXROOT "$(exec_prefix)"'; \ + echo '#define BINDIR UNIXROOT "$(bindir)"'; \ + echo '#define SBINDIR UNIXROOT "$(sbindir)"'; \ + echo '#define LIBEXECDIR UNIXROOT "$(libexecdir)"'; \ + echo '#define DATAROOTDIR UNIXROOT "$(datarootdir)"'; \ + echo '#define DATADIR UNIXROOT "$(datadir)"'; \ + echo '#define SYSCONFDIR UNIXROOT "$(sysconfdir)"'; \ + echo '#define SHAREDSTATEDIR UNIXROOT "$(sharedstatedir)"'; \ + echo '#define LOCALSTATEDIR UNIXROOT "$(localstatedir)"'; \ + echo '#define RUNSTATEDIR UNIXROOT "$(runstatedir)"'; \ + echo '#define INCLUDEDIR UNIXROOT "$(includedir)"'; \ + echo '#define OLDINCLUDEDIR UNIXROOT "$(oldincludedir)"'; \ + echo '#define DOCDIR UNIXROOT "$(docdir)"'; \ + echo '#define INFODIR UNIXROOT "$(infodir)"'; \ + echo '#define HTMLDIR UNIXROOT "$(htmldir)"'; \ + echo '#define DVIDIR UNIXROOT "$(dvidir)"'; \ + echo '#define PDFDIR UNIXROOT "$(pdfdir)"'; \ + echo '#define PSDIR UNIXROOT "$(psdir)"'; \ + echo '#define LIBDIR UNIXROOT "$(libdir)"'; \ + echo '#define LISPDIR UNIXROOT "$(lispdir)"'; \ + echo '#define LOCALEDIR UNIXROOT "$(localedir)"'; \ + echo '#define MANDIR UNIXROOT "$(mandir)"'; \ + echo '#define MANEXT UNIXROOT "$(manext)"'; \ + echo '#define PKGDATADIR UNIXROOT "$(pkgdatadir)"'; \ + echo '#define PKGINCLUDEDIR UNIXROOT "$(pkgincludedir)"'; \ + echo '#define PKGLIBDIR UNIXROOT "$(pkglibdir)"'; \ + echo '#define PKGLIBEXECDIR UNIXROOT "$(pkglibexecdir)"'; \ + } | sed '/UNIXROOT ""/d' > $@-t && \ mv -f $@-t $@ BUILT_SOURCES += configmake.h -- 1.9.5