cmake_policy(SET CMP0005 OLD)
# Installing MACOSX_BUNDLE targets requires a BUNDLE DESTINATION
cmake_policy(SET CMP0006 NEW)
+ if(POLICY CMP0028)
+ cmake_policy(SET CMP0028 OLD)
+ endif()
+ if(POLICY CMP0043)
+ # COMPILE_DEFINITIONS are not used yet. Enable new behavior.
+ cmake_policy(SET CMP0043 NEW)
+ endif()
endif()
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
LYX_OPTION(BUNDLE "Build bundle (experimental) " OFF ALL)
LYX_OPTION(ENABLE_URLTESTS "Enable for URL tests" OFF ALL)
LYX_OPTION(ENABLE_EXPORT_TESTS "Enable for export tests" OFF ALL)
+LYX_OPTION(ASAN "Use address sanitizer" OFF ALL)
# GCC specific
LYX_OPTION(PROFILE "Build profile version" OFF GCC)
endif()
set(LYX_GCC11_MODE "${CXX11_FLAG}")
endif()
+ set(STD_STRING_USES_COW 1)
else()
if(MSVC10)
set(LYX_USE_TR1 1)
#set(LYX_USE_TR1_REGEX 1) #TODO should we use it in ECMAScript mode?
+ else()
+ set(STD_STRING_USES_COW 1)
endif()
endif()
endif()
endforeach(_c_l)
-if (LYX_LOCALVERSIONING)
- # Find the revision number and for later use
- FIND_PROGRAM(LYX_GITVERSION git)
- #message(STATUS "gitversion = ${LYX_GITVERSION}")
- if(LYX_GITVERSION)
- EXECUTE_PROCESS(COMMAND ${LYX_GITVERSION} describe --match 2.0.0 HEAD
- WORKING_DIRECTORY "${TOP_SRC_DIR}" OUTPUT_VARIABLE LYX_PACKAGE_RELEASE OUTPUT_STRIP_TRAILING_WHITESPACE)
- if (LYX_PACKAGE_RELEASE MATCHES "^2\\.0\\.0\\-\([0-9]+\)\\-.*$")
- # We will add offset of 40000 to get appropriate value to
- # previous svn.
- # We use this value than also to set the package-patch-value
- MATH(EXPR tmp_REVISION_VERSION "(${CMAKE_MATCH_1}+40000)")
- set(LYX_REVISION_VERSION "${LYX_PATCH_VERSION}-${tmp_REVISION_VERSION}git")
- set(ENABLE_DIST ON)
- endif()
- else()
- set(LYX_REVISION_VERSION git) #TODO use date
- endif()
-else()
- set(LYX_REVISION_VERSION ${LYX_PATCH_VERSION})
+FIND_PROGRAM(LYX_GITVERSION git)
+#message(STATUS "gitversion = ${LYX_GITVERSION}")
+set(LYX_REVISION_VERSION ${LYX_PATCH_VERSION})
+if(LYX_GITVERSION)
+ if (LYX_LOCALVERSIONING)
+ # Find the revision number and for later use
+ EXECUTE_PROCESS(COMMAND ${LYX_GITVERSION} describe --match 2.0.0 HEAD
+ WORKING_DIRECTORY "${TOP_SRC_DIR}" OUTPUT_VARIABLE LYX_PACKAGE_RELEASE OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if (LYX_PACKAGE_RELEASE MATCHES "^2\\.0\\.0\\-\([0-9]+\)\\-.*$")
+ # We will add offset of 40000 to get appropriate value to
+ # previous svn.
+ # We use this value than also to set the package-patch-value
+ MATH(EXPR tmp_REVISION_VERSION "(${CMAKE_MATCH_1}+40000)")
+ set(LYX_REVISION_VERSION "${LYX_PATCH_VERSION}-${tmp_REVISION_VERSION}git")
+ set(ENABLE_DIST ON)
+ endif()
+ endif()
endif()
-# Set the programs (lyx, tex2lyx, etc.) suffix
+# Set the programs (lyx, tex2lyx, etc.) suffix
# When building an OS X bundle, we will append
# the suffix only to the bundle, not to the programs
set(PROGRAM_SUFFIX "")
endif()
# lyx's source files
-set(LYX_CPP_FILES *.cpp)
-set(LYX_HPP_FILES *.h)
+set(LYX_CPP_FILES [a-zA-Z]*.cpp)
+set(LYX_HPP_FILES [a-zA-Z]*.h)
set(LYX_MOC_FILES moc_*.cpp)
include(ProjectSourceGroup)
if(NOT LYX_QUIET)
set(CMAKE_VERBOSE_MAKEFILE ON)
endif()
- set(LYX_CXX_FLAGS "-Wall -Wunused-parameter ${LYX_GCC11_MODE}")
+ set(LYX_CXX_FLAGS "-Wall -Wunused-parameter ${LYX_GCC11_MODE}")
if(LYX_STDLIB_DEBUG)
set(LYX_CXX_FLAGS "${LYX_CXX_FLAGS} -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC")
endif()
list(APPEND CMAKE_FIND_ROOT_PATH ${QT_MINGW_DIR} ${GNUWIN32_DIR})
endif()
if(LYX_USE_QT MATCHES "QT5")
- find_package(Qt5Core REQUIRED)
- if (Qt5Core_FOUND)
- find_package(Qt5Widgets REQUIRED)
- find_package(Qt5X11Extras)
- set(QTVERSION ${Qt5Core_VERSION})
- macro (qt_use_modules)
- qt5_use_modules(${ARGN})
- endmacro()
- macro (qt_add_resources)
- qt5_add_resources(${ARGN})
- endmacro()
- macro (qt_wrap_uifiles)
- qt5_wrap_ui(${ARGN})
- endmacro()
- endif()
+ find_package(Qt5Core REQUIRED)
+ if (Qt5Core_FOUND)
+ find_package(Qt5Widgets REQUIRED)
+ if(APPLE)
+ find_package(Qt5MacExtras REQUIRED)
+ endif()
+ find_package(Qt5X11Extras QUIET)
+ set(QTVERSION ${Qt5Core_VERSION})
+ macro (qt_use_modules)
+ qt5_use_modules(${ARGN})
+ endmacro()
+ macro (qt_add_resources)
+ qt5_add_resources(${ARGN})
+ endmacro()
+ macro (qt_wrap_uifiles)
+ qt5_wrap_ui(${ARGN})
+ endmacro()
+ message(STATUS "Found Qt-Version ${QTVERSION}")
+ endif()
elseif(LYX_USE_QT MATCHES "QT4")
find_package(Qt4 "4.5.0" REQUIRED)
macro (qt_use_modules)
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_BOOST /DLYX_PCH_QT4")
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /DLYX_PCH_STL /DLYX_PCH_BOOST /DLYX_PCH_QT4")
+ 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_)
macro(lyx_add_msvc_pch name_)
endmacro()
macro(lyx_add_gcc_pch name_)
- add_definitions(-DLYX_PCH_STL -DLYX_PCH_BOOST -DLYX_PCH_QT4)
+ 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()
add_custom_target (lyx_run_tests COMMAND ${cmd})
set_target_properties(lyx_run_tests PROPERTIES FOLDER "tests")
+if(LYX_ASAN)
+ set(LYX_CXX_FLAGS "-fsanitize=address -fno-omit-frame-pointer -g")
+ message(STATUS)
+ message(STATUS "Address sanitizer enabled. Usage:")
+ message(STATUS " wget https://llvm.org/svn/llvm-project/compiler-rt/trunk/lib/asan/scripts/asan_symbolize.py")
+ message(STATUS " chmod +x ./asan_symbolize.py")
+ message(STATUS " ./bin/lyx2.2 2>&1 | ./asan_symbolize.py | c++filt ")
+ message(STATUS)
+endif()
if(LYX_INSTALL)
if(${LYX_PYTHON_EXECUTABLE} MATCHES "-NOTFOUND")