File: ac_subst_prefix_subpaths.html

package info (click to toggle)
autoconf-archive 20060312-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 4,180 kB
  • ctags: 13
  • sloc: sh: 455; makefile: 44
file content (138 lines) | stat: -rw-r--r-- 3,860 bytes parent folder | download
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 &lt;guidod@gmx.de&gt;
  </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 &amp;&amp; prefix="$ac_default_prefix"
  test "_$exec_prefix" = _NONE &amp;&amp; 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 &amp;&amp; prefix="$ac_default_prefix"
  test "_$exec_prefix" = _NONE &amp;&amp; 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>