--- /dev/null
+# This file is part of LyX, the document processor.
+# Licence details can be found in the file COPYING.
+#
+# Copyright (c) 2010-2011 Peter Kümmel, <syntheticpp@gmx.net>
+#
+
+project(boost)
+
+message(STATUS "Using std regex")
--- /dev/null
+# This file is part of LyX, the document processor.
+# Licence details can be found in the file COPYING.
+#
+# Copyright (c) 2006-2011 Peter Kümmel, <syntheticpp@gmx.net>
+#
+
+project(boost_regex)
+
+set(boost_regex_sources
+ cpp_regex_traits.cpp
+ c_regex_traits.cpp
+ cregex.cpp
+ fileiter.cpp
+ instances.cpp
+ regex.cpp
+ regex_raw_buffer.cpp
+ regex_traits_defaults.cpp
+ static_mutex.cpp
+ w32_regex_traits.cpp)
+
+lyx_add_path(boost_regex_sources ${TOP_SRC_DIR}/3rdparty/boost/libs/regex/src)
+
+add_library(boost_regex STATIC ${boost_regex_sources})
+
+set_target_properties(boost_regex PROPERTIES FOLDER "3rd_party")
+
--- /dev/null
+#
+# Copyright Troy D. Straszheim
+#
+# Distributed under the Boost Software License, Version 1.0.
+# See http://www.boost.org/LICENSE_1_0.txt
+#
+# Look for the ICU library. If we find it, we'll compile in support for ICU
+include(FindICU)
+set(BOOST_REGEX_LIBRARIES)
+if (ICU_FOUND AND ICU_I18N_FOUND)
+ add_definitions(-DBOOST_HAS_ICU=1)
+ include_directories(${ICU_INCLUDE_DIRS})
+ set(BOOST_REGEX_LIBRARIES ${ICU_LIBRARIES} ${ICU_I18N_LIBRARIES})
+endif (ICU_FOUND AND ICU_I18N_FOUND)
+
+boost_add_library(boost_regex
+ c_regex_traits.cpp
+ cpp_regex_traits.cpp
+ cregex.cpp
+ fileiter.cpp
+ instances.cpp
+ posix_api.cpp
+ regex.cpp
+ regex_debug.cpp
+ regex_raw_buffer.cpp
+ regex_traits_defaults.cpp
+ static_mutex.cpp
+ w32_regex_traits.cpp
+ wc_regex_traits.cpp
+ wide_posix_api.cpp
+ winstances.cpp
+ usinstances.cpp
+ LINK_LIBS ${BOOST_REGEX_LIBRARIES}
+ SHARED_COMPILE_FLAGS -DBOOST_REGEX_DYN_LINK=1)
+
+
+
+
+
# GCC specific
LYX_OPTION(PROFILE "Build with options for gprof" ${DefaultLyxProfile} GCC)
+LYX_OPTION(EXTERNAL_BOOST "Use external boost" ${DefaultExternalLibs} GCC)
LYX_OPTION(PROGRAM_SUFFIX "Append version suffix to binaries" ON GCC)
LYX_OPTION(DEBUG_GLIBC "Enable libstdc++ debug mode" OFF GCC)
LYX_OPTION(DEBUG_GLIBC_PEDANTIC "Enable libstdc++ pedantic debug mode" OFF GCC)
message(FATAL_ERROR "Cannot use valgrind tests, executable valgrind is missing. Please disable LYX_ENABLE_VALGRIND_TESTS")
endif()
endif()
+if (LYX_DEBUG_GLIBC OR LYX_DEBUG_GLIBC_PEDANTIC OR LYX_STDLIB_DEBUG)
+ if (LYX_EXTERNAL_BOOST)
+ message(FATAL_ERROR "Using external boost not compatible with debug mode for stdlib")
+ endif()
+endif()
if(LYX_DMG)
set(LYX_BUNDLE ON)
add_subdirectory(3rdparty/dtl)
endif()
+# Set only include path.
+# Use internal boost, which is known to exist
+# we don't need any libraries
+set(Lyx_Boost_Libraries)
+add_definitions(-DBOOST_USER_CONFIG=<config.h>)
+include_directories(${TOP_SRC_DIR}/3rdparty/boost)
+
if(WIN32)
if(LYX_CONSOLE)
set(LYX_QTMAIN_LIBRARY)
COMPILE_FLAGS "/Ycconfig.h /Fp\$(IntDir)/config.pch")
set(${name_}_sources ${${name_}_sources} ${TOP_BINARY_DIR}/config_pch.cpp
${TOP_BINARY_DIR}/pcheaders.h)
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /DLYX_PCH_STL /DLYX_PCH_QT")
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /DLYX_PCH_STL /DLYX_PCH_QT")
- set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /DLYX_PCH_STL")
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /DLYX_PCH_STL /DLYX_PCH_BOOST /DLYX_PCH_QT")
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /DLYX_PCH_STL /DLYX_PCH_BOOST /DLYX_PCH_QT")
+ set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /DLYX_PCH_STL /DLYX_PCH_BOOST")
endmacro(lyx_add_msvc_pch)
macro(lyx_add_gcc_pch name_)
endmacro()
macro(lyx_add_msvc_pch name_)
endmacro()
macro(lyx_add_gcc_pch name_)
- add_definitions(-DLYX_PCH_STL -DLYX_PCH_QT)
+ add_definitions(-DLYX_PCH_STL -DLYX_PCH_BOOST -DLYX_PCH_QT)
ADD_PRECOMPILED_HEADER(${name_} ${TOP_BINARY_DIR}/config_pch.cpp ${TOP_BINARY_DIR}/config.h.gch)
endmacro()
endif()
# GCC specific
-- LYX_PROFILE = OFF : Build with options for gprof
+ -- LYX_EXTERNAL_BOOST = OFF : Use external boost
-- LYX_PROGRAM_SUFFIX = ON : Append version suffix to binaries
-- LYX_DEBUG_GLIBC = OFF : Enable libstdc++ debug mode
-- LYX_DEBUG_GLIBC_PEDANTIC = OFF : Enable libstdc++ pedantic debug mode
* for the 'Debug' and 'Release' build all precompiled headers are enabled
to compile without pch (non file merge mode) This could be used to check
if all necessary headers are included.
- * use 'MinSizeRel' which only precompiles the STL headers
+ * use 'MinSizeRel' which only precompiles the STL and Boost headers
* use 'RelWithDebInfo' which does not use any precompiled headers
#undef HAVE_MKDIR // use _mkdir instead
#endif
+#define BOOST_ALL_NO_LIB 1
+
#ifdef _DEBUG
# define ENABLE_ASSERTIONS 1
#endif
+#ifndef ENABLE_ASSERTIONS
+# define BOOST_DISABLE_ASSERTS 1
+#endif
+#define BOOST_ENABLE_ASSERT_HANDLER 1
+
+//#define BOOST_DISABLE_THREADS 1
+#define BOOST_NO_WSTRING 1
+
#ifdef __CYGWIN__
# define _DEFAULT_SOURCE
+# define BOOST_POSIX 1
+# define BOOST_POSIX_API 1
+# define BOOST_POSIX_PATH 1
#endif
#if defined(HAVE_WCHAR_T) && SIZEOF_WCHAR_T == 4
# get cmake-known std numbers
# Detection of c++20 works well, but our code is not ready for it yet.
-# We currently get errors from our code.
+# We currently get errors with internal boost and also from our code.
set(_max_std_num 17)
lyxgetknowncmakestd(${_max_std_num} tmpnums)
include_directories(BEFORE
"${TOP_SRC_DIR}/src/client"
+ "${TOP_SRC_DIR}/3rdparty/boost"
${ZLIB_INCLUDE_DIR})
add_executable(${_lyxclient} ${_lyxclient_sources} ${_lyxclient_headers})
target_link_libraries(${_lyxclient}
support
+ ${Lyx_Boost_Libraries}
${ICONV_LIBRARY}
${QT_QTCORE_LIBRARY}
${QT_QTGUI_LIBRARY})
endif()
set_target_properties(frontends PROPERTIES FOLDER "applications/LyX")
-#target_link_libraries(frontends)
+target_link_libraries(frontends ${Lyx_Boost_Libraries})
project_source_group("${GROUP_CODE}" frontends_sources frontends_headers)
set(TESTS "test_biblio")
-add_executable(biblio biblio.cpp)
-#target_link_libraries(biblio)
+add_executable(biblio biblio.cpp boost.cpp)
+target_link_libraries(biblio ${Lyx_Boost_Libraries})
add_dependencies(lyx_run_tests biblio)
set_target_properties(biblio PROPERTIES FOLDER "tests/frontends")
qt_use_modules(support Core Gui)
-target_link_libraries(support ${QT_QTCORE_LIBRARY} ${ZLIB_LIBRARY})
+target_link_libraries(support ${Lyx_Boost_Libraries} ${QT_QTCORE_LIBRARY} ${ZLIB_LIBRARY})
lyx_add_gcc_pch(support)
set(${_program}_SOURCES ${_tmplist})
add_executable(${_program} ${_tmplist})
target_link_libraries(${_program} support
- ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY}
+ ${Lyx_Boost_Libraries} ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY}
${ZLIB_LIBRARY} ${ICONV_LIBRARY})
lyx_target_link_libraries(${_program} Magic)
if(CYGWIN)
set(_depends)
foreach(_src ${check_PROGRAMS})
- sources(${_src} ${_src}.cpp dummy_functions.cpp)
+ sources(${_src} ${_src}.cpp dummy_functions.cpp boost.cpp)
string(REPLACE "check_" "" _srcx ${_src})
set(src_data_file "${TOP_SRC_DIR}/src/support/tests/regfiles/${_srcx}")
if (MSVC AND EXISTS "${src_data_file}.MSVC")
foreach(_f insets/InsetLayout.cpp CiteEnginesList.cpp Color.cpp Counters.cpp Floating.cpp
FloatList.cpp FontInfo.cpp Layout.cpp LayoutFile.cpp Lexer.cpp
ModuleList.cpp Spacing.cpp TextClass.cpp tests/check_layout.cpp
- tests/dummy_functions.cpp)
+ tests/boost.cpp tests/dummy_functions.cpp)
list(APPEND check_layout_SOURCES "${TOP_SRC_DIR}/src/${_f}")
endforeach()
add_executable(check_layout ${check_layout_SOURCES})
target_link_libraries(check_layout support
- ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY}
+ ${Lyx_Boost_Libraries} ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY}
${ZLIB_LIBRARY} ${ICONV_LIBRARY})
if(CYGWIN)
target_link_libraries(check_layout shlwapi)
set(check_ExternalTransforms_SOURCES)
foreach(_f graphics/GraphicsParams.cpp insets/ExternalTransforms.cpp
tests/check_ExternalTransforms.cpp
- tests/dummy_functions.cpp)
+ tests/boost.cpp tests/dummy_functions.cpp)
list(APPEND check_ExternalTransforms_SOURCES ${TOP_SRC_DIR}/src/${_f})
endforeach()
add_executable(check_ExternalTransforms ${check_ExternalTransforms_SOURCES})
target_link_libraries(check_ExternalTransforms support
- ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY})
+ ${Lyx_Boost_Libraries} ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY})
lyx_target_link_libraries(check_ExternalTransforms Magic)
add_dependencies(lyx_run_tests check_ExternalTransforms)
add_dependencies(lyx_run_tests check_ExternalTransforms)
set(check_Length_SOURCES)
-foreach(_f tests/check_Length.cpp tests/dummy_functions.cpp)
+foreach(_f tests/check_Length.cpp tests/boost.cpp tests/dummy_functions.cpp)
list(APPEND check_Length_SOURCES ${TOP_SRC_DIR}/src/${_f})
endforeach()
add_executable(check_Length ${check_Length_SOURCES})
target_link_libraries(check_Length support
- ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY})
+ ${Lyx_Boost_Libraries} ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY})
lyx_target_link_libraries(check_Length Magic)
add_dependencies(lyx_run_tests check_Length)
include_directories(${TOP_SRC_DIR}/src/tests)
set(check_ListingsCaption_SOURCES)
-foreach(_f tests/check_ListingsCaption.cpp tests/dummy_functions.cpp)
+foreach(_f tests/check_ListingsCaption.cpp tests/boost.cpp tests/dummy_functions.cpp)
list(APPEND check_ListingsCaption_SOURCES ${TOP_SRC_DIR}/src/${_f})
endforeach()
add_executable(check_ListingsCaption ${check_ListingsCaption_SOURCES})
target_link_libraries(check_ListingsCaption support
- ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY})
+ ${Lyx_Boost_Libraries} ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY})
lyx_target_link_libraries(check_ListingsCaption Magic)
add_dependencies(lyx_run_tests check_ListingsCaption)
target_link_libraries(${_tex2lyx}
support
+ ${Lyx_Boost_Libraries}
${QT_QTCORE_LIBRARY}
${QT_QTGUI_LIBRARY}
${ICONV_LIBRARY})