bug-gnulib
[Top][All Lists]
Advanced

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

uchar C++ tests: Fix build error on FreeBSD 12


From: Bruno Haible
Subject: uchar C++ tests: Fix build error on FreeBSD 12
Date: Mon, 17 Aug 2020 11:37:52 +0200
User-agent: KMail/5.1.3 (Linux/4.4.0-186-generic; KDE/5.18.0; x86_64; ; )

Although <cuchar> is a standard C++ header (see
<http://www.cplusplus.com/reference/cuchar/>) and c++ on FreeBSD 12 defines
__cplusplus to 201402, it does not have <cuchar>. This causes a build failure
in test-uchar-c++2.cc.


2020-08-17  Bruno Haible  <bruno@clisp.org>

        uchar C++ tests: Fix build error on FreeBSD 12.
        * modules/uchar-c++-tests (configure.ac): Test whether <cuchar> exists.
        (Makefile.am): Don't include test-uchar-c++2.cc in the compilation if
        <cuchar> does not exist.

diff --git a/modules/uchar-c++-tests b/modules/uchar-c++-tests
index 4f179f0..2cbc331 100644
--- a/modules/uchar-c++-tests
+++ b/modules/uchar-c++-tests
@@ -10,11 +10,34 @@ Depends-on:
 ansi-c++-opt
 
 configure.ac:
+AC_REQUIRE([gl_ANSI_CXX])
+if test "$CXX" != no; then
+  dnl On FreeBSD 12, 'c++' defines __cplusplus to 201402, although it does not
+  dnl have the <cuchar> header file from C++11.
+  AC_CACHE_CHECK([whether the C++ compiler has <cuchar>],
+    [gl_cv_cxxheader_cuchar],
+    [AC_LANG_PUSH([C++])
+     AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <cuchar>]],
+          [[]])
+       ],
+       [gl_cv_cxxheader_cuchar=yes],
+       [gl_cv_cxxheader_cuchar=no])
+     AC_LANG_POP([C++])
+    ])
+else
+  gl_cv_cxxheader_cuchar=no
+fi
+AM_CONDITIONAL([CXX_HAVE_CUCHAR], [test $gl_cv_cxxheader_cuchar != no])
 
 Makefile.am:
 if ANSICXX
 TESTS += test-uchar-c++
 check_PROGRAMS += test-uchar-c++
-test_uchar_c___SOURCES = test-uchar-c++.cc test-uchar-c++2.cc
+test_uchar_c___SOURCES = test-uchar-c++.cc
+if CXX_HAVE_CUCHAR
+test_uchar_c___SOURCES += test-uchar-c++2.cc
+endif
 test_uchar_c___LDADD = $(LDADD) $(LIB_MBRTOWC)
 endif




reply via email to

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