2012-05-05 14 views
9

Mam program napisany w C i używa Autoconf. Używa ona AC_PROG_CC_C99 w configure.ac, która używana z gcc tłumaczy się na opcję kompilatora -std=gnu99. Program napisany jest nieco ściśle według specyfikacji C99 i nie używa żadnych rozszerzeń GNU.Egzekwuj ścisłe C99 w projekcie Autoconf

W jaki sposób powinniśmy skonfigurować Autoconf, aby zmusić kompilator do tego?

+2

flagi ty Szukamy "-std = c99 -pedantic", które musi znaleźć się w 'CFLAGS'; nie mam pojęcia, jak najlepiej to osiągnąć :( – Christoph

+0

Dzięki. Zakładam, że mogę dodać je ręcznie, ale jeśli jest to możliwe, wolałbym, żeby Autoconf to zrobił. Nie wiem, czy to obsługuje. –

Odpowiedz

6

Zazwyczaj używam makra m4, które sprawdza, czy dany kompilator akceptuje określoną CFLAG.

umieścić następujące do swojej aclocal.m4 (i zwykle zamiast używać M4/ax_check_cflags.m4):

# 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 

i wywołać ją z configure.ac z czymś jak

AX_CHECK_CFLAGS([-std=c99 -pedantic]) 
Powiązane problemy