2012-05-05 19 views
9

Tengo un programa escrito en C y utiliza Autoconf. Utiliza AC_PROG_CC_C99 en configure.ac que cuando se utiliza con gcc se traduce a la opción del compilador -std=gnu99. El programa está escrito estrictamente de acuerdo con la especificación C99 y no utiliza ninguna extensión de GNU.Aplicar estricto C99 en el proyecto Autoconf

¿Cómo debemos configurar Autoconf para hacer que el compilador haga cumplir eso?

+2

las banderas que lo que estamos buscando son '-std = c99 -pedantic', que deben terminar en' CFLAGS'; sin embargo, no tengo idea de cómo hacerlo mejor :( – Christoph

+0

Gracias. Supongo que puedo agregarlos manualmente, pero si es posible, preferiría que Autoconf lo hiciera. No sé si lo admite. –

Respuesta

6

suelo utilizar un m4-macro que comprueba si un compilador determinado acepta un cierto CFLAG.

poner lo siguiente en su aclocal.m4 (que suelen utilizar M4/ax_check_cflags.m4 lugar):

# 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 

y lo llaman desde configure.ac con algo como

AX_CHECK_CFLAGS([-std=c99 -pedantic]) 
Cuestiones relacionadas