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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>
Autoconf Macro: ac_subst_prefix_subpaths
</title>
<link rel="stylesheet" type="text/css" href="ac-archive.css">
</head>
<body>
<table summary="web navigation" style="width:100%;">
<tbody>
<tr>
<td style="width:50%;" align="center">
<a href=
"http://autoconf-archive.cryp.to/ac_subst_prefix_subpaths.m4">Download M4
Source</a>
</td>
<td style="width:50%;" align="center">
<a href="macros-by-category.html">Macro Index Page</a>
</td>
</tr>
</tbody>
</table>
<hr>
<h1>
ac_subst_prefix_subpaths
</h1>
<h2>
Obsolete Macro
</h2>
<p class="indent">
Renamed to AC_DEFINE_SUB_PATH.
</p>
<h2>
Synopsis
</h2>
<p class="indent" style="white-space:nowrap;">
<code>AC_DEFINE_SUB_PATH(DEFNAME, varname, description)</code>
</p>
<h2>
Description
</h2>
<div class="indent">
<p>
look at varname and detect the subpath that it contains relative to
$prefix/$exec_prefix
</p>
<p>
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".
</p>
<p>
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.
</p>
<p>
correct usage: in configure ac
</p>
<pre>
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])
</pre>
<p>
in "C"
</p>
<pre>
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);
</pre>
<p>
AC_DEFINE_SUB_PATHS(varnames)
</p>
<p>
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.
</p>
</div>
<h2>
Author
</h2>
<p class="indent">
Guido Draheim <guidod@gmx.de>
</p>
<h2>
Last Modified
</h2>
<p class="indent">
2005-08-01
</p>
<h2>
M4 Source Code
</h2>
<div class="indent">
<pre class="m4source">
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]),
])
</pre>
</div>
</body>
</html>
|