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
|
<!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_numeric_namedlevel
</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_numeric_namedlevel.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_numeric_namedlevel
</h1>
<h2>
Synopsis
</h2>
<p class="indent" style="white-space:nowrap;">
<code>AC_NUMERIC_NAMEDLEVEL(VARNAME [,FROMVAR [,DEFAULT
[,YESLEVEL]]])</code>
</p>
<h2>
Description
</h2>
<div class="indent">
<p>
the levelstring FROMVAR is expanded and checked for verbal names that will
map on to eight different levels - the VARNAME will receive this numeric
level where "all" maps to 7 (lower three bits set) higher levels for 8 and
9 exist too. This macro is a nice helper to convert user input of a
--with-opt=level into a numeric form. which can be simply pushed as a
#define like with AC_DEFINE
</p>
<pre>
default YESLEVEL = 2 /* including unknown levelspec */
default DEFAULT = 0 /* when named level is empty */
default FROMVAR = VARNAME
</pre>
<p>
The DEFAULT value is used if the NAMED levelstring has become empty and it
is copied without further conversion - a default of "0" is used if absent -
identical to "no". A "yes" will be set to the YESLEVEL - and note that
"yes" has "2" as its default value not "1". (which comes from its original
use to set a "gcc -O2").
</p>
<p>
the mnemonic names are:
</p>
<pre>
9| insane |ultrasome|experimentalplus
8| ultra |ultra|experimental)
7| all |muchmore|somemanymore|manymoreplus
6| most |manymore|most)
5| strict |somemore|almost
4| more |more
3| extra |manyplus|plusmuch|somemany|plusmany
2| many |many|much|(yes)
1| some |some|plus
</pre>
<p>
note that a level can be construcct of (some|plus) = bit-0, (many|much) =
bit-1, (more) = bit-2, (ultra|experimental) = bit-3 atleast in a
left-to-right order, ie. plusmanymore=7
</p>
<p>
example usage:
</p>
<pre>
AC_NUMERIC_NAMEDLEVEL(OPTLEVEL,with_optlevel,1,3)
AC_DEFINE(OPTLEVEL)
test "$GCC" = "yes" && CFLAGS="$CFLAGS -O$OPTLEVEL)
</pre>
</div>
<h2>
Author
</h2>
<p class="indent">
Guido Draheim <guidod@gmx.de>
</p>
<h2>
Last Modified
</h2>
<p class="indent">
2005-01-21
</p>
<h2>
M4 Source Code
</h2>
<div class="indent">
<pre class="m4source">
AC_DEFUN([AC_NUMERIC_NAMEDLEVEL],
[dnl the names to be defined...
$1="ifelse($1,,[$]$2,[$]$1)" ; $1="[$]$1"
$1="[$]$1" ; $1="[$]$1"
if test "_[$]$1" = "_" ; then
$1="ifelse([$3],,0,[$3])"
elif test "_[$]$1" = "_yes" ; then
$1="ifelse([$4],,2,[$4])"
else
$1=`echo [$]$1 | sed -e 's,some,plus,' -e 's,experimental,ultra,' -e 's,over,ultra,' -e 's,much,many,'`
case "[$]$1" in
0*|1*|2*|3*|4*|5*|6*|7*|8*|9*|-*|+*) ;; # leave as is
insane|ultraplus|plusultra) $1="9" ;;
ultra) $1="8" ;;
manymoreplus|manyplusmore|plusmanymore|all) $1="7" ;;
moremanyplus|moreplusmany|plusmoremany) $1="7" ;;
manymore|moremany|most) $1="6" ;;
somemore|moresome|almost) $1="5" ;;
more) $1="4" ;;
manyplus|plusmany|extra) $1="3" ;;
many) $1="2" ;;
plus) $1="1" ;;
no) $1="0" ;;
yes) $1="ifelse([$4],,2,[$4])" ;;
*) $1="ifelse([$3],,1,[$3])" ;; # for other unkown stuff.
esac
fi
])
</pre>
</div>
</body>
</html>
|