X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/7dbb8d8aba43ba020cb2d8f580e01997b8dbc875..2bb8f621eb61ef282fadd39232a96589ba1979ad:/tests/local.at diff --git a/tests/local.at b/tests/local.at index 2af7971b..a5dde80a 100644 --- a/tests/local.at +++ b/tests/local.at @@ -386,14 +386,7 @@ static [[^,]+[^A-Za-z_0-9]\([A-Za-z_][A-Za-z_0-9]*\), *], [ YYUSE(\1);])dnl AT_YYERROR_SEES_LOC_IF([[ - fprintf (stderr, "%d.%d", - ]AT_LOC_FIRST_LINE[, ]AT_LOC_FIRST_COLUMN[); - if (]AT_LOC_FIRST_LINE[ < ]AT_LOC_LAST_LINE[) - fprintf (stderr, "-%d.%d", - ]AT_LOC_LAST_LINE[, ]AT_LOC_LAST_COLUMN[ - 1); - else if (]AT_LOC_FIRST_COLUMN[ < ]AT_LOC_LAST_COLUMN[ - 1) - fprintf (stderr, "-%d", - ]AT_LOC_LAST_COLUMN[ - 1); + YY_LOCATION_PRINT (stderr, ]AT_LOC[); fprintf (stderr, ": ");]])[ fprintf (stderr, "%s\n", msg); }]], @@ -475,11 +468,7 @@ m4_define([AT_BISON_CHECK_WARNINGS_], [[# Defining POSIXLY_CORRECT causes bison to complain if options are # added after the grammar file name, so skip these checks in that # case. -# -# Don't just check if $POSIXLY_CORRECT is set, as Bash, when launched -# as /bin/sh, sets the shell variable POSIXLY_CORRECT to y, but not -# the environment variable. -if env | grep '^POSIXLY_CORRECT=' >/dev/null; then :; else +if test "$POSIXLY_CORRECT_IS_EXPORTED" = false; then ]AT_SAVE_SPECIAL_FILES[ # To avoid expanding it repeatedly, store specified stdout. @@ -604,7 +593,10 @@ m4_define([AT_QUELL_VALGRIND], # otherwise pass "-c"; this is a hack. The default SOURCES is OUTPUT # with trailing .o removed, and ".c" appended. m4_define([AT_COMPILE], -[AT_CHECK(m4_join([ ], +[AT_CHECK([case $POSIXLY_CORRECT_IS_EXPORTED:$C_COMPILER_POSIXLY_CORRECT in + true:false) echo 'cannot compile properly with POSIXLY_CORRECT' && exit 77;; +esac]) +AT_CHECK(m4_join([ ], [$CC $CFLAGS $CPPFLAGS], [m4_bmatch([$1], [[.]], [-c], [$LDFLAGS])], [-o $1], @@ -690,6 +682,44 @@ m4_define([AT_FULL_COMPILE], ]) + +# AT_SKIP_IF_CANNOT_LINK_C_AND_CXX +# -------------------------------- +# Check that we can link together C and C++ objects. +m4_define([AT_SKIP_IF_CANNOT_LINK_C_AND_CXX], +[AT_DATA([c-and-cxx.h], +[[#ifdef __cplusplus +extern "C" +{ +#endif + int fortytwo (void); +#ifdef __cplusplus +} +#endif +]]) +AT_DATA([c-only.c], +[[#include "c-and-cxx.h" +int +main (void) +{ + return fortytwo () == 42 ? 0 : 1; +} +]]) +AT_DATA([cxx-only.cc], +[[#include "c-and-cxx.h" +int fortytwo () +{ + return 42; +} +]]) +AT_COMPILE([c-only.o], [c-only.c]) +AT_COMPILE_CXX([cxx-only.o], [cxx-only.cc]) +AT_CHECK([$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS c-only.o cxx-only.o -o c-and-cxx || + exit 77], [ignore], [ignore]) +AT_PARSER_CHECK([./c-and-cxx]) +]) + + ## ---------------------------- ## ## Running a generated parser. ## ## ---------------------------- ##