2012-05-05 10 views
9

Ich habe ein Programm in C geschrieben und es verwendet Autoconf. Es verwendet AC_PROG_CC_C99 in configure.ac, die bei Verwendung mit gcc übersetzt die -std=gnu99 Compiler-Option. Das Programm ist etwas streng nach der C99-Spezifikation geschrieben und verwendet keine GNU-Erweiterungen.Erzwingen strenge C99 in Autoconf-Projekt

Wie sollten wir Autoconf einrichten, damit der Compiler das durchsetzt?

+2

die Fahnen Sie suchen, sind '-std = c99 -pedantic', die in' CFLAGS' enden müssen; keine Ahnung, wie man das am besten angeht :( – Christoph

+0

Danke. Ich nehme an, dass ich sie manuell hinzufügen kann, aber wenn es möglich ist, würde ich es vorziehen, dass Autoconf es getan hat. Ich weiß nicht, ob es das unterstützt. –

Antwort

6

Normalerweise verwende ich ein m4-Makro, das prüft, ob ein bestimmter Compiler eine bestimmte CFLAG akzeptiert.

setzen Sie die folgenden in Ihrem aclocal.m4 (i in der Regel m4/ax_check_cflags.m4 stattdessen verwenden):

# 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 

und nennen es von configure.ac mit so etwas wie

AX_CHECK_CFLAGS([-std=c99 -pedantic])