Mercurial > octave
diff configure.ac @ 28751:699bba597610
Use specific configure test to detect RapidJSON PrettyWriter functionality (bug #59114)
* configure.ac: Use an AC_COMPILE_IFELSE test to determine whether system has a
working RapidJSON PrettyWriter implementation. Rename feature to
HAVE_RAPIDJSON_PRETTYWRITER. Us AC_CACHE_CHECK to cache value since compilations
are expensive.
* jsonencode.cc: Rename HAVE_RAPIDJSON_DEV to HAVE_RAPIDJSON_PRETTYWRITER.
Conditionally #include <rapidjson/prettywrite.h> based on
HAVE_RAPIDJSON_PRETTYWRITER.
author | Rik <rik@octave.org> |
---|---|
date | Thu, 17 Sep 2020 07:42:22 -0700 |
parents | 7db56a2694ae |
children | fd05bcb94ab4 |
line wrap: on
line diff
--- a/configure.ac Thu Sep 17 05:07:02 2020 -0700 +++ b/configure.ac Thu Sep 17 07:42:22 2020 -0700 @@ -1333,20 +1333,34 @@ ### Check for RapidJSON header only library. -AC_LANG_PUSH([C++]) -AC_CHECK_HEADER([rapidjson/rapidjson.h], [have_rapidjson=yes], [have_rapidjson=no - rapid_json_warning="RapidJSON library not found. Octave will not be able to read or write JSON files."]) -if test "$have_rapidjson" = yes; then - AC_CHECK_HEADER([rapidjson/cursorstreamwrapper.h], [have_rapidjson_dev=yes], [have_rapidjson_dev=no - rapid_json_warning="RapidJSON 1.1.0 or older found. Octave will not support the 'PrettyWriter' option in 'jsonencode'."]) -fi -if test "$have_rapidjson" = yes; then +AC_LANG_PUSH(C++) +AC_CHECK_HEADER([rapidjson/rapidjson.h], + [have_rapidjson=yes], [have_rapidjson=no]) + +if test $have_rapidjson = yes; then AC_DEFINE(HAVE_RAPIDJSON, 1, [Define to 1 if RapidJSON is available.]) - if test "$have_rapidjson_dev" = yes; then - AC_DEFINE(HAVE_RAPIDJSON_DEV, 1, [Define to 1 if the development version of RapidJSON is available.]) + + ## Additional check on RapidJSON library that was found + AC_CACHE_CHECK([for working PrettyWriter in RapidJSON], + [octave_cv_rapidjson_has_prettywriter], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include <rapidjson/prettywriter.h> + ]], [[ + rapidjson::StringBuffer json; + rapidjson::PrettyWriter<rapidjson::StringBuffer, rapidjson::UTF8<>, + rapidjson::UTF8<>, rapidjson::CrtAllocator, + rapidjson::kWriteNanAndInfFlag> writer (json); + ]])], + [octave_cv_rapidjson_has_prettywriter=yes], + [octave_cv_rapidjson_has_prettywriter=no]) + ]) + if test $octave_cv_rapidjson_has_prettywriter = yes; then + AC_DEFINE(HAVE_RAPIDJSON_PRETTYWRITER, 1, + [Define to 1 if the RapidJSON PrettyWriter function is available.]) + else + rapid_json_warning='Older RapidJSON library found. The "PrettyWriter" option in jsonencode will be disabled.' + OCTAVE_CONFIGURE_WARNING([rapid_json_warning]) fi -else - OCTAVE_CONFIGURE_WARNING([rapid_json_warning]) fi AC_LANG_POP([C++])