summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2022-11-15 22:18:08 +0100
committerStephan Bergmann <sbergman@redhat.com>2022-11-16 08:53:58 +0100
commitd0a8c957be6dbc91cc05939468ce99947656481c (patch)
tree2282b307ecd188f16ba62b6bc0590cd12b563030 /configure.ac
parentcd8e8685454c92c38f17ddcf8b4f49b9068635ec (diff)
configure: Allow to override CXXFLAGS_CXX11
(My Clang --with-latest-c++ build against GCC 13 trunk libstdc++ needs to use -std=c++20 instead of -std=c++2b to work around <https://discourse.llvm.org/t/pack-expansion-bug/64910> for now.) Change-Id: Ib66375fe6e5c3b6b1a24b32fcce051d78390f962 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142752 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac113
1 files changed, 57 insertions, 56 deletions
diff --git a/configure.ac b/configure.ac
index 51d5508ad248..cef05a5893d9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2691,7 +2691,7 @@ libo_FUZZ_ARG_WITH(lxml,
libo_FUZZ_ARG_WITH(latest-c++,
AS_HELP_STRING([--with-latest-c++],
[Try to enable the latest features of the C++ compiler, even if they are not yet part of a
- published standard.]),,
+ published standard. This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
[with_latest_c__=no])
AC_ARG_WITH(gtk3-build,
@@ -7615,63 +7615,64 @@ dnl ===================================================================
dnl C++11
dnl ===================================================================
-AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
-CXXFLAGS_CXX11=
-if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
- if test "$with_latest_c__" = yes; then
- CXXFLAGS_CXX11=-std:c++latest
- else
- CXXFLAGS_CXX11=-std:c++17
- fi
- CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
-elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
- my_flags='-std=c++17 -std=c++1z'
- if test "$with_latest_c__" = yes; then
- my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
- fi
- for flag in $my_flags; do
- if test "$COM" = MSC; then
- flag="-Xclang $flag"
+if test -z "${CXXFLAGS_CXX11+x}"; then
+ AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
+ if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
+ if test "$with_latest_c__" = yes; then
+ CXXFLAGS_CXX11=-std:c++latest
+ else
+ CXXFLAGS_CXX11=-std:c++17
fi
- save_CXXFLAGS=$CXXFLAGS
- CXXFLAGS="$CXXFLAGS $flag -Werror"
- if test "$SYSTEM_LIBCMIS" = TRUE; then
- CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
+ CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
+ elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
+ my_flags='-std=c++17 -std=c++1z'
+ if test "$with_latest_c__" = yes; then
+ my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
fi
- AC_LANG_PUSH([C++])
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #include <algorithm>
- #include <functional>
- #include <vector>
-
- #if defined SYSTEM_LIBCMIS
- // See ucb/source/ucp/cmis/auth_provider.hxx:
- #if !defined __clang__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wdeprecated"
- #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
- #endif
- #include <libcmis/libcmis.hxx>
- #if !defined __clang__
- #pragma GCC diagnostic pop
- #endif
- #endif
-
- void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
- std::sort(v.begin(), v.end(), fn);
- }
- ]])],[CXXFLAGS_CXX11=$flag])
- AC_LANG_POP([C++])
- CXXFLAGS=$save_CXXFLAGS
- if test -n "$CXXFLAGS_CXX11"; then
- break
- fi
- done
-fi
-if test -n "$CXXFLAGS_CXX11"; then
- AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
-else
- AC_MSG_ERROR(no)
+ for flag in $my_flags; do
+ if test "$COM" = MSC; then
+ flag="-Xclang $flag"
+ fi
+ save_CXXFLAGS=$CXXFLAGS
+ CXXFLAGS="$CXXFLAGS $flag -Werror"
+ if test "$SYSTEM_LIBCMIS" = TRUE; then
+ CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
+ fi
+ AC_LANG_PUSH([C++])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #include <algorithm>
+ #include <functional>
+ #include <vector>
+
+ #if defined SYSTEM_LIBCMIS
+ // See ucb/source/ucp/cmis/auth_provider.hxx:
+ #if !defined __clang__
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wdeprecated"
+ #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
+ #endif
+ #include <libcmis/libcmis.hxx>
+ #if !defined __clang__
+ #pragma GCC diagnostic pop
+ #endif
+ #endif
+
+ void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
+ std::sort(v.begin(), v.end(), fn);
+ }
+ ]])],[CXXFLAGS_CXX11=$flag])
+ AC_LANG_POP([C++])
+ CXXFLAGS=$save_CXXFLAGS
+ if test -n "$CXXFLAGS_CXX11"; then
+ break
+ fi
+ done
+ fi
+ if test -n "$CXXFLAGS_CXX11"; then
+ AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
+ else
+ AC_MSG_ERROR(no)
+ fi
fi
AC_SUBST(CXXFLAGS_CXX11)