diff options
author | Teus Benschop <teusjannette@gmail.com> | 2017-10-06 12:24:31 +0200 |
---|---|---|
committer | Teus Benschop <teusjannette@gmail.com> | 2017-10-06 12:24:31 +0200 |
commit | 90d2181239761f8950b95768d3b037843e9e8b50 (patch) | |
tree | 6cc667ab420cc04029de2de7e361d2305e214595 /CMakeLists.txt | |
parent | 1ea03c0fce8066c1e22188447b4a6ca4dcef1201 (diff) |
New upstream version 2.11.0
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 229 |
1 files changed, 139 insertions, 90 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 50e7db0..50c7391 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,41 @@ PROJECT(bibletime CXX C) -CMAKE_MINIMUM_REQUIRED(VERSION 2.8.9) +CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12) IF("${CMAKE_CURRENT_BINARY_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}") MESSAGE(FATAL_ERROR "You probably didn't mean to run CMake from this directory. Now you have all messed up! You'd better delete CMakeFiles/ and CMakeCache.txt or things will break!") ENDIF() -SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +# If BIBLETIME_BUILDCONFIG set, load the file and fail on error. Otherwise, try +# to include either "config.cmake" under either the build directory or the +# source directory, whichever file first exists, if at all. +IF(DEFINED BIBLETIME_BUILDCONFIG) + IF(BIBLETIME_BUILDCONFIG_IS_RELATIVE) + SET(BIBLETIME_BUILDCONFIG + "${CMAKE_CURRENT_BINARY_DIR}/${BIBLETIME_BUILDCONFIG}") + ENDIF() + INCLUDE("${BIBLETIME_BUILDCONFIG}" OPTIONAL RESULT_VARIABLE r) + IF(r) + MESSAGE(STATUS "Included \"${BIBLETIME_BUILDCONFIG}\"") + UNSET(r) + ELSE() + MESSAGE(FATAL_ERROR + "Failed to include build configuration from \"${BIBLETIME_BUILDCONFIG}\"!") + ENDIF() +ELSE() + INCLUDE("${CMAKE_CURRENT_BINARY_DIR}/config.cmake" OPTIONAL RESULT_VARIABLE r) + IF(r) + MESSAGE(STATUS "Included \"${r}\"") + ELSE() + INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/config.cmake" + OPTIONAL RESULT_VARIABLE r) + IF(r) + MESSAGE(STATUS "Included \"${r}\"") + ENDIF() + ENDIF() + UNSET(r) +ENDIF() + +LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") ################################################################################ @@ -25,10 +55,9 @@ SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") # For post-full-release versions, no suffix is used. SET(BT_VERSION_MAJOR "2") -SET(BT_VERSION_MINOR "10") -SET(BT_VERSION_PATCH "1") -SET(BT_VERSION_BUILD "") # Temporarily uncomment this line for release procedures - +SET(BT_VERSION_MINOR "11") +SET(BT_VERSION_PATCH "0") +#SET(BT_VERSION_BUILD "") # Temporarily uncomment this line for release procedures # Determine build, if needed: IF(NOT (DEFINED BT_VERSION_BUILD)) @@ -68,21 +97,11 @@ ENDIF() SET(BT_VERSION_FULL "${BT_VERSION_MAJOR}.${BT_VERSION_MINOR}.${BT_VERSION_PATCH}${BT_VERSION_BUILD}") MESSAGE(STATUS "Setting up build environment for BibleTime version ${BT_VERSION_FULL}") -ADD_DEFINITIONS(-DBT_VERSION="${BT_VERSION_FULL}") - -# Define debug flags -IF(NOT (CMAKE_BUILD_TYPE STREQUAL "Release")) - SET(CMAKE_BUILD_TYPE "Debug") - ADD_DEFINITIONS("-DBT_DEBUG") -ELSE() - ADD_DEFINITIONS("-DBT_NO_DEBUG" "-DNDEBUG" "-DQT_NO_DEBUG") -ENDIF() - #Non-English locales to be processed and installed for handbook and howto #WARNING: If you modify HANDBOOK_LOCALE_LANGS or HOWTO_LOCALE_LANGS, #also modify the po4a conf files in cmake/docs/ to make sure all languages are processed. -LIST(APPEND HANDBOOK_LOCALE_LANGS ar cs de es fi fr hu it nl pt_BR) -LIST(APPEND HOWTO_LOCALE_LANGS ar bg cs da de es fi fr it hu ko nl pt_BR ru) +LIST(APPEND HANDBOOK_LOCALE_LANGS ar cs de es fi fr hu it lt nl pt_BR) +LIST(APPEND HOWTO_LOCALE_LANGS ar bg cs da de es fi fr it hu ko lt nl pt_BR ru) # Automatically link Qt executables to qtmain target on Windows IF(MSVC) @@ -98,38 +117,48 @@ ELSE() SET(BT_SHARE_PATH "share") ENDIF() -IF(NOT BT_FORCE_USE_QT4) - # Automatically use Qt5 if available - FIND_PACKAGE(Qt5Core QUIET) +FIND_PACKAGE(Qt5Core REQUIRED) +FIND_PACKAGE(Qt5LinguistTools REQUIRED) +FIND_PACKAGE(Qt5Gui REQUIRED) +FIND_PACKAGE(Qt5Widgets REQUIRED) + +FIND_PACKAGE(CLucene REQUIRED) +FIND_PACKAGE(Sword 1.7.0 REQUIRED) + +ADD_COMPILE_OPTIONS( + "-O2" + "-DBT_VERSION=\"${BT_VERSION_FULL}\"" + "$<$<STREQUAL:$<CONFIGURATION>,Release>:-DNDEBUG>" + "$<$<STREQUAL:$<CONFIGURATION>,Release>:-DQT_NO_DEBUG>" + ${Sword_CFLAGS_OTHER} +) +IF("${CMAKE_BUILD_TYPE}" STREQUAL "Release") + SET(BIBLETIME_MOC_OPTIONS "-DNDEBUG") +ENDIF() +IF(WIN32) + ADD_COMPILE_OPTIONS( + "/Zi" + ) +ELSE() + ADD_COMPILE_OPTIONS( + "-std=c++11" "-ggdb" "-Wall" "-Wextra" + "$<$<NOT:$<STREQUAL:$<CONFIGURATION>,Release>>:-fno-omit-frame-pointer>" + ) ENDIF() -# Find required packages -IF(Qt5Core_FOUND) - FIND_PACKAGE(Qt5LinguistTools REQUIRED) - FIND_PACKAGE(Qt5Widgets REQUIRED) - FIND_PACKAGE(Qt5DBus QUIET) - IF(Qt5DBus_FOUND AND NOT APPLE) - set(BT_Use_DBus TRUE) - ELSE() - set(BT_Use_DBus FALSE) - ENDIF() - MESSAGE( "-- Found Qt " ${Qt5Core_VERSION}) +IF("${BIBLETIME_FRONTEND}" STREQUAL "MOBILE") + ADD_DEFINITIONS("-DBT_MOBILE") +ENDIF() + +IF(Qt5Core_VERSION VERSION_LESS 5.6.0) + SET(USEWEBENGINE OFF) ELSE() - SET(QT_MIN_VERSION 4.5.0) - SET(QT_USE_QTXML 1) - SET(QT_USE_QTWEBKIT 1) - SET(QT_USE_QTMAIN 1) - FIND_PACKAGE(Qt4 REQUIRED) - IF(QT_QTDBUS_FOUND AND NOT APPLE) - set(BT_Use_DBus TRUE) - ELSE() - set(BT_Use_DBus FALSE) - ENDIF() - MESSAGE( "-- Found Qt " ${QTVERSION}) + SET(USEWEBENGINE ON) ENDIF() -FIND_PACKAGE(CLucene REQUIRED) -FIND_PACKAGE(Sword 1.7.0 REQUIRED) +IF(USEWEBENGINE) + ADD_DEFINITIONS("-DUSEWEBENGINE") +ENDIF() # Define $bibletime_SOURCES INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTSourceFileList.cmake") @@ -144,10 +173,26 @@ INCLUDE_DIRECTORIES( ${CLucene_LIBRARY_DIR} #CLucene/clucene-config.h ${Sword_INCLUDE_DIRS} ) +# Macros used by BTUITranslationLink.cmake amd BTUITranslation.cmake +include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTTranslationMacros.cmake") + +# Define rules to generate translation files and link them to +# the executable using a qrc file. +IF (${bibletime_LINK_TRANSLATION_FILES}) + INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTUITranslationLink.cmake") +ENDIF() #This must come before the target definition! LINK_DIRECTORIES(${CLucene_LIBRARY_DIR}) +ADD_LIBRARY( + bibletime_common + STATIC + ${bibletime_COMMON_SOURCES} + ${bibletime_COMMON_MOCABLE_SOURCES} +) +QT5_USE_MODULES(bibletime_common Widgets Xml) + IF(MSVC) ADD_EXECUTABLE("bibletime" WIN32 ${common_bibletime_SOURCES}) ELSE() @@ -162,65 +207,57 @@ ELSE() SET_TARGET_PROPERTIES("bibletime" PROPERTIES OUTPUT_NAME "bibletime") ENDIF() -# Define rules to generate ${bibletime_UI_translations} files -INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTUITranslation.cmake") +# Define rules to generate and install translation files +IF (NOT ${bibletime_LINK_TRANSLATION_FILES}) + INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTUITranslation.cmake") +ENDIF() -IF(Qt5Core_FOUND) - TARGET_LINK_LIBRARIES("bibletime" - ${CLucene_LIBRARY} - ${Sword_LDFLAGS} - ) +TARGET_LINK_LIBRARIES("bibletime" + bibletime_common + ${CLucene_LIBRARY} + ${Sword_LDFLAGS} +) - IF(${BIBLETIME_FRONTEND} STREQUAL "MOBILE") - qt5_use_modules("bibletime" Widgets Qml Quick Network) - ELSE() - IF(BT_Use_DBus) - qt5_use_modules("bibletime" DBus Widgets WebKit WebKitWidgets Xml Network) - ELSE() - qt5_use_modules("bibletime" Widgets WebKit WebKitWidgets Xml Network) - ENDIF() - ENDIF() +IF(${BIBLETIME_FRONTEND} STREQUAL "MOBILE") + qt5_use_modules("bibletime" Widgets WebKitWidgets Qml Quick Xml Network PrintSupport Svg) +ELSEIF(USEWEBENGINE) + qt5_use_modules("bibletime" Widgets WebEngine WebEngineWidgets WebChannel Xml Network PrintSupport Svg) ELSE() - IF(BT_Use_DBus) - SET(QT_USE_QTDBUS 1) # Required by INCLUDE(${QT_USE_FILE}) below - MESSAGE(STATUS "Using DBUS") - ELSE() - ADD_DEFINITIONS("-DNO_DBUS") - MESSAGE(STATUS "No DBUS found") - ENDIF() - # If cmake says that qdbusxml2cpp is missing, uncomment the following line - #SET(QT_DBUSXML2CPP_EXECUTABLE "/usr/bin/qdbusxml2cpp") #TEMP HACK? - INCLUDE(${QT_USE_FILE}) - TARGET_LINK_LIBRARIES("bibletime" - ${QT_LIBRARIES} - ${CLucene_LIBRARY} - ${Sword_LDFLAGS} - ) + qt5_use_modules("bibletime" Widgets WebKit WebKitWidgets Xml Network PrintSupport Svg) ENDIF() -SET(BibleTime_CFLAGS "-Wall") SET(BibleTime_LDFLAGS "") IF(MSVC) - SET(CMAKE_CXX_FLAGS_RELEASE "-DNO_DBUS -DSWUSINGDLL /MD /Zc:wchar_t- /W1 /D_UNICODE /DUNICODE /Zc:wchar_t") - SET(CMAKE_CXX_FLAGS_DEBUG "-DNO_DBUS -DSWUSINGDLL /MDd /Zc:wchar_t- /W1 /D_UNICODE /DUNICODE /Zc:wchar_t /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "-DSWUSINGDLL /MD /Zc:wchar_t- /W1 /D_UNICODE /DUNICODE /Zc:wchar_t") + SET(CMAKE_CXX_FLAGS_DEBUG "-DSWUSINGDLL /MDd /Zc:wchar_t- /W1 /D_UNICODE /DUNICODE /Zc:wchar_t /Od") SET(BibleTime_LDFLAGS "${BibleTime_LDFLAGS} /SUBSYSTEM:WINDOWS") ELSE() - SET(BibleTime_CFLAGS "${BibleTime_CFLAGS} -Wextra -fpie -fexceptions") - SET(CMAKE_CXX_FLAGS_RELEASE "-O2") - SET(CMAKE_CXX_FLAGS_DEBUG "-ggdb") + ADD_COMPILE_OPTIONS("-fPIE" "-fexceptions") + SET(CMAKE_CXX_FLAGS_RELEASE "") + SET(CMAKE_CXX_FLAGS_DEBUG "") IF(APPLE) # enable support MacOS 10.5+ - SET(T "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/") - SET(BibleTime_CFLAGS "${BibleTime_CFLAGS} -mmacosx-version-min=10.7 -stdlib=libc++ -isysroot ${T}") + SET(T "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/") + SET(BibleTime_CXXFLAGS "${BibleTime_CXXFLAGS} -mmacosx-version-min=10.7 -stdlib=libc++ -isysroot ${T}") SET(BibleTime_LDFLAGS "${BibleTime_LDFLAGS} -mmacosx-version-min=10.7 -stdlib=libc++ -isysroot ${T} -F /Library/Frameworks/") UNSET(T) ENDIF() ENDIF() SET_TARGET_PROPERTIES("bibletime" PROPERTIES - COMPILE_FLAGS "${Sword_CFLAGS_OTHER} ${BibleTime_CFLAGS}" + COMPILE_FLAGS "${Sword_CFLAGS_OTHER} ${BibleTime_CXXFLAGS}" + LINK_FLAGS "${BibleTime_LDFLAGS}") + +SET_TARGET_PROPERTIES("bibletime_common" PROPERTIES + COMPILE_FLAGS "${Sword_CFLAGS_OTHER} ${BibleTime_CXXFLAGS}" LINK_FLAGS "${BibleTime_LDFLAGS}") +IF(Qt5Core_VERSION VERSION_LESS 5.3.0) + MESSAGE(WARNING "Qt tests not build because they require Qt 5.3 or greater.") +ELSE() + INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTTests.cmake") +ENDIF() + # Install files # INSTALL(TARGETS "bibletime" DESTINATION "${BT_DESTINATION}") @@ -230,10 +267,23 @@ INSTALL(FILES ${INSTALL_ICONS_LIST} FILE(GLOB INSTALL_ICONS_LIST_PNG "${CMAKE_CURRENT_SOURCE_DIR}/pics/icons/bibletime.png") INSTALL(FILES ${INSTALL_ICONS_LIST_PNG} DESTINATION "${BT_SHARE_PATH}/bibletime/icons/") -INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src/display-templates/" - DESTINATION "${BT_SHARE_PATH}/bibletime/display-templates/") -INSTALL(FILES "src/frontend/display/bthtml.js" + +FILE(GLOB INSTALL_TMPL_LIST + ${CMAKE_CURRENT_SOURCE_DIR}/src/display-templates/*.css + ${CMAKE_CURRENT_SOURCE_DIR}/src/display-templates/Basic.tmpl + ${CMAKE_CURRENT_SOURCE_DIR}/src/display-templates/basic_template.txt) +INSTALL(FILES ${INSTALL_TMPL_LIST} + DESTINATION "${BT_SHARE_PATH}/bibletime/display-templates/") + + +IF(USEWEBENGINE) + INSTALL(FILES "src/frontend/display/btwebengine.js" + DESTINATION "${BT_SHARE_PATH}/bibletime/javascript/") +ELSE() + INSTALL(FILES "src/frontend/display/bthtml.js" DESTINATION "${BT_SHARE_PATH}/bibletime/javascript/") +ENDIF() + INSTALL(FILES "docs/license.html" DESTINATION "${BT_SHARE_PATH}/bibletime/license/") INSTALL(FILES ${bibletime_QML_FILES} DESTINATION "${BT_SHARE_PATH}/qml/") @@ -256,7 +306,7 @@ INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/bibletime.desktop" IF(MSVC) # sword locale information - FILE(GLOB INSTALL_SWORD_LOCALE_LIST "${Sword_INCLUDE_DIRS}/../locales.d/*") + FILE(GLOB INSTALL_SWORD_LOCALE_LIST "${Sword_INCLUDE_DIRS}/../../locales.d/*") INSTALL(FILES ${INSTALL_SWORD_LOCALE_LIST} DESTINATION "${BT_SHARE_PATH}/sword/locales.d/") @@ -291,4 +341,3 @@ CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" IMMEDIATE @ONLY) ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") ###################################################### - |