You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
264 lines
8.2 KiB
264 lines
8.2 KiB
cmake_minimum_required (VERSION 2.8.8) |
|
|
|
project ("Xournal++" CXX C) |
|
|
|
## Also update changelog in debian folder! |
|
set (PROJECT_VERSION "1.0.4") |
|
set (PROJECT_PACKAGE "xournalpp") |
|
set (PROJECT_STRING "${PROJECT_NAME} ${PROJECT_VERSION}") |
|
set (PROJECT_URL "https://github.com/xournalpp/xournalpp") |
|
|
|
set (CMAKE_MODULE_PATH |
|
"${PROJECT_SOURCE_DIR}/cmake/find" |
|
"${PROJECT_SOURCE_DIR}/cmake/include" |
|
) |
|
|
|
# package version |
|
include (Version) |
|
core_find_git_rev(RELEASE_IDENTIFIER) |
|
string(TIMESTAMP PACKAGE_TIMESTAMP "%Y%m%d.%H%M" UTC) |
|
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}~git${PACKAGE_TIMESTAMP}-${RELEASE_IDENTIFIER}-${DISTRO_CODENAME}) |
|
|
|
configure_file ( |
|
cmake/postinst.in |
|
cmake/postinst |
|
@ONLY |
|
) |
|
|
|
include (FindPkgConfig) |
|
|
|
set (PACKAGE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/share") |
|
|
|
# Git repo info |
|
include (GitRepo) |
|
|
|
## C++11 ## |
|
include (C++11) |
|
CheckCXX11 (FATAL_ERROR) |
|
|
|
## os specific library ending ## |
|
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") |
|
set(LIB_ENDING "dylib") |
|
else () |
|
set(LIB_ENDING "so") |
|
endif () |
|
|
|
if (WIN32) |
|
set (xournalpp_LDFLAGS ${xournalpp_LDFLAGS} "-mwindows") |
|
endif () |
|
|
|
## For touch workaround, may need to be disabled for a Wayland Build |
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") |
|
set (xournalpp_LDFLAGS ${xournalpp_LDFLAGS} "-lX11 -lXi") |
|
endif () |
|
|
|
## Libraries ## |
|
|
|
macro (add_includes_ldflags LDFLAGS INCLUDES) |
|
set (xournalpp_LDFLAGS ${xournalpp_LDFLAGS} ${LDFLAGS}) |
|
set (xournalpp_INCLUDE_DIRS ${xournalpp_INCLUDE_DIRS} ${INCLUDES}) |
|
endmacro (add_includes_ldflags LDFLAGS INCLUDES) |
|
|
|
# GTK+ |
|
pkg_check_modules (GTK REQUIRED "gtk+-3.0 >= 3.18.9") |
|
add_includes_ldflags ("${GTK_LDFLAGS}" "${GTK_INCLUDE_DIRS}") |
|
|
|
# GLIB |
|
pkg_check_modules (Glib REQUIRED "glib-2.0 >= 2.32.0") |
|
add_includes_ldflags ("${Glib_LDFLAGS}" "${Glib_INCLUDE_DIRS}") |
|
|
|
# GThread |
|
pkg_check_modules (GThread REQUIRED "gthread-2.0 >= 2.4.0") |
|
add_includes_ldflags ("${GThread_LDFLAGS}" "${GThread_INCLUDE_DIRS}") |
|
|
|
# LibXML |
|
pkg_check_modules (Libxml REQUIRED "libxml-2.0 >= 2.0.0") |
|
add_includes_ldflags ("${Libxml_LDFLAGS}" "${Libxml_INCLUDE_DIRS}") |
|
|
|
# Poppler |
|
pkg_check_modules (PopplerGlib REQUIRED "poppler-glib >= 0.41.0") |
|
add_includes_ldflags ("${PopplerGlib_LDFLAGS}" "${PopplerGlib_INCLUDE_DIRS}") |
|
set(POPPLER_INCLUDE_DIR, "${PopplerGlib_INCLUDE_DIRS}") |
|
|
|
# zlib |
|
find_package (ZLIB REQUIRED) |
|
add_includes_ldflags ("${ZLIB_LIBRARIES}" "${ZLIB_INCLUDE_DIRS}") |
|
|
|
# pthreads |
|
find_package (Threads REQUIRED) |
|
set (xournalpp_LDFLAGS ${xournalpp_LDFLAGS} ${CMAKE_THREAD_LIBS_INIT}) |
|
|
|
## Additional features ## |
|
|
|
# CppUnit |
|
option (ENABLE_CPPUNIT "Build CppUnit test instead of xournalpp application" OFF) |
|
if (ENABLE_CPPUNIT) |
|
pkg_check_modules (CppUnit REQUIRED "cppunit >= 1.12-0") |
|
enable_testing () |
|
endif (ENABLE_CPPUNIT) |
|
|
|
# Mathtex |
|
option (ENABLE_MATHTEX "Mathtex support" ON) |
|
if (WIN32) |
|
set(ENABLE_MATHTEX OFF) |
|
message ("Automatically set ENABLE_MATHTEX OFF on Windows") |
|
endif () |
|
|
|
# Unstable features |
|
|
|
option (UNSTABLE_HIGHDPI_FIXES "HighDPI Fixes (unstable)" OFF) |
|
|
|
configure_file ( |
|
src/config-features.h.in |
|
src/config-features.h |
|
ESCAPE_QUOTES @ONLY |
|
) |
|
|
|
## I18n ## |
|
add_subdirectory (po) |
|
|
|
## Configuration headers and developement options ## |
|
|
|
# Development options |
|
option (DEV_MEMORY_CHECKING "Memory checking" ON) |
|
option (DEV_MEMORY_LEAK_CHECKING "Memory leak checking" ON) |
|
option (DEV_CALL_LOG "Call log" OFF) |
|
|
|
# Debug options |
|
option (DEBUG_INPUT "Input debugging, e.g. eraser events etc" OFF) |
|
option (DEBUG_RECOGNIZER "Shape recognizer debug: output score etc" OFF) |
|
option (DEBUG_SHEDULER "Scheduler debug: show jobs etc" OFF) |
|
option (DEBUG_SHOW_ELEMENT_BOUNDS "Draw a surrounding border to all elements" OFF) |
|
option (DEBUG_SHOW_REPAINT_BOUNDS "Draw a border around all repaint rects" OFF) |
|
option (DEBUG_SHOW_PAINT_BOUNDS "Draw a border around all painted rects" OFF) |
|
mark_as_advanced (FORCE |
|
DEBUG_INPUT DEBUG_RECOGNIZER DEBUG_SHEDULER DEBUG_SHOW_ELEMENT_BOUNDS DEBUG_SHOW_REPAINT_BOUNDS DEBUG_SHOW_PAINT_BOUNDS |
|
) |
|
|
|
# Advanced development config |
|
set (DEV_CONFIG_DIR ".xournalpp" CACHE STRING "Xournal++ config dir, relative to user's home dir") |
|
set (DEV_TOOLBAR_CONFIG "toolbar.ini" CACHE STRING "Toolbar config file name") |
|
set (DEV_SETTINGS_XML_FILE "settings.xml" CACHE STRING "Settings file name") |
|
set (DEV_PRINT_CONFIG_FILE "print-config.ini" CACHE STRING "Print config file name") |
|
set (DEV_METADATA_FILE "metadata.ini" CACHE STRING "Metadata file name") |
|
set (DEV_METADATA_MAX_ITEMS 50 CACHE STRING "Maximal amount of metadata elements") |
|
set (DEV_ERRORLOG_DIR "errorlogs" CACHE STRING "Directory where errorlogfiles will be placed") |
|
|
|
option (DEV_ENABLE_GCOV "Build with gcov support" OFF) # Enabel gcov support – expanded in src/ |
|
option (DEV_CHECK_GTK3_COMPAT "Adds a few compiler flags to check basic GTK3 upgradeability support (still compiles for GTK2!)") |
|
if (DEV_CHECK_GTK3_COMPAT) |
|
add_definitions (-DGTK_DISABLE_SINGLE_INCLUDES -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED -DGSEAL_ENABLE) |
|
endif () |
|
|
|
mark_as_advanced (FORCE |
|
DEV_CONFIG_DIR DEV_TOOLBAR_CONFIG DEV_SETTINGS_XML_FILE DEV_PRINT_CONFIG_FILE DEV_METADATA_FILE DEV_METADATA_MAX_ITEMS |
|
DEV_ENABLE_GCOV DEV_CHECK_GTK3_COMPAT |
|
) |
|
|
|
configure_file ( |
|
src/config.h.in |
|
src/config.h |
|
ESCAPE_QUOTES @ONLY |
|
) |
|
|
|
configure_file ( |
|
src/config-debug.h.in |
|
src/config-debug.h |
|
ESCAPE_QUOTES @ONLY |
|
) |
|
|
|
configure_file ( |
|
src/config-dev.h.in |
|
src/config-dev.h |
|
ESCAPE_QUOTES @ONLY |
|
) |
|
|
|
configure_file ( |
|
src/config-paths.h.in |
|
src/config-paths.h |
|
ESCAPE_QUOTES @ONLY |
|
) |
|
|
|
## Source building ## |
|
add_subdirectory (src) |
|
|
|
## Final targets and installing ## |
|
|
|
# Install resources |
|
install (DIRECTORY ui |
|
DESTINATION "share/xournalpp" |
|
COMPONENT xournalpp |
|
) |
|
|
|
# Install desktop shortcuts for Linux |
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") |
|
message ("Installing desktop files") |
|
# Install desktop entry |
|
#install(FILES data/albert.desktop DESTINATION /share/applications ) |
|
|
|
# Install icons |
|
install(FILES ui/pixmaps/xournalpp.svg |
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/apps) |
|
|
|
# Symlink are not easy to use with CMake, therefor simple install a copy... |
|
install(FILES ui/pixmaps/application-x-xopp.svg |
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/mimetypes/) |
|
install(FILES ui/pixmaps/application-x-xopt.svg |
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/mimetypes/) |
|
install(FILES ui/pixmaps/application-x-xojpp.svg |
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/mimetypes/) |
|
|
|
install(FILES ui/pixmaps/gnome-mime-application-x-xopp.svg |
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/mimetypes/) |
|
install(FILES ui/pixmaps/gnome-mime-application-x-xopt.svg |
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/mimetypes/) |
|
|
|
install(FILES desktop/xournalpp.xml |
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/mime/packages) |
|
install(FILES desktop/xournalpp.desktop |
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications) |
|
install(FILES desktop/x-xojpp.desktop |
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/mimelnk/application) |
|
install(FILES desktop/x-xopp.desktop |
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/mimelnk/application) |
|
install(FILES desktop/x-xopt.desktop |
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/mimelnk/application) |
|
|
|
install(FILES desktop/xournalpp.thumbnailer |
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/thumbnailers) |
|
install(PROGRAMS utility/usr/local/bin/xopp-recording.sh |
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/) |
|
|
|
install(CODE "execute_process(COMMAND ${CMAKE_CURRENT_BINARY_DIR}/cmake/postinst configure)") |
|
|
|
endif () |
|
|
|
# Uninstall target |
|
configure_file ( |
|
cmake/cmake_uninstall.cmake.in |
|
cmake/cmake_uninstall.cmake |
|
@ONLY |
|
) |
|
|
|
add_custom_target (uninstall |
|
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake |
|
|
|
COMMENT "Uninstall entire Xournal++" |
|
) |
|
|
|
message (" |
|
Configuration: |
|
Compiler: ${CMAKE_CXX_COMPILER} |
|
Mathtex enabled: ${ENABLE_MATHTEX} |
|
CppUnit enabled: ${ENABLE_CPPUNIT} |
|
|
|
Unstable features: |
|
HighDPI Fixes: ${UNSTABLE_HIGHDPI_FIXES} |
|
") |
|
|
|
option (CMAKE_DEBUG_INCLUDES_LDFLAGS "List include dirs and ldflags for xournalpp target" OFF) |
|
mark_as_advanced (FORCE CMAKE_DEBUG_INCLUDES_LDFLAGS) |
|
if (CMAKE_DEBUG_INCLUDES_LDFLAGS) |
|
message ("Include directories: ${xournalpp_INCLUDE_DIRS}") |
|
message ("LDFLAGS/LIBRARIES: ${xournalpp_LDFLAGS}") |
|
endif (CMAKE_DEBUG_INCLUDES_LDFLAGS)
|
|
|