summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorTeus Benschop <teusjannette@gmail.com>2017-10-06 12:24:31 +0200
committerTeus Benschop <teusjannette@gmail.com>2017-10-06 12:24:31 +0200
commit90d2181239761f8950b95768d3b037843e9e8b50 (patch)
tree6cc667ab420cc04029de2de7e361d2305e214595 /CMakeLists.txt
parent1ea03c0fce8066c1e22188447b4a6ca4dcef1201 (diff)
New upstream version 2.11.0
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt229
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")
######################################################
-