ax_numeric_namedlevel

Synopsis

AX_NUMERIC_NAMEDLEVEL(VARNAME [,FROMVAR [,DEFAULT [,YESLEVEL]]])

Description

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 that can be simply pushed as a #define like with AC_DEFINE:

 default YESLEVEL = 2 /* including unknown levelspec */
 default DEFAULT  = 0 /* when named level is empty */
 default FROMVAR  = VARNAME

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").

the mnemonic names are:

  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

note that a level can be constructed of (some|plus) = bit-0, (many|much) = bit-1, (more) = bit-2, (ultra|experimental) = bit-3 at least in a left-to-right order, ie. plusmanymore=7

Example usage:

  AX_NUMERIC_NAMEDLEVEL(OPTLEVEL,with_optlevel,1,3)
  AC_DEFINE(OPTLEVEL)
  test "$GCC" = "yes" && CFLAGS="$CFLAGS -O$OPTLEVEL)

Source Code

Download the latest version of ax_numeric_namedlevel.m4 or browse the macro’s revision history.

License

Copyright © 2008 Guido U. Draheim 

Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.