1
PROJECT(bibletime CXX C)
2
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.9)
4
IF("${CMAKE_CURRENT_BINARY_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
5
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!")
8
SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
11
################################################################################
13
################################################################################
14
# NOTICE! The version number must only be changed during the release procedures
15
# A N D N O T during development or bug-fixing. This guarantees that all
16
# versions of BibleTime between OLDVERSION and NEXTVERSION have version strings
17
# in the form of OLDVERSION+githash where githash is the git commit hash ID.
19
# Note: for pre-#.#.0 versions, use the following suffixes:
21
# _beta1 if post-beta1
22
# _beta2 if post-beta2
25
# For post-full-release versions, no suffix is used.
27
SET(BT_VERSION_MAJOR "2")
28
SET(BT_VERSION_MINOR "10")
29
SET(BT_VERSION_PATCH "1")
30
SET(BT_VERSION_BUILD "") # Temporarily uncomment this line for release procedures
33
# Determine build, if needed:
34
IF(NOT (DEFINED BT_VERSION_BUILD))
37
FIND_PROGRAM(GIT_EXECUTABLE NAMES git)
43
FUNCTION(BtGitRevision out)
44
EXECUTE_PROCESS(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
45
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
47
RESULT_VARIABLE resVar
48
OUTPUT_VARIABLE outVar
49
OUTPUT_STRIP_TRAILING_WHITESPACE)
51
STRING(TOLOWER "${outVar}" hashCandidate)
52
STRING(REGEX MATCH "^[0123456789abcdef]+$" hasHash "${hashCandidate}")
54
STRING(LENGTH "${hashCandidate}" hashLength)
55
IF(hashLength EQUAL 40)
56
SET(${out} "${hashCandidate}" PARENT_SCOPE)
61
BtGitRevision(BibleTimeGitRevision)
62
IF(DEFINED BibleTimeGitRevision)
63
SET(BT_VERSION_BUILD "+${BibleTimeGitRevision}")
68
SET(BT_VERSION_FULL "${BT_VERSION_MAJOR}.${BT_VERSION_MINOR}.${BT_VERSION_PATCH}${BT_VERSION_BUILD}")
69
MESSAGE(STATUS "Setting up build environment for BibleTime version ${BT_VERSION_FULL}")
71
ADD_DEFINITIONS(-DBT_VERSION="${BT_VERSION_FULL}")
74
IF(NOT (CMAKE_BUILD_TYPE STREQUAL "Release"))
75
SET(CMAKE_BUILD_TYPE "Debug")
76
ADD_DEFINITIONS("-DBT_DEBUG")
78
ADD_DEFINITIONS("-DBT_NO_DEBUG" "-DNDEBUG" "-DQT_NO_DEBUG")
81
#Non-English locales to be processed and installed for handbook and howto
82
#WARNING: If you modify HANDBOOK_LOCALE_LANGS or HOWTO_LOCALE_LANGS,
83
#also modify the po4a conf files in cmake/docs/ to make sure all languages are processed.
84
LIST(APPEND HANDBOOK_LOCALE_LANGS ar cs de es fi fr hu it nl pt_BR)
85
LIST(APPEND HOWTO_LOCALE_LANGS ar bg cs da de es fi fr it hu ko nl pt_BR ru)
87
# Automatically link Qt executables to qtmain target on Windows
89
cmake_policy(SET CMP0020 NEW)
92
# SET INSTALLATION PATHS
94
SET(BT_DESTINATION "../MacOS")
95
SET(BT_SHARE_PATH "../share")
97
SET(BT_DESTINATION "bin")
98
SET(BT_SHARE_PATH "share")
101
IF(NOT BT_FORCE_USE_QT4)
102
# Automatically use Qt5 if available
103
FIND_PACKAGE(Qt5Core QUIET)
106
# Find required packages
108
FIND_PACKAGE(Qt5LinguistTools REQUIRED)
109
FIND_PACKAGE(Qt5Widgets REQUIRED)
110
FIND_PACKAGE(Qt5DBus QUIET)
111
IF(Qt5DBus_FOUND AND NOT APPLE)
112
set(BT_Use_DBus TRUE)
114
set(BT_Use_DBus FALSE)
116
MESSAGE( "-- Found Qt " ${Qt5Core_VERSION})
118
SET(QT_MIN_VERSION 4.5.0)
120
SET(QT_USE_QTWEBKIT 1)
122
FIND_PACKAGE(Qt4 REQUIRED)
123
IF(QT_QTDBUS_FOUND AND NOT APPLE)
124
set(BT_Use_DBus TRUE)
126
set(BT_Use_DBus FALSE)
128
MESSAGE( "-- Found Qt " ${QTVERSION})
131
FIND_PACKAGE(CLucene REQUIRED)
132
FIND_PACKAGE(Sword 1.7.0 REQUIRED)
134
# Define $bibletime_SOURCES
135
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTSourceFileList.cmake")
138
# The actual build options
141
${CMAKE_CURRENT_BINARY_DIR} #for .h files generated from .ui
142
${CMAKE_CURRENT_SOURCE_DIR}/src # so that include paths like "frontend/..." work
143
${CLucene_INCLUDE_DIR} #CLucene headers
144
${CLucene_LIBRARY_DIR} #CLucene/clucene-config.h
145
${Sword_INCLUDE_DIRS}
148
#This must come before the target definition!
149
LINK_DIRECTORIES(${CLucene_LIBRARY_DIR})
152
ADD_EXECUTABLE("bibletime" WIN32 ${common_bibletime_SOURCES})
154
ADD_EXECUTABLE("bibletime" ${common_bibletime_SOURCES})
157
IF(${BIBLETIME_FRONTEND} STREQUAL "MOBILE")
158
SET_TARGET_PROPERTIES("bibletime" PROPERTIES OUTPUT_NAME "btm")
160
SET_TARGET_PROPERTIES("bibletime" PROPERTIES OUTPUT_NAME "BibleTime")
162
SET_TARGET_PROPERTIES("bibletime" PROPERTIES OUTPUT_NAME "bibletime")
165
# Define rules to generate ${bibletime_UI_translations} files
166
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTUITranslation.cmake")
169
TARGET_LINK_LIBRARIES("bibletime"
174
IF(${BIBLETIME_FRONTEND} STREQUAL "MOBILE")
175
qt5_use_modules("bibletime" Widgets Qml Quick Network)
178
qt5_use_modules("bibletime" DBus Widgets WebKit WebKitWidgets Xml Network)
180
qt5_use_modules("bibletime" Widgets WebKit WebKitWidgets Xml Network)
185
SET(QT_USE_QTDBUS 1) # Required by INCLUDE(${QT_USE_FILE}) below
186
MESSAGE(STATUS "Using DBUS")
188
ADD_DEFINITIONS("-DNO_DBUS")
189
MESSAGE(STATUS "No DBUS found")
191
# If cmake says that qdbusxml2cpp is missing, uncomment the following line
192
#SET(QT_DBUSXML2CPP_EXECUTABLE "/usr/bin/qdbusxml2cpp") #TEMP HACK?
193
INCLUDE(${QT_USE_FILE})
194
TARGET_LINK_LIBRARIES("bibletime"
201
SET(BibleTime_CFLAGS "-Wall")
202
SET(BibleTime_LDFLAGS "")
204
SET(CMAKE_CXX_FLAGS_RELEASE "-DNO_DBUS -DSWUSINGDLL /MD /Zc:wchar_t- /W1 /D_UNICODE /DUNICODE /Zc:wchar_t")
205
SET(CMAKE_CXX_FLAGS_DEBUG "-DNO_DBUS -DSWUSINGDLL /MDd /Zc:wchar_t- /W1 /D_UNICODE /DUNICODE /Zc:wchar_t /Od")
206
SET(BibleTime_LDFLAGS "${BibleTime_LDFLAGS} /SUBSYSTEM:WINDOWS")
208
SET(BibleTime_CFLAGS "${BibleTime_CFLAGS} -Wextra -fpie -fexceptions")
209
SET(CMAKE_CXX_FLAGS_RELEASE "-O2")
210
SET(CMAKE_CXX_FLAGS_DEBUG "-ggdb")
212
# enable support MacOS 10.5+
213
SET(T "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/")
214
SET(BibleTime_CFLAGS "${BibleTime_CFLAGS} -mmacosx-version-min=10.7 -stdlib=libc++ -isysroot ${T}")
215
SET(BibleTime_LDFLAGS "${BibleTime_LDFLAGS} -mmacosx-version-min=10.7 -stdlib=libc++ -isysroot ${T} -F /Library/Frameworks/")
220
SET_TARGET_PROPERTIES("bibletime" PROPERTIES
221
COMPILE_FLAGS "${Sword_CFLAGS_OTHER} ${BibleTime_CFLAGS}"
222
LINK_FLAGS "${BibleTime_LDFLAGS}")
226
INSTALL(TARGETS "bibletime" DESTINATION "${BT_DESTINATION}")
227
FILE(GLOB INSTALL_ICONS_LIST "${CMAKE_CURRENT_SOURCE_DIR}/pics/icons/*.svg")
228
INSTALL(FILES ${INSTALL_ICONS_LIST}
229
DESTINATION "${BT_SHARE_PATH}/bibletime/icons/")
230
FILE(GLOB INSTALL_ICONS_LIST_PNG "${CMAKE_CURRENT_SOURCE_DIR}/pics/icons/bibletime.png")
231
INSTALL(FILES ${INSTALL_ICONS_LIST_PNG}
232
DESTINATION "${BT_SHARE_PATH}/bibletime/icons/")
233
INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src/display-templates/"
234
DESTINATION "${BT_SHARE_PATH}/bibletime/display-templates/")
235
INSTALL(FILES "src/frontend/display/bthtml.js"
236
DESTINATION "${BT_SHARE_PATH}/bibletime/javascript/")
237
INSTALL(FILES "docs/license.html"
238
DESTINATION "${BT_SHARE_PATH}/bibletime/license/")
239
INSTALL(FILES ${bibletime_QML_FILES} DESTINATION "${BT_SHARE_PATH}/qml/")
240
INSTALL(FILES "pics/startuplogo.png" "pics/startuplogo_christmas.png"
241
"pics/startuplogo_easter.jpg"
242
DESTINATION "${BT_SHARE_PATH}/bibletime/pics/")
245
# Platform specific installation
248
# Linux: application icon and desktop file:
249
INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/pics/icons/bibletime.svg"
250
DESTINATION "${BT_SHARE_PATH}/icons/")
251
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/platforms/linux/bibletime.desktop.cmake"
252
"${CMAKE_CURRENT_BINARY_DIR}/bibletime.desktop" @ONLY)
253
INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/bibletime.desktop"
254
DESTINATION "${BT_SHARE_PATH}/applications/")
258
# sword locale information
259
FILE(GLOB INSTALL_SWORD_LOCALE_LIST "${Sword_INCLUDE_DIRS}/../locales.d/*")
260
INSTALL(FILES ${INSTALL_SWORD_LOCALE_LIST}
261
DESTINATION "${BT_SHARE_PATH}/sword/locales.d/")
263
# install pdb file for debugging purposes
264
IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
265
SET(bibletime_PDB "${bibletime_BINARY_DIR}/Debug/bibletime.pdb")
266
INSTALL(FILES "${bibletime_PDB}" DESTINATION "${BT_DESTINATION}")
271
# sword locale information, needed for DMG image
272
FILE(GLOB INSTALL_SWORD_LOCALE_LIST "${Sword_INCLUDE_DIRS}/../../share/sword/locales.d/*")
273
INSTALL(FILES ${INSTALL_SWORD_LOCALE_LIST}
274
DESTINATION "${BT_SHARE_PATH}/sword/locales.d/")
277
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTDocumentation.cmake")
279
IF(WIN32 AND NOT UNIX)
280
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTBinaryPackageWindows.cmake")
283
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTBinaryPackageMacOS.cmake")
286
######################################################
287
# "make uninstall" target; see http://www.cmake.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F
289
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
290
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
292
ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
293
######################################################