[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

handling nested AM_CONDITIONAL via m4 vars

From: Mike Frysinger
Subject: handling nested AM_CONDITIONAL via m4 vars
Date: Mon, 13 May 2013 00:26:57 -0400
User-agent: KMail/1.13.7 (Linux/3.8.3; KDE/4.6.5; x86_64; ; )

the AM_CONDITIONAL documentation states it must always be executed.  that's 
fine.  but what if i want to be lazy?

for example, i have code like so:
    AC_DEFINE([FOKER_]$1[_]m4_toupper($3), [1], [Define is the ]$2[ is ]$3)
AC_DEFUN([_FOKER_ARCH], [_FOKER_DEFINE([ARCH], [architecture], $1)])

    [alpha*],     [_FOKER_ARCH([Alpha])],
    [aarch64*],   [_FOKER_ARCH([AArch64])],
    [arm*],       [_FOKER_ARCH([ARM])],
    [bfin],       [_FOKER_ARCH([bfin])],
    [ia64],       [_FOKER_ARCH([IA64])],
    [mips*],      [_FOKER_ARCH([MIPS])],
    [hppa*],      [_FOKER_ARCH([PARISC])],
    [i?86],       [_FOKER_ARCH([X86])],
    [powerpc*],   [_FOKER_ARCH([PowerPC])],
    [s390*],      [_FOKER_ARCH([s390])],
    [sh*],        [_FOKER_ARCH([SH])],
    [sparc*],     [_FOKER_ARCH([SPARC])],
    [x86_64],     [_FOKER_ARCH([x86_64])],
    [*],          [AC_MSG_WARN([unsupported architecture])],

i want each branch to expand into both an AC_DEFINE and an AM_CONDITIONAL.  
rather than rewrite this, i thought why not use m4 vars to accumulate at 
aclocal time, and then expand them afterwards.  this way i don't have to give 
up my pretty case statement.

what i have now is:
dnl Setup AC_DEFINE with FOKER_ARCH_$ARCH, set the shell var FOKER_ARCH
dnl to $ARCH, and push $ARCH onto the _FOKER_CONDS stack.
    AC_DEFINE([FOKER_]$1[_]m4_toupper($3), [1], [Define is the ]$2[ is ]$3)
    pushdef([_FOKER_CONDS], [FOKER_]$1[_]m4_toupper($3))
AC_DEFUN([_FOKER_ARCH], [_FOKER_DEFINE([ARCH], [architecture], $1)])
dnl Initialize the shell var FOKER_ARCH=unknown
    AC_MSG_CHECKING([for known host ]$1)
dnl Pop all the arches off the _FOKER_CONDS stack and call AM_CONDITIONAL for
dnl each one.
    ifdef([_FOKER_CONDS], [dnl
    ], [dnl

...existing AS_CASE as above...

this seems to accomplish what i want -- AM_CONDITIONAL is expanded outside of 
the case statement w/out having to duplicate every entry.  however, my m4 
skills are beginner at best, so i'm wondering if people have suggestions for 
how to do this better.  i also wouldn't be surprised if my quoting is off.

not exactly an automake question, but close enough :)

Attachment: signature.asc
Description: This is a digitally signed message part.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]