LYX_OPTION(ASAN "Use address sanitizer" OFF ALL)
LYX_COMBO(USE_QT "Use Qt version as frontend" QT4 QT5)
LYX_OPTION(3RDPARTY_BUILD "Build 3rdparty libs" OFF ALL)
-LYX_COMBO(ENABLE_CXX11 "Build with options for c++11-mode" AUTO ON OFF)
# GCC specific
LYX_OPTION(PROFILE "Build profile version" OFF GCC)
endif()
-if(LYX_ENABLE_CXX11 MATCHES "AUTO")
- # Set to some meaningful default
- find_package(CXX11Compiler)
- if(NOT CXX11COMPILER_FOUND)
- set(LYX_ENABLE_CXX11 OFF CACHE TYPE STRING FORCE)
- else()
- if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
- execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
- set(LYX_ENABLE_CXX11 ON CACHE TYPE STRING FORCE)
- else()
- # Not a gnu compiler
- if(CMAKE_CXX_COMPILER_ID MATCHES "^[cC]lang$")
- set(LYX_ENABLE_CXX11 ON CACHE TYPE STRING FORCE)
- else()
- set(LYX_ENABLE_CXX11 OFF CACHE TYPE STRING FORCE)
- endif()
- endif()
- endif()
+# Set to some meaningful default
+find_package(CXX11Compiler)
+if(NOT CXX11COMPILER_FOUND)
+ message(FATAL_ERROR "A C++11 compatible compiler is required.")
endif()
set(LYX_GCC11_MODE)
if(UNIX OR MINGW)
# see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631
set(LYX_USE_STD_REGEX 0)
else()
- if (LYX_ENABLE_CXX11)
- set(LYX_USE_STD_REGEX 1)
- endif()
- endif()
- if (LYX_ENABLE_CXX11)
- find_package(CXX11Compiler)
- if(NOT CXX11COMPILER_FOUND)
- message(FATAL_ERROR "A C++11 compatible compiler is required.")
- endif()
- set(LYX_GCC11_MODE "${CXX11_FLAG}")
+ set(LYX_USE_STD_REGEX 1)
endif()
+ set(LYX_GCC11_MODE "${CXX11_FLAG}")
else()
set(LYX_USE_STD_REGEX 0)
# if(MSVC10)
dnl would fail.
AC_DEFUN([LYX_CXX_USE_REGEX],
[lyx_std_regex=no
- if test $lyx_use_cxx11 = yes; then
save_CPPFLAGS=$CPPFLAGS
# we want to pass -std=c++11 to clang/cpp if necessary
CPPFLAGS="$AM_CPPFLAGS $1 $CPPFLAGS"
fi
fi
AC_MSG_RESULT([$lyx_std_regex])
- fi
if test $lyx_std_regex = yes ; then
lyx_flags="$lyx_flags std-regex"
*) lyx_optim=${enable_optimization};;
esac
-AC_ARG_ENABLE(cxx11,
- AC_HELP_STRING([--disable-cxx11],[disable C++11 mode (default: enabled for known good compilers)]),,
- enable_cxx11=auto;)
-
AC_ARG_ENABLE(assertions,
AC_HELP_STRING([--enable-assertions],[add runtime sanity checks in the program]),,
[AS_CASE([$build_type], [dev*|pre*], [enable_assertions=yes],
;;
esac
fi
- dnl enable_cxx11 can be yes/no/auto.
- dnl By default, it is auto and we enable C++11 when possible
- if test x$enable_cxx11 != xno ; then
case $gxx_version in
4.3*|4.4*|4.5*|4.6*)
dnl Note that this will define __GXX_EXPERIMENTAL_CXX0X__.
# cxx11_flags is useful when running preprocessor alone
# (see detection of regex).
AM_CXXFLAGS="$cxx11_flags $AM_CXXFLAGS"
- fi
fi
LYX_CXX_CXX11
dnl We still use auto_ptr, which is obsoleted. Shut off the warnings.
AM_CXXFLAGS="$AM_CXXFLAGS -Wno-deprecated-declarations"
fi
+else
+ AC_ERROR([A C++11 compatible compiler is required])
fi
LYX_CXX_USE_REGEX([$cxx11_flags])
])
/************************************************************
** You should not need to change anything beyond this point */
-#if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)
-#define LYX_USE_CXX11
-#endif
-
#ifndef HAVE_STRERROR
#if defined(__cplusplus)
extern "C"
if "%1%" == "devel" (
REM Build solution to develop LyX
REM you can add the option "-GNinja" for a faster compilation
- cmake %LYX_SOURCE% -GNinja -G%USED_STUDIO% -DLYX_ENABLE_CXX11=ON -DLYX_ENABLE_EXPORT_TESTS=ON -DLYX_MERGE_FILES=0 -DLYX_NLS=1 -DLYX_INSTALL=0 -DLYX_RELEASE=0 -DLYX_CONSOLE=FORCE %DEPENDENCIES_DOWNLOAD%
+ cmake %LYX_SOURCE% -GNinja -G%USED_STUDIO% -DLYX_ENABLE_EXPORT_TESTS=ON -DLYX_MERGE_FILES=0 -DLYX_NLS=1 -DLYX_INSTALL=0 -DLYX_RELEASE=0 -DLYX_CONSOLE=FORCE %DEPENDENCIES_DOWNLOAD%
msbuild lyx.sln /p:Configuration=Debug /t:LyX /t:tex2lyx
)
if "%1%" == "install" (
REM Build solution to develop LyX
REM set -DLYX_MERGE_REBUILD and -DLYX_MERGE_FILES to 1 for a version released with an installer
- cmake %LYX_SOURCE% -GNinja -G%USED_STUDIO% -DLYX_ENABLE_CXX11=ON -DLYX_MERGE_REBUILD=0 -DLYX_MERGE_FILES=0 -DLYX_NLS=1 -DLYX_INSTALL=1 -DLYX_RELEASE=1 -DLYX_CONSOLE=OFF %DEPENDENCIES_DOWNLOAD%
+ cmake %LYX_SOURCE% -GNinja -G%USED_STUDIO% -DLYX_MERGE_REBUILD=0 -DLYX_MERGE_FILES=0 -DLYX_NLS=1 -DLYX_INSTALL=1 -DLYX_RELEASE=1 -DLYX_CONSOLE=OFF %DEPENDENCIES_DOWNLOAD%
msbuild lyx.sln /p:Configuration=Release /t:ALL_BUILD
msbuild INSTALL.vcxproj /p:Configuration=Release
)
if "%1%" == "devel" (
REM Build solution to develop LyX
REM you can add the option "-GNinja" for a faster compilation
- cmake %LYX_SOURCE% -G"Visual Studio 14 2015 Win64" -DLYX_ENABLE_CXX11=ON -DLYX_USE_QT=QT5 -DLYX_ENABLE_EXPORT_TESTS=0 -DLYX_MERGE_FILES=0 -DLYX_NLS=1 -DLYX_INSTALL=0 -DLYX_RELEASE=0 -DLYX_CONSOLE=FORCE -DLYX_3RDPARTY_BUILD=1 %DEPENDENCIES_DOWNLOAD%
+ cmake %LYX_SOURCE% -G"Visual Studio 14 2015 Win64" -DLYX_USE_QT=QT5 -DLYX_ENABLE_EXPORT_TESTS=0 -DLYX_MERGE_FILES=0 -DLYX_NLS=1 -DLYX_INSTALL=0 -DLYX_RELEASE=0 -DLYX_CONSOLE=FORCE -DLYX_3RDPARTY_BUILD=1 %DEPENDENCIES_DOWNLOAD%
msbuild src\LyX.vcxproj /p:Configuration=Debug
msbuild src\tex2lyx\tex2lyx.vcxproj /p:Configuration=Debug
)
if "%1%" == "install" (
REM Build solution to develop LyX
REM set -DLYX_MERGE_REBUILD and -DLYX_MERGE_FILES to 1 for a version released with an installer
- cmake %LYX_SOURCE% -GNinja -G"Visual Studio 14 2015 Win64" -DLYX_ENABLE_CXX11=ON -DLYX_USE_QT=QT5 -DLYX_MERGE_REBUILD=0 -DLYX_MERGE_FILES=0 -DLYX_NLS=1 -DLYX_INSTALL=1 -DLYX_RELEASE=1 -DLYX_CONSOLE=OFF %DEPENDENCIES_DOWNLOAD%
+ cmake %LYX_SOURCE% -GNinja -G"Visual Studio 14 2015 Win64" -DLYX_USE_QT=QT5 -DLYX_MERGE_REBUILD=0 -DLYX_MERGE_FILES=0 -DLYX_NLS=1 -DLYX_INSTALL=1 -DLYX_RELEASE=1 -DLYX_CONSOLE=OFF %DEPENDENCIES_DOWNLOAD%
msbuild INSTALL.vcxproj /p:Configuration=Release
)
if "%1%" == "devel" (
REM Build solution to develop LyX
REM you can add the option "-GNinja" for a faster compilation
- cmake %LYX_SOURCE% -G"Visual Studio 14 2015" -DLYX_ENABLE_CXX11=ON -DLYX_USE_QT=QT5 -DLYX_ENABLE_EXPORT_TESTS=0 -DLYX_MERGE_FILES=0 -DLYX_NLS=1 -DLYX_INSTALL=0 -DLYX_RELEASE=0 -DLYX_CONSOLE=FORCE -DLYX_3RDPARTY_BUILD=1 %DEPENDENCIES_DOWNLOAD%
+ cmake %LYX_SOURCE% -G"Visual Studio 14 2015" -DLYX_USE_QT=QT5 -DLYX_ENABLE_EXPORT_TESTS=0 -DLYX_MERGE_FILES=0 -DLYX_NLS=1 -DLYX_INSTALL=0 -DLYX_RELEASE=0 -DLYX_CONSOLE=FORCE -DLYX_3RDPARTY_BUILD=1 %DEPENDENCIES_DOWNLOAD%
msbuild src\LyX.vcxproj /p:Configuration=Debug
msbuild src\tex2lyx\tex2lyx.vcxproj /p:Configuration=Debug
)
if "%1%" == "install" (
REM Build solution to develop LyX
REM set -DLYX_MERGE_REBUILD and -DLYX_MERGE_FILES to 1 for a version released with an installer
- cmake %LYX_SOURCE% -GNinja -G"Visual Studio 14 2015" -DLYX_ENABLE_CXX11=ON -DLYX_USE_QT=QT5 -DLYX_MERGE_REBUILD=0 -DLYX_MERGE_FILES=0 -DLYX_NLS=1 -DLYX_INSTALL=1 -DLYX_RELEASE=1 -DLYX_CONSOLE=OFF %DEPENDENCIES_DOWNLOAD%
+ cmake %LYX_SOURCE% -GNinja -G"Visual Studio 14 2015" -DLYX_USE_QT=QT5 -DLYX_MERGE_REBUILD=0 -DLYX_MERGE_FILES=0 -DLYX_NLS=1 -DLYX_INSTALL=1 -DLYX_RELEASE=1 -DLYX_CONSOLE=OFF %DEPENDENCIES_DOWNLOAD%
REM msbuild lyx.sln /p:Configuration=Release /t:ALL_BUILD
msbuild INSTALL.vcxproj /p:Configuration=Release
)
// use GNU libstdc++ with C++11 ABI
#cmakedefine USE_GLIBCXX_CXX11_ABI 1
-// use GNU c++11 extensions
-#cmakedefine LYX_USE_CXX11 1
-#ifndef LYX_USE_CXX11
- #if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)
- #error "Conflicting defines of LYX_USE_CXX11"
- #endif
-#endif
#cmakedefine Z_PREFIX 1
// Defined if QT=QT5 uses X11
mkdir %LYX_BUILD%
cd %LYX_BUILD%
-cmake %LYX_SOURCE% -G"MinGW Makefiles" -DLYX_PYTHON_EXECUTABLE=%GNUWIN32_DIR%\Python\python -DLYX_3RDPARTY_BUILD=1 -DLYX_ENABLE_CXX11=ON -DLYX_USE_QT=QT5 -DLYX_MERGE_REBUILD=1 -DLYX_MERGE_FILES=1 -DLYX_NLS=1 -DLYX_INSTALL=1 -DLYX_RELEASE=1 -DLYX_CONSOLE=OFF
+cmake %LYX_SOURCE% -G"MinGW Makefiles" -DLYX_PYTHON_EXECUTABLE=%GNUWIN32_DIR%\Python\python -DLYX_3RDPARTY_BUILD=1 -DLYX_USE_QT=QT5 -DLYX_MERGE_REBUILD=1 -DLYX_MERGE_FILES=1 -DLYX_NLS=1 -DLYX_INSTALL=1 -DLYX_RELEASE=1 -DLYX_CONSOLE=OFF
mingw32-make doc
mingw32-make translations
-DLYX_XMINGW=$compiler \
-DLYX_USE_QT=QT5 \
-DLYX_QUIET=1 \
- -DLYX_ENABLE_CXX11=ON \
-DLYX_HUNSPELL=1 \
-DLYX_3RDPARTY_BUILD=1 \
$pch $mergefile
// $& is an ECMAScript format expression that expands to all
// of the current match
-#if defined(LYX_USE_CXX11) && defined(LYX_USE_STD_REGEX)
+#ifdef LYX_USE_STD_REGEX
// To prefix a matched expression with a single literal backslash, we
// need to escape it for the C++ compiler and use:
// FIXME: UNICODE
// $& is a ECMAScript format expression that expands to all
// of the current match
-#if defined(LYX_USE_CXX11) && defined(LYX_USE_STD_REGEX)
+#ifdef LYX_USE_STD_REGEX
// To prefix a matched expression with a single literal backslash, we
// need to escape it for the C++ compiler and use:
return lyx::regex_replace(expr, reg, "\\$&");
#include "support/functional.h"
-#ifdef LYX_USE_CXX11
-
-#define LYX_BIND_NS std
-
namespace lyx
{
using std::placeholders::_1;
using std::placeholders::_2;
+ using std::bind;
+ using std::ref;
}
-#else
-
-#include <boost/bind.hpp>
-#define LYX_BIND_NS boost
-
-#endif
-
-namespace lyx
-{
- using LYX_BIND_NS::bind;
- using LYX_BIND_NS::ref;
-}
-
-#undef LYX_BIND_NS
-
#endif
#ifndef LYX_FUNCTIONAL_H
#define LYX_FUNCTIONAL_H
-#ifdef LYX_USE_CXX11
-
#include <functional>
-#define LYX_FUNCTIONAL_NS std
-
-#else
-
-#include <boost/function.hpp>
-#include <boost/functional.hpp>
-#define LYX_FUNCTIONAL_NS boost
-
-#endif
namespace lyx
{
- using LYX_FUNCTIONAL_NS::function;
+ using std::function;
}
-#undef LYX_FUNCTIONAL_NS
-
#endif
}
-#ifdef LYX_USE_CXX11
using std::next;
-#else
-/// Replacement of std::next for older compilers
-template <typename It, typename Diff>
-inline It next(It i, Diff n = 1)
-{
- std::advance(i, n);
- return i;
-}
-#endif
-#ifdef LYX_USE_CXX11
using std::prev;
-#else
-/// Replacement of std::prev for older compilers
-template <typename It, typename Diff>
-inline It prev(It i, Diff n = 1)
-{
- std::advance(i, -n);
- return i;
-}
-#endif
} // namespace lyx
#ifndef LYX_REGEXP_H
#define LYX_REGEXP_H
-#if defined(LYX_USE_CXX11) && defined(LYX_USE_STD_REGEX)
+#ifdef LYX_USE_STD_REGEX
# include <regex>
// <regex> in gcc is unusable in versions less than 4.9.0
// see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631
#ifndef LYX_SHARED_PTR_H
#define LYX_SHARED_PTR_H
-#ifdef LYX_USE_CXX11
-
#include <memory>
-#define LYX_SHAREDPTR_NS std
-
-#else
-
-#include <boost/shared_ptr.hpp>
-#include <boost/make_shared.hpp>
-#define LYX_SHAREDPTR_NS boost
-
-#endif
namespace lyx
{
- using LYX_SHAREDPTR_NS::shared_ptr;
- using LYX_SHAREDPTR_NS::make_shared;
- using LYX_SHAREDPTR_NS::const_pointer_cast;
+ using std::shared_ptr;
+ using std::make_shared;
+ using std::const_pointer_cast;
}
-#undef LYX_SHAREDPTR_NS
-
#endif
iparserdocstream(idocstream & is) : is_(is) {}
-#ifdef LYX_USE_CXX11
/// Like std::istream::operator bool()
/// Do not convert is_ implicitly to bool, since that is forbidden in C++11.
explicit operator bool() const { return s_.empty() ? !is_.fail() : true; }
-#else
- /// Like std::istream::operator void*()
- operator void*() const { return (s_.empty() && is_.fail()) ?
- 0 : const_cast<iparserdocstream *>(this); }
-#endif
/// change the encoding of the input stream to \p e (iconv name)
void setEncoding(std::string const & e);