])
-dnl Check whether to configure for Qt4 or Qt5. Default is Qt5.
+dnl Check whether to configure for Qt4, Qt5, or Qt6. Default is Qt5.
+dnl
+AC_DEFUN([LYX_CHECK_QT6],[
+AC_MSG_CHECKING([whether Qt6 is requested])
+AC_ARG_ENABLE([qt6],
+ [AS_HELP_STRING([--enable-qt6],[use Qt6 for building])],
+ USE_QT6=$enableval, USE_QT6=no)
+AC_MSG_RESULT([$USE_QT6])
+AC_SUBST([USE_QT6])
+])
dnl
AC_DEFUN([LYX_CHECK_QT5],[
AC_MSG_CHECKING([whether Qt5 is disabled])
])
-dnl Usage: LYX_CXX_CXX11_FLAGS: add to AM_CXXFLAGS the best flag that
-selects C++11 mode; gives an error when C++11 mode is not found.
+dnl Usage: LYX_CXX_CXX11_FLAGS(VERSION): add to AM_CXXFLAGS the best flag that
+dnl selects C++11 mode; gives an error when C++11 mode is not found.
+dnl VERSION is a list of years to try (e.g. 11 or {14,11}).
AC_DEFUN([LYX_CXX_CXX11_FLAGS],
-[AC_CACHE_CHECK([for at least C++11 mode], [lyx_cv_cxx11_flags],
+[AC_CACHE_CHECK([for a good C++ mode], [lyx_cv_cxx11_flags],
[lyx_cv_cxx11_flags=none
- for flag in -std=c++14 -std=c++11 "" -std=gnu++14 -std=gnu++11 ; do
+ for flag in `eval echo -std=c++$1 default -std=gnu++$1` ; do
+ if test $flag = default ; then
+ flag=
+ fi
save_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$AM_CPPFLAGS $CPPFLAGS"
save_CXXFLAGS=$CXXFLAGS
CXXFLAGS=$save_CXXFLAGS
CPPFLAGS=$save_CPPFLAGS
done])
- if test $lyx_cv_cxx11_flags = none ; then
- AC_MSG_ERROR([Cannot find suitable C++11 mode for compiler $CXX])
+ if test x$lyx_cv_cxx11_flags = xnone ; then
+ AC_MSG_ERROR([Cannot find suitable mode for compiler $CXX])
fi
AM_CXXFLAGS="$lyx_cv_cxx11_flags $AM_CXXFLAGS"
])
-dnl Usage: LYX_CXX_USE_REGEX
-dnl decide whether we want to use std::regex and set the
-dnl LYX_USE_STD_REGEX macro and conditional accordingly.
-AC_DEFUN([LYX_CXX_USE_REGEX],
-[AC_ARG_ENABLE(std-regex,
- AS_HELP_STRING([--enable-std-regex],[use std::regex instead of boost::regex (default is autodetected)]),
- [lyx_std_regex=$enableval],
- [AC_MSG_CHECKING([for correct regex implementation])
- save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$AM_CPPFLAGS $CPPFLAGS"
- save_CXXFLAGS=$CXXFLAGS
- CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS"
- # The following code snippet has been taken taken from example in
- # http://stackoverflow.com/questions/8561850/compile-stdregex-iterator-with-gcc
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[
- #include <regex>
- #include <iostream>
-
- #include <string.h>
-
- typedef std::regex_iterator<const char *> Myiter;
- ]], [[
- const char *pat = "axayaz";
- Myiter::regex_type rx("a");
- Myiter next(pat, pat + strlen(pat), rx);
- Myiter end;
- ]])],[lyx_std_regex=yes],[lyx_std_regex=no])
- CXXFLAGS=$save_CXXFLAGS
- CPPFLAGS=$save_CPPFLAGS
- AC_MSG_RESULT([$lyx_std_regex])
- ])
-
- if test $lyx_std_regex = yes ; then
- lyx_flags="$lyx_flags std-regex"
- AC_DEFINE([LYX_USE_STD_REGEX], 1, [define to 1 if std::regex should be preferred to boost::regex])
- fi
- AM_CONDITIONAL([LYX_USE_STD_REGEX], test $lyx_std_regex = yes)
-])
-
-
dnl Usage: LYX_CXX_USE_CALL_ONCE
dnl check whether we can use std::call_once and set the
dnl LYX_USE_STD_CALL_ONCE macro and conditional accordingly.
[AC_REQUIRE([AC_PROG_CXX])
AC_REQUIRE([AC_PROG_CXXCPP])
+### We might want to force the C++ standard.
+AC_ARG_ENABLE(cxx-mode,
+ AS_HELP_STRING([--enable-cxx-mode],[choose C++ standard (default: 17, 14, then 11)]),,
+ [enable_cxx_mode={17,14,11}]
+)
+
AC_LANG_PUSH(C++)
LYX_PROG_CLANG
-LYX_CXX_CXX11_FLAGS
+LYX_CXX_CXX11_FLAGS($enable_cxx_mode)
LYX_LIB_STDCXX
LYX_LIB_STDCXX_CXX11_ABI
-LYX_CXX_USE_REGEX
LYX_CXX_USE_CALL_ONCE
AC_LANG_POP(C++)
if test x$CLANG = xno; then
dnl Useful for global version info
gxx_version=`${CXX} -dumpversion`
+ case $gxx_version in
+ *.*) ;;
+ *) gxx_version=`${CXX} -dumpfullversion` ;;
+ esac
CXX_VERSION="($gxx_version)"
else
gxx_version=clang-$clang_version
AM_CXXFLAGS="$AM_CXXFLAGS -fno-omit-frame-pointer"
fi
- if test x$USE_QT5 = xyes ; then
+ if test x$USE_QT5 = xyes -o x$USE_QT6 = xyes; then
AS_CASE([$host], [*mingw*|*cygwin*], [], [AM_CXXFLAGS="-fPIC $AM_CXXFLAGS"])
fi
dnl Warnings are for preprocessor too
if test x$enable_warnings = xyes ; then
- case $gxx_version in
- 9.*) AM_CPPFLAGS="$AM_CPPFLAGS -Wall -Wextra -Wno-deprecated-copy";;
- *) AM_CPPFLAGS="$AM_CPPFLAGS -Wall -Wextra";;
- esac
+ AM_CPPFLAGS="$AM_CPPFLAGS -Wall -Wextra"
+ dnl Shut off warning -Wdeprecated-copy, which triggers too much
+ dnl note that g++ always accepts -Wno-xxx, even when -Wxxx is an error.
+ AC_LANG_PUSH(C++)
+ AX_CHECK_COMPILE_FLAG([-Wdeprecated-copy],
+ [AM_CXXFLAGS="$AM_CXXFLAGS -Wno-deprecated-copy"], [], [-Werror])
+ AC_LANG_POP(C++)
fi
case $gxx_version in
- 2.*|3.*|4.@<:@0-6@:>@) AC_MSG_ERROR([gcc >= 4.7 is required]);;
+ 2.*|3.*|4.@<:@0-8@:>@*) AC_MSG_ERROR([gcc >= 4.9 is required]);;
esac
if test x$enable_stdlib_debug = xyes ; then
dnl FIXME: for clang/libc++, one should define _LIBCPP_DEBUG2=0
dnl See http://clang-developers.42468.n3.nabble.com/libc-debug-mode-td3336742.html
- case $gxx_version in
- *)
+ if test x$lyx_cv_lib_stdcxx = xyes ; then
lyx_flags="$lyx_flags stdlib-debug"
AC_DEFINE(_GLIBCXX_DEBUG, 1, [libstdc++ debug mode])
AC_DEFINE(_GLIBCXX_DEBUG_PEDANTIC, 1, [libstdc++ pedantic debug mode])
AC_SUBST(STDLIB_DEBUG, "-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC")
- ;;
- esac
+ else
+ enable_stdlib_debug=no
+ fi
fi
fi
fi
])
+dnl Usage: LYX_USE_INCLUDED_NOD : select if the included nod should be used.
+AC_DEFUN([LYX_USE_INCLUDED_NOD],[
+ AC_MSG_CHECKING([whether to use included nod library])
+ AC_ARG_WITH(included-nod,
+ [AS_HELP_STRING([--without-included-nod], [do not use the nod lib supplied with LyX, try to find one in the system directories - compilation will abort if nothing suitable is found])],
+ [lyx_cv_with_included_nod=$withval],
+ [lyx_cv_with_included_nod=yes])
+ AM_CONDITIONAL(USE_INCLUDED_NOD, test x$lyx_cv_with_included_nod = xyes)
+ AC_MSG_RESULT([$lyx_cv_with_included_nod])
+ if test x$lyx_cv_with_included_nod = xyes ; then
+ lyx_included_libs="$lyx_included_libs nod"
+ NOD_INCLUDES='-I$(top_srcdir)/3rdparty/nod'
+ else
+ NOD_INCLUDES=
+ AC_LANG_PUSH(C++)
+ AC_MSG_CHECKING([for nod library])
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([#include <nod.hpp>],
+ [nod::scoped_connection conn;])],
+ [AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])
+ AC_MSG_ERROR([cannot find suitable nod library (do not use --without-included-nod)])
+ ])
+ AC_LANG_POP(C++)
+ fi
+ AC_SUBST(NOD_INCLUDES)
+])
+
dnl Usage: LYX_USE_INCLUDED_BOOST : select if the included boost should
dnl be used.
AC_DEFUN([LYX_USE_INCLUDED_BOOST],[
AC_MSG_CHECKING([whether to use included boost library])
AC_ARG_WITH(included-boost,
- [AS_HELP_STRING([--without-included-boost], [do not use the boost lib supplied with LyX, try to find one in the system directories - compilation will abort if nothing suitable is found])],
+ [AS_HELP_STRING([--with-included-boost], [use the boost lib supplied with LyX])],
[lyx_cv_with_included_boost=$withval],
- [lyx_cv_with_included_boost=yes])
+ [lyx_cv_with_included_boost=no])
AM_CONDITIONAL(USE_INCLUDED_BOOST, test x$lyx_cv_with_included_boost = xyes)
AC_MSG_RESULT([$lyx_cv_with_included_boost])
+ if test x$lyx_cv_with_included_boost = xno ; then
+ AC_LANG_PUSH(C++)
+ AC_MSG_CHECKING([for boost library])
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([#include <boost/crc.hpp>],
+ [boost::crc_32_type crc;])],
+ [AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])
+ lyx_cv_with_included_boost=yes
+ ])
+ AC_LANG_POP(C++)
+ fi
if test x$lyx_cv_with_included_boost = xyes ; then
lyx_included_libs="$lyx_included_libs boost"
BOOST_INCLUDES='-I$(top_srcdir)/3rdparty/boost'
- if test $lyx_std_regex = yes ; then
- BOOST_LIBS=""
- else
- BOOST_LIBS='$(top_builddir)/3rdparty/boost/liblyxboost.a'
- fi
else
BOOST_INCLUDES=
- if test $lyx_std_regex = yes ; then
- BOOST_LIBS=""
- else
- AC_LANG_PUSH(C++)
- save_LIBS=$LIBS
-
- AC_MSG_CHECKING([for multithreaded boost libraries])
- LIBS="$save_LIBS -lboost_regex-mt $LIBTHREAD"
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([#include <boost/regex.hpp>],
- [boost::regex reg;])],
- [AC_MSG_RESULT([yes])
- BOOST_MT="-mt"],
- [AC_MSG_RESULT([no])
- AC_MSG_CHECKING([for plain boost libraries])
- LIBS="$save_LIBS -lboost_regex"
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([#include <boost/regex.hpp>],
- [boost::regex reg;])],
- [AC_MSG_RESULT([yes])
- BOOST_MT=""],
- [AC_MSG_RESULT([no])
- AC_MSG_ERROR([cannot find suitable boost library (do not use --without-included-boost)])
- ])
- ])
- LIBS=$save_LIBS
- AC_LANG_POP(C++)
-
- dnl In general, system boost libraries are incompatible with
- dnl the use of stdlib-debug in libstdc++. See ticket #9736 for
- dnl details.
- if test $enable_stdlib_debug = "yes" ; then
- LYX_WARNING([Compiling LyX with stdlib-debug and system boost libraries may lead to
- crashes. Consider using --disable-stdlib-debug or removing
- --without-included-boost.])
- fi
-
- BOOST_LIBS="-lboost_regex${BOOST_MT}"
- fi
fi
AC_SUBST(BOOST_INCLUDES)
- AC_SUBST(BOOST_LIBS)
])
if test x$lyx_cv_with_included_iconv = xyes ; then
lyx_included_libs="$lyx_included_libs iconv"
+dnl This is hardcoded to make it compile
+ AC_DEFINE([HAVE_WORKING_O_NOFOLLOW], 0, [Define to 1 if O_NOFOLLOW works.])
+
dnl Some bits from libiconv configure.ac to avoid a nested configure call:
AC_EILSEQ
AC_TYPE_MBSTATE_T
AC_CHECK_FUNCS([getc_unlocked mbrtowc wcrtomb mbsinit setlocale])
-dnl Ymbstate_t is used if HAVE_WCRTOMB || HAVE_MBRTOWC, see 3rdparty/libiconv/1.14/lib/loop_wchar.h.
+dnl Ymbstate_t is used if HAVE_WCRTOMB || HAVE_MBRTOWC, see 3rdparty/libiconv/1.15/lib/loop_wchar.h.
if test $ac_cv_func_wcrtomb = yes || test $ac_cv_func_mbrtowc = yes; then
USE_MBSTATE_T=1
else
dnl we build a static lib
DLL_VARIABLE=
AC_SUBST([DLL_VARIABLE])
- ICONV_INCLUDES='-I$(top_srcdir)/3rdparty/libiconv/1.14 -I$(top_builddir)/3rdparty/libiconv'
+ ICONV_INCLUDES='-I$(top_srcdir)/3rdparty/libiconv/1.15 -I$(top_builddir)/3rdparty/libiconv'
ICONV_LIBS='\$(top_builddir)/3rdparty/libiconv/liblyxiconv.a'
- ICONV_ICONV_H_IN=3rdparty/libiconv/iconv.h:3rdparty/libiconv/1.14/include/iconv.h.in
+ ICONV_ICONV_H_IN=3rdparty/libiconv/iconv.h:3rdparty/libiconv/1.15/include/iconv.h.in
else
ICONV_INCLUDES=
AM_ICONV
])
+dnl Usage: LYX_BUILD_INCLUDED_DTL : select if the included dtl should
+dnl be built and installed.
+AC_DEFUN([LYX_BUILD_INCLUDED_DTL],[
+ AC_MSG_CHECKING([whether to build dv2dt and dt2dv])
+ AC_ARG_WITH(included-dtl,
+ [AS_HELP_STRING([--with-included-dtl], [build and install the dv2dt and dt2dv programs supplied with LyX])],
+ [lyx_cv_with_included_dtl=$withval],
+ [lyx_cv_with_included_dtl=no])
+ AM_CONDITIONAL(BUILD_INCLUDED_DTL, test x$lyx_cv_with_included_dtl = xyes)
+ AC_MSG_RESULT([$lyx_cv_with_included_dtl])
+ if test x$lyx_cv_with_included_dtl = xyes ; then
+ lyx_flags="$lyx_flags build-dtl"
+ fi])
+
+
dnl Usage: LYX_CHECK_CALLSTACK_PRINTING: define LYX_CALLSTACK_PRINTING if the
dnl necessary APIs are available to print callstacks.
AC_DEFUN([LYX_CHECK_CALLSTACK_PRINTING],
])
+dnl Usage: LYX_CHECK_MACOS_DEPLOYMENT_TARGET : select the macos deployment target
+dnl [default-auto-value])
+dnl Assign the macosx-version-min value for compiler, linker and Info.plist.
+dnl Default is dynamic - depends on used Qt library version.
+AC_DEFUN([LYX_CHECK_MACOS_DEPLOYMENT_TARGET],[
+ AC_ARG_WITH(macos-deployment-target,
+ [AS_HELP_STRING([--with-macos-deployment-target], [force the macos deployment target for LyX])],
+ [macos_deployment_target=$withval],
+ [macos_deployment_target=auto])
+ if test "${macos_deployment_target}" = "auto" ; then
+ macos_deployment_target="10.10"
+ case "$QTLIB_VERSION" in
+ 5.12.*)
+ macos_deployment_target="10.12"
+ ;;
+ 6.*)
+ macos_deployment_target="10.14"
+ ;;
+ esac
+ fi
+ AM_CPPFLAGS="-mmacosx-version-min=$macos_deployment_target $AM_CPPFLAGS"
+ AM_LDFLAGS="-mmacosx-version-min=$macos_deployment_target $AM_LDFLAGS"
+ AC_SUBST(macos_deployment_target,"${macos_deployment_target}")
+ AC_MSG_CHECKING([the macos deployment target for LyX])
+ AC_MSG_RESULT([$macos_deployment_target])
+])
+
+
dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
dnl [default-yes-value])
dnl Adds a --with-'dir-name' option (described by 'desc') and puts the
AC_SUBST(LYX_USERDIR_VER,"$lyx_userdir_ver")
])
+AC_DEFUN([LYX_CHECK_WITH_SAXON],
+[
+ lyx_use_saxon=true
+ AC_ARG_WITH(saxon, AS_HELP_STRING([--without-saxon],[do not install saxon library (epub export)]))
+ test "$with_saxon" = "no" && lyx_use_saxon=false
+
+ if $lyx_use_saxon ; then
+ AC_MSG_RESULT(Set to installing internal saxon.)
+ fi
+
+ AM_CONDITIONAL(SAXON_INSTALL, $lyx_use_saxon)
+ ])
+
+AC_DEFUN([LYX_CHECK_WITH_XSLT_SHEETS],
+[
+ lyx_use_xslt_stylesheets=true
+ AC_ARG_WITH(xslt-stylesheets, AS_HELP_STRING([--without-xslt-stylesheets],[do not install XSLT Stylesheets (epub export)]))
+ test "$with_xslt_stylesheets" = "no" && lyx_use_xslt_stylesheets=false
+
+ if $lyx_use_xslt_stylesheets ; then
+ AC_MSG_RESULT(Set to installing XSLT Stylesheets.)
+ fi
+
+ AM_CONDITIONAL(XSLT_SHEETS_INSTALL, $lyx_use_xslt_stylesheets)
+ ])
+