2012-05-05 11 views
9

Ho un programma scritto in C e utilizza Autoconf. Utilizza AC_PROG_CC_C99 in configure.ac che, se utilizzato con gcc, si traduce nell'opzione del compilatore -std=gnu99. Il programma è scritto in qualche modo in modo rigoroso secondo le specifiche C99 e non utilizza alcuna estensione GNU.Applicare il C99 rigoroso nel progetto Autoconf

Come configurare Autoconf per far sì che il compilatore lo imponga?

+2

le bandiere si stai cercando '-std = c99 -pedantic', che deve finire in' CFLAGS'; Non so come fare al meglio su questo, però :( – Christoph

+0

Grazie, presumo di poterli aggiungere manualmente ma se fosse possibile preferirei che Autoconf lo facesse. Non so se lo supporta. –

risposta

6

di solito uso una macro-m4 che controlla se un determinato compilatore accetta un determinato CFLAG.

inserire il seguente nella vostra aclocal.m4 (di solito uso m4/ax_check_cflags.m4 invece):

# AX_CHECK_CFLAGS(ADDITIONAL-CFLAGS, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) 
# 
# checks whether the $(CC) compiler accepts the ADDITIONAL-CFLAGS 
# if so, they are added to the CXXFLAGS 
AC_DEFUN([AX_CHECK_CFLAGS], 
[ 
    AC_MSG_CHECKING([whether compiler accepts "$1"]) 
    cat > conftest.c++ << EOF 
    int main(){ 
    return 0; 
    } 
    EOF 
    if $CC $CPPFLAGS $CFLAGS -o conftest.o conftest.c++ [$1] > /dev/null 2>&1 
    then 
    AC_MSG_RESULT([yes]) 
    CFLAGS="${CFLAGS} [$1]" 
    [$2] 
    else 
    AC_MSG_RESULT([no]) 
    [$3] 
    fi 
])dnl AX_CHECK_CFLAGS 

e chiamare da configure.ac con qualcosa di simile

AX_CHECK_CFLAGS([-std=c99 -pedantic])