bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

build: rename and simplify the -std checks for C++


From: Akim Demaille
Subject: build: rename and simplify the -std checks for C++
Date: Sun, 23 Sep 2018 10:15:23 +0200

commit 41d10cb1f88332a22d9e3497bbdec3e5015daf19
Author: Akim Demaille <address@hidden>
Date:   Sun Sep 23 09:42:50 2018 +0200

    build: rename and simplify the -std checks for C++
    
    Too much code duplication.
    
    * m4/bison-cxx-std.m4: s/BISON_CXX_COMPILE_STDCXX/BISON_CXXSTD/.
    (BISON_CXXSTD): New.
    * configure.ac: Use it.

diff --git a/configure.ac b/configure.ac
index 0540a50a..28639408 100644
--- a/configure.ac
+++ b/configure.ac
@@ -73,12 +73,12 @@ AC_CACHE_CHECK([whether pragma GCC diagnostic push works],
 
 AC_LANG_PUSH([C++])
 gl_WARN_ADD([-fno-exceptions], [NO_EXCEPTIONS_CXXFLAGS])
-BISON_CXX_COMPILE_STDCXX_98
-BISON_CXX_COMPILE_STDCXX_03
-BISON_CXX_COMPILE_STDCXX_11
-BISON_CXX_COMPILE_STDCXX_14
-BISON_CXX_COMPILE_STDCXX_17
-BISON_CXX_COMPILE_STDCXX_2A
+BISON_CXXSTD([98])
+BISON_CXXSTD([03])
+BISON_CXXSTD([11])
+BISON_CXXSTD([14])
+BISON_CXXSTD([17])
+BISON_CXXSTD([2a])
 AM_CONDITIONAL([ENABLE_CXX11], [test x"$CXX11_CXXFLAGS" != x])
 AC_LANG_POP([C++])
 
diff --git a/m4/bison-cxx-std.m4 b/m4/bison-cxx-std.m4
index a0722310..1756c7d9 100644
--- a/m4/bison-cxx-std.m4
+++ b/m4/bison-cxx-std.m4
@@ -6,16 +6,16 @@
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-m4_define([_BISON_CXX_COMPILE_STDCXX_98_snippet],
+m4_define([_BISON_CXXSTD_98_snippet],
 [#include <vector>
 
 typedef std::vector<int> ints;
 ])
 
-m4_define([_BISON_CXX_COMPILE_STDCXX_03_snippet],
+m4_define([_BISON_CXXSTD_03_snippet],
 [])
 
-m4_define([_BISON_CXX_COMPILE_STDCXX_11_snippet],
+m4_define([_BISON_CXXSTD_11_snippet],
 [#include <algorithm>
 #include <memory>
 #include <set>
@@ -65,7 +65,7 @@ m4_define([_BISON_CXX_COMPILE_STDCXX_11_snippet],
   }
 ])
 
-m4_define([_BISON_CXX_COMPILE_STDCXX_14_snippet],
+m4_define([_BISON_CXXSTD_14_snippet],
 [  // C++14
   void mismatch()
   {
@@ -77,7 +77,7 @@ m4_define([_BISON_CXX_COMPILE_STDCXX_14_snippet],
   }
 ])
 
-m4_define([_BISON_CXX_COMPILE_STDCXX_17_snippet],
+m4_define([_BISON_CXXSTD_17_snippet],
 [  // C++17
   namespace ns1::ns2::ns3 {}
 
@@ -86,137 +86,76 @@ m4_define([_BISON_CXX_COMPILE_STDCXX_17_snippet],
   auto out = std::ostringstream{};
 ])
 
-m4_define([_BISON_CXX_COMPILE_STDCXX_2A_snippet],
+m4_define([_BISON_CXXSTD_2A_snippet],
 [  // C++2A
 ])
 
 
-m4_define([_BISON_CXX_COMPILE_STDCXX_98_testbody],
+m4_define([_BISON_CXXSTD_testbody(98)],
 [AC_LANG_PROGRAM([
-_BISON_CXX_COMPILE_STDCXX_98_snippet
+_BISON_CXXSTD_98_snippet
 ])])
 
-m4_define([_BISON_CXX_COMPILE_STDCXX_03_testbody],
+m4_define([_BISON_CXXSTD_testbody(03)],
 [AC_LANG_PROGRAM([
-_BISON_CXX_COMPILE_STDCXX_98_snippet
-_BISON_CXX_COMPILE_STDCXX_03_snippet
+_BISON_CXXSTD_98_snippet
+_BISON_CXXSTD_03_snippet
 ])])
 
-m4_define([_BISON_CXX_COMPILE_STDCXX_11_testbody],
+m4_define([_BISON_CXXSTD_testbody(11)],
 [AC_LANG_PROGRAM([
-_BISON_CXX_COMPILE_STDCXX_98_snippet
-_BISON_CXX_COMPILE_STDCXX_03_snippet
-_BISON_CXX_COMPILE_STDCXX_11_snippet
+_BISON_CXXSTD_98_snippet
+_BISON_CXXSTD_03_snippet
+_BISON_CXXSTD_11_snippet
 ])])
 
-m4_define([_BISON_CXX_COMPILE_STDCXX_14_testbody],
+m4_define([_BISON_CXXSTD_testbody(14)],
 [AC_LANG_PROGRAM([
-_BISON_CXX_COMPILE_STDCXX_98_snippet
-_BISON_CXX_COMPILE_STDCXX_03_snippet
-_BISON_CXX_COMPILE_STDCXX_11_snippet
-_BISON_CXX_COMPILE_STDCXX_14_snippet
+_BISON_CXXSTD_98_snippet
+_BISON_CXXSTD_03_snippet
+_BISON_CXXSTD_11_snippet
+_BISON_CXXSTD_14_snippet
 ])])
 
-m4_define([_BISON_CXX_COMPILE_STDCXX_17_testbody],
+m4_define([_BISON_CXXSTD_testbody(17)],
 [AC_LANG_PROGRAM([
-_BISON_CXX_COMPILE_STDCXX_98_snippet
-_BISON_CXX_COMPILE_STDCXX_03_snippet
-_BISON_CXX_COMPILE_STDCXX_11_snippet
-_BISON_CXX_COMPILE_STDCXX_14_snippet
-_BISON_CXX_COMPILE_STDCXX_17_snippet
+_BISON_CXXSTD_98_snippet
+_BISON_CXXSTD_03_snippet
+_BISON_CXXSTD_11_snippet
+_BISON_CXXSTD_14_snippet
+_BISON_CXXSTD_17_snippet
 ])])
 
-m4_define([_BISON_CXX_COMPILE_STDCXX_2A_testbody],
+m4_define([_BISON_CXXSTD_testbody(2a)],
 [AC_LANG_PROGRAM([
-_BISON_CXX_COMPILE_STDCXX_98_snippet
-_BISON_CXX_COMPILE_STDCXX_03_snippet
-_BISON_CXX_COMPILE_STDCXX_11_snippet
-_BISON_CXX_COMPILE_STDCXX_14_snippet
-_BISON_CXX_COMPILE_STDCXX_17_snippet
-_BISON_CXX_COMPILE_STDCXX_2A_snippet
+_BISON_CXXSTD_98_snippet
+_BISON_CXXSTD_03_snippet
+_BISON_CXXSTD_11_snippet
+_BISON_CXXSTD_14_snippet
+_BISON_CXXSTD_17_snippet
+_BISON_CXXSTD_2A_snippet
 ])])
 
 
-
-AC_DEFUN([BISON_CXX_COMPILE_STDCXX_98],
-[AC_REQUIRE([AC_PROG_CXX])
-AC_LANG_PUSH([C++])
-for f in '-std=c++98' '-std=c++98 -stdlib=libc++'
-do
-  BISON_CHECK_COMPILER_FLAG([$f],
-                     [AC_SUBST([CXX98_CXXFLAGS], [$f]) break],
-                     [], [],
-                     [_BISON_CXX_COMPILE_STDCXX_98_testbody])
-done
-AC_LANG_POP([C++])
-])
-
-
-AC_DEFUN([BISON_CXX_COMPILE_STDCXX_03],
-[AC_REQUIRE([AC_PROG_CXX])
-AC_LANG_PUSH([C++])
-for f in '-std=c++03' '-std=c++03 -stdlib=libc++'
-do
-  BISON_CHECK_COMPILER_FLAG([$f],
-                     [AC_SUBST([CXX03_CXXFLAGS], [$f]) break],
-                     [], [],
-                     [_BISON_CXX_COMPILE_STDCXX_03_testbody])
-done
-AC_LANG_POP([C++])
-])
-
-
-AC_DEFUN([BISON_CXX_COMPILE_STDCXX_11],
-[AC_REQUIRE([AC_PROG_CXX])
-AC_LANG_PUSH([C++])
-for f in '-std=c++11' '-std=c++11 -stdlib=libc++'
-do
-  BISON_CHECK_COMPILER_FLAG([$f],
-                     [AC_SUBST([CXX11_CXXFLAGS], [$f]) break],
-                     [], [],
-                     [_BISON_CXX_COMPILE_STDCXX_11_testbody])
-done
-AC_LANG_POP([C++])
-])
-
-
-AC_DEFUN([BISON_CXX_COMPILE_STDCXX_14],
-[AC_REQUIRE([AC_PROG_CXX])
-AC_LANG_PUSH([C++])
-for f in '-std=c++14' '-std=c++14 -stdlib=libc++'
-do
-  BISON_CHECK_COMPILER_FLAG([$f],
-                     [AC_SUBST([CXX14_CXXFLAGS], [$f]) break],
-                     [], [],
-                     [_BISON_CXX_COMPILE_STDCXX_14_testbody])
-done
-AC_LANG_POP([C++])
-])
-
-
-AC_DEFUN([BISON_CXX_COMPILE_STDCXX_17],
-[AC_REQUIRE([AC_PROG_CXX])
-AC_LANG_PUSH([C++])
-for f in '-std=c++17' '-std=c++17 -stdlib=libc++'
-do
-  BISON_CHECK_COMPILER_FLAG([$f],
-                     [AC_SUBST([CXX17_CXXFLAGS], [$f]) break],
-                     [], [],
-                     [_BISON_CXX_COMPILE_STDCXX_17_testbody])
-done
-AC_LANG_POP([C++])
-])
+m4_define([_BISON_CXXSTD_testbody],
+[m4_ifdef([$0($1)],
+          [m4_indir([$0($1)], m4_shift2($@))],
+          [m4_fatal([$0: unknown C++ standard: $1])])])
 
 
-AC_DEFUN([BISON_CXX_COMPILE_STDCXX_2A],
+# BISON_CXXSTD(STD)
+# -----------------
+# Check whether the C++ compiler support STD (11, 98, 2a, etc.).
+# If it does, AC_SUBST 'CXX<STD>_CXXFLAGS' to the corresponding flags.
+AC_DEFUN([BISON_CXXSTD],
 [AC_REQUIRE([AC_PROG_CXX])
 AC_LANG_PUSH([C++])
-for f in '-std=c++2a' '-std=c++2a -stdlib=libc++'
+for f in '-std=c++$1' '-std=c++$1 -stdlib=libc++'
 do
   BISON_CHECK_COMPILER_FLAG([$f],
-                     [AC_SUBST([CXX2A_CXXFLAGS], [$f]) break],
+                     [AC_SUBST(m4_toupper([CXX$1_CXXFLAGS]), [$f]) break],
                      [], [],
-                     [_BISON_CXX_COMPILE_STDCXX_2A_testbody])
+                     [_BISON_CXXSTD_testbody($1)])
 done
 AC_LANG_POP([C++])
 ])




reply via email to

[Prev in Thread] Current Thread [Next in Thread]