# Sanity test a C compiler. # Copyright (C) 2006, 2009-2012 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # Written by Paul Eggert. AC_DEFUN([BISON_TEST_FOR_WORKING_C_COMPILER], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include <limits.h> int test_array[CHAR_BIT];]])], [], [AC_MSG_FAILURE([cannot compile a simple C program])]) AC_SUBST([BISON_C_WORKS], [:]) ]) # BISON_CHECK_WITH_POSIXLY_CORRECT(CODE) # -------------------------------------- # Run the Autoconf CODE with POSIXLY_CORRECT set to 1, and restored to # its initial value afterwards. AC_DEFUN([BISON_CHECK_WITH_POSIXLY_CORRECT], [gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }' case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" </dev/null` in xx) gl_had_POSIXLY_CORRECT=exported ;; x) gl_had_POSIXLY_CORRECT=yes ;; *) gl_had_POSIXLY_CORRECT= ;; esac POSIXLY_CORRECT=1 export POSIXLY_CORRECT $1 case $gl_had_POSIXLY_CORRECT in exported) ;; yes) AS_UNSET([POSIXLY_CORRECT]); POSIXLY_CORRECT=1 ;; *) AS_UNSET([POSIXLY_CORRECT]) ;; esac ]) # BISON_LANG_COMPILER_POSIXLY_CORRECT # ----------------------------------- # Whether the compiler for the current language supports -g in # POSIXLY_CORRECT mode. clang-2.9 on OS X does not, because # "clang-mp-2.9 -o test -g test.c" launches "/usr/bin/dsymutil test -o # test.dSYM" which fails with "error: unable to open executable '-o'". # # Sets <LANG>_COMPILER_POSIXLY_CORRECT to true/false. AC_DEFUN([BISON_LANG_COMPILER_POSIXLY_CORRECT], [AC_CACHE_CHECK([whether $_AC_CC supports POSIXLY_CORRECT=1], [bison_cv_[]_AC_LANG_ABBREV[]_supports_posixly_correct], [BISON_CHECK_WITH_POSIXLY_CORRECT( [AC_LINK_IFELSE([AC_LANG_PROGRAM], [bison_cv_[]_AC_LANG_ABBREV[]_supports_posixly_correct=yes], [bison_cv_[]_AC_LANG_ABBREV[]_supports_posixly_correct=no])])]) case $bison_cv_[]_AC_LANG_ABBREV[]_supports_posixly_correct in yes) AC_SUBST(_AC_LANG_PREFIX[_COMPILER_POSIXLY_CORRECT], [true]) ;; no) AC_SUBST(_AC_LANG_PREFIX[_COMPILER_POSIXLY_CORRECT], [false]);; esac ]) # BISON_C_COMPILER_POSIXLY_CORRECT # -------------------------------- # Whether the C compiler supports -g in POSIXLY_CORRECT mode. AC_DEFUN([BISON_C_COMPILER_POSIXLY_CORRECT], [AC_LANG_PUSH([C]) BISON_LANG_COMPILER_POSIXLY_CORRECT AC_LANG_POP([C]) ])