Macro: ac_subst_prefix_subpaths

Back to the Main Page. | # ac_subst_prefix_subpaths | Download the M4 Source.

Synopsis

  `AC_DEFINE_SUB_PATH(DEFNAME, varname, description)`

Version

  1.1.1.1 (2001/07/26) guidod @ ac-archive-0.5.39

Author

Description

  look at varname and detect the subpath that it contains relative to $prefix/$exec_prefix

  If the path is indeed relative to $prefix/$exec_prefix, then a single "./" (dotslash) is prepended, otherwise it can be seen as an absolute path that can not be moved, which you possibly do for "/etc" files, or even those ending up in "/lib/modules" or "/winnt/system".

  this macro is not very intelligent, it's just a first try in this direction. It does currently just look into the current patterns, and replaces a ${prefix} with a simple dot. Amazingly, it works quite well for most packages.

  correct usage: in configure ac
  `AC_DEFINE_DIR([EPREFIX], [exec_prefix], [--exec-prefix or default])`
  `AC_DEFINE_SUB_PATH([PATH_LIBDIR], [libdir], [--bindir subdir])`
  `AC_DEFINE_UNQUOTED([PACKAGE],"$PACKAGE", [Name of package])`
  in "C"
  `static const char _libdir[] = PATH_LIBDIR; /* configure default */`
  `char* libdir;`
  `char* eprefix = getenv (PACKAGE "DIR");`
  `if (! eprefix) eprefix = EPREFIX; /* default */`
  `if (*_libdir != '.') libdir = strdup(_libdir);`
  `else {`
  `libdir = malloc(strlen(eprefix) + strlen(_libdir) + 2);`
  `strcpy(libdir, eprefix);`
  `strcat(libdir, PATH_DELIMITER_STRING);`
  `strcat(libdir, _libdir);`
  `}`
  `...`
  `free (libdir);`
  ``
  ``
  AC_DEFINE_SUB_PATHS(varnames)

  look for the given various install-paths that largely depend on either ${prefix} or ${exec_prefix}. Just cut out the prefix and ac_define the value. The value is uppercased and PATH_ prepended ie. ac_define_sub_paths(bindir libdir pkgdatadir) will create the defines PATH_BINDIR PATH_LIBDIR PATH_PKGDATADIR - see posix' include/paths.h that creates _PATH_DEV and friends.

  @author: Guido Draheim <guidod@gmx.de> STATUS: never used

M4 Source Code

      AC_DEFUN([AC_DEFINE_SUB_PATH],
      [dnl
        test "_$prefix" = _NONE && prefix="$ac_default_prefix"
        test "_$exec_prefix" = _NONE && exec_prefix='${prefix}'
        P=`echo ifelse( $2, , [$]$1, [$]$2) | sed -e 's:^\${[a-z_]*prefix}:.:'`
        ifelse ($3, ,
          AC_DEFINE($1, $P, [sub path $2]),
          AC_DEFINE($1, $P, $3))
      ])

      AC_DEFUN([AC_DEFINE_SUB_PATHS],
      [dnl
        test "_$prefix" = _NONE && prefix="$ac_default_prefix"
        test "_$exec_prefix" = _NONE && exec_prefix='${prefix}'
        for i in $1 ; do
        P=`echo \$$i | sed -e 's:^\${[a-z_]*prefix}:.:'`
        V=`echo path_$i | sed -e 'y:abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:'`
          AC_DEFINE($V, $P, [sub path $i]),
      ])