From 5649888686cfa474fbe12ff47e4401333e5cb8f4 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Sun, 23 Sep 2018 08:57:13 +0200 Subject: build: use our own version of ax_check_link_flag The message on configure is misleading: checking whether the linker accepts -std=c++11... yes checking whether the linker accepts -std=c++14... yes checking whether the linker accepts -std=c++17... no It is the compiler that we check, not just the linker. * m4/ax_check_link_flag.m4: Remove. * m4/bison-check-compiler-flag.m4: New. * m4/bison-cxx-std.m4: Use it. --- m4/ax_check_link_flag.m4 | 53 ----------------------------------------- m4/bison-check-compiler-flag.m4 | 45 ++++++++++++++++++++++++++++++++++ m4/bison-cxx-std.m4 | 8 +++---- 3 files changed, 49 insertions(+), 57 deletions(-) delete mode 100644 m4/ax_check_link_flag.m4 create mode 100644 m4/bison-check-compiler-flag.m4 (limited to 'm4') diff --git a/m4/ax_check_link_flag.m4 b/m4/ax_check_link_flag.m4 deleted file mode 100644 index 03a30ce4..00000000 --- a/m4/ax_check_link_flag.m4 +++ /dev/null @@ -1,53 +0,0 @@ -# =========================================================================== -# https://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) -# -# DESCRIPTION -# -# Check whether the given FLAG works with the linker or gives an error. -# (Warnings, however, are ignored) -# -# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on -# success/failure. -# -# If EXTRA-FLAGS is defined, it is added to the linker's default flags -# when the check is done. The check is thus made with the flags: "LDFLAGS -# EXTRA-FLAGS FLAG". This can for example be used to force the linker to -# issue an error when a bad flag is given. -# -# INPUT gives an alternative input source to AC_LINK_IFELSE. -# -# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this -# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG. -# -# LICENSE -# -# Copyright (c) 2008 Guido U. Draheim -# Copyright (c) 2011 Maarten Bosmans -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 6 - -AC_DEFUN([AX_CHECK_LINK_FLAG], -[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF -AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl -AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [ - ax_check_save_flags=$LDFLAGS - LDFLAGS="$LDFLAGS $4 $1" - AC_LINK_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], - [AS_VAR_SET(CACHEVAR,[yes])], - [AS_VAR_SET(CACHEVAR,[no])]) - LDFLAGS=$ax_check_save_flags]) -AS_VAR_IF(CACHEVAR,yes, - [m4_default([$2], :)], - [m4_default([$3], :)]) -AS_VAR_POPDEF([CACHEVAR])dnl -])dnl AX_CHECK_LINK_FLAGS diff --git a/m4/bison-check-compiler-flag.m4 b/m4/bison-check-compiler-flag.m4 new file mode 100644 index 00000000..7a2db576 --- /dev/null +++ b/m4/bison-check-compiler-flag.m4 @@ -0,0 +1,45 @@ +# bison-check-compile-flag.m4 + +# serial 1 + +# Copyright (C) 2018 Free Software Foundation, # Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + + +# BISON_CHECK_COMPILER_FLAG(FLAG, +# [ACTION-SUCCESS], [ACTION-FAILURE], +# [EXTRA-FLAGS]) +# ------------------------------------------------------------- + +# Based on Autoconf Macro Archive's AX_CHECK_COMPILE_FLAG, but using +# AC_LINK_IFELSE, not just AC_COMPILE_IFELSE to capture failures such +# as: +# +# ./c++.at:401: $PREPARSER ./list +# stderr: +# ./list: error while loading shared libraries: libc++.so.1: cannot open shared object file: No such file or directory +# +# because we thought '-stdlib=c++' works, as it passes with AC_COMPILE_IFELSE. +# +# Not using AX_CHECK_LINK_FLAG, because its message is inappropriate: +# +# checking whether the linker accepts -std=c++11... yes +# checking whether the linker accepts -std=c++14... yes +# checking whether the linker accepts -std=c++17... no +AC_DEFUN([BISON_CHECK_COMPILER_FLAG], +[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX +AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl +AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ + ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" + AC_LINK_IFELSE([m4_default([$5], [AC_LANG_PROGRAM()])], + [AS_VAR_SET(CACHEVAR,[yes])], + [AS_VAR_SET(CACHEVAR,[no])]) + _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) +AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes], [$2], [$3]) +AS_VAR_POPDEF([CACHEVAR])dnl +])dnl BISON_CHECK_COMPILER_FLAGS diff --git a/m4/bison-cxx-std.m4 b/m4/bison-cxx-std.m4 index 43e2a1d2..d5631caa 100644 --- a/m4/bison-cxx-std.m4 +++ b/m4/bison-cxx-std.m4 @@ -116,7 +116,7 @@ AC_DEFUN([BISON_CXX_COMPILE_STDCXX_11], AC_LANG_PUSH([C++]) for f in '-std=c++11' '-std=c++11 -stdlib=libc++' do - AX_CHECK_LINK_FLAG([$f], + BISON_CHECK_COMPILER_FLAG([$f], [AC_SUBST([CXX11_CXXFLAGS], [$f]) break], [], [], [_BISON_CXX_COMPILE_STDCXX_11_testbody]) @@ -130,7 +130,7 @@ AC_DEFUN([BISON_CXX_COMPILE_STDCXX_14], AC_LANG_PUSH([C++]) for f in '-std=c++14' '-std=c++14 -stdlib=libc++' do - AX_CHECK_LINK_FLAG([$f], + BISON_CHECK_COMPILER_FLAG([$f], [AC_SUBST([CXX14_CXXFLAGS], [$f]) break], [], [], [_BISON_CXX_COMPILE_STDCXX_14_testbody]) @@ -144,7 +144,7 @@ AC_DEFUN([BISON_CXX_COMPILE_STDCXX_17], AC_LANG_PUSH([C++]) for f in '-std=c++17' '-std=c++17 -stdlib=libc++' do - AX_CHECK_LINK_FLAG([$f], + BISON_CHECK_COMPILER_FLAG([$f], [AC_SUBST([CXX17_CXXFLAGS], [$f]) break], [], [], [_BISON_CXX_COMPILE_STDCXX_17_testbody]) @@ -158,7 +158,7 @@ AC_DEFUN([BISON_CXX_COMPILE_STDCXX_2A], AC_LANG_PUSH([C++]) for f in '-std=c++2a' '-std=c++2a -stdlib=libc++' do - AX_CHECK_LINK_FLAG([$f], + BISON_CHECK_COMPILER_FLAG([$f], [AC_SUBST([CXX2A_CXXFLAGS], [$f]) break], [], [], [_BISON_CXX_COMPILE_STDCXX_2A_testbody]) -- cgit v1.2.1