1
PROJECT(bibletime CXX C)
2
CMAKE_MINIMUM_REQUIRED(VERSION 2.6.2)
3
SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
6
################################################################################
8
################################################################################
9
# NOTICE! The version number must only be changed during the release procedures
10
# A N D N O T during development or bug-fixing. This guarantees that all
11
# versions of BibleTime between OLDVERSION and NEXTVERSION have version strings
12
# in the form of OLDVERSION+githash where githash is the git commit hash ID.
14
# Note: for pre-#.#.0 versions, use the following suffixes:
16
# _beta1 if post-beta1
17
# _beta2 if post-beta2
20
# For post-full-release versions, no suffix is used.
22
SET(BT_VERSION_MAJOR "2")
23
SET(BT_VERSION_MINOR "9")
24
SET(BT_VERSION_PATCH "1")
25
#SET(BT_VERSION_BUILD "") # Temporarily uncomment this line for release procedures
28
# Determine build, if needed:
29
IF (NOT (DEFINED BT_VERSION_BUILD))
30
SET(Git_FIND_QUIETLY TRUE)
33
Git_WC_INFO(${PROJECT_SOURCE_DIR} BT)
34
IF (DEFINED BT_WC_REVISION_HASH_SHORT)
35
SET(BT_VERSION_BUILD "+${BT_WC_REVISION_HASH_SHORT}")
36
ENDIF (DEFINED BT_WC_REVISION_HASH_SHORT)
38
ENDIF (NOT (DEFINED BT_VERSION_BUILD))
40
SET(BT_VERSION_FULL "${BT_VERSION_MAJOR}.${BT_VERSION_MINOR}.${BT_VERSION_PATCH}${BT_VERSION_BUILD}")
41
MESSAGE(STATUS "Setting up build environment for BibleTime version ${BT_VERSION_FULL}")
43
ADD_DEFINITIONS(-DBT_VERSION="${BT_VERSION_FULL}")
46
IF (NOT CMAKE_BUILD_TYPE STREQUAL "Release")
47
SET(CMAKE_BUILD_TYPE "Debug")
48
ADD_DEFINITIONS(-DBT_DEBUG)
49
ELSE (NOT CMAKE_BUILD_TYPE STREQUAL "Release")
50
ADD_DEFINITIONS(-DBT_NO_DEBUG -DNDEBUG -DQT_NO_DEBUG)
51
ENDIF (NOT CMAKE_BUILD_TYPE STREQUAL "Release")
53
#Non-English locales to be processed and installed for UI, handbook and howto
54
LIST(APPEND MESSAGE_LOCALE_LANGS ar cs da de en_GB es et fi fr hu it nl nn_NO pl pt pt_BR ro ru sk zh_TW)
55
#WARNING: If you modify HANDBOOK_LOCALE_LANGS or HOWTO_LOCALE_LANGS,
56
#also modify the po4a conf files in cmake/docs/ to make sure all languages are processed.
57
LIST(APPEND HANDBOOK_LOCALE_LANGS ar cs de es fi fr hu it nl pt_BR)
58
LIST(APPEND HOWTO_LOCALE_LANGS ar bg cs da de es fi fr it hu ko nl pt_BR ru)
60
# Find required packages
61
SET(QT_MIN_VERSION 4.5.0)
63
SET(QT_USE_QTWEBKIT 1)
65
FIND_PACKAGE(Qt4 REQUIRED)
66
IF (QT_QTDBUS_FOUND AND NOT APPLE)
68
MESSAGE(STATUS "Using DBUS")
69
ELSE (QT_QTDBUS_FOUND AND NOT APPLE)
70
ADD_DEFINITIONS(-DNO_DBUS)
71
MESSAGE(STATUS "No DBUS found")
72
ENDIF (QT_QTDBUS_FOUND AND NOT APPLE)
73
# If cmake says that qdbusxml2cpp is missing, uncomment the following line
74
#SET(QT_DBUSXML2CPP_EXECUTABLE "/usr/bin/qdbusxml2cpp") #TEMP HACK?
79
FIND_PACKAGE(CLucene REQUIRED)
81
# optional: Try to detect CURL, ICU and ZLib and add it to the linker flags if found, maybe Sword needs it
86
FIND_PACKAGE(Sword REQUIRED)
88
# directory layout settings up front, needed in various places
89
SET(BT_DESTINATION "bin/")
90
SET(BT_SHARE_PATH "share/")
92
SET(BT_DESTINATION "../MacOS/")
93
SET(BT_SHARE_PATH "../share/")
96
# Define $bibletime_SOURCES
97
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTSourceFileList.cmake")
100
# The actual build options
103
${CMAKE_CURRENT_BINARY_DIR} #for .h files generated from .ui
104
${CMAKE_CURRENT_SOURCE_DIR}/src # so that include paths like "frontend/..." work
105
${CLUCENE_INCLUDE_DIR} #CLucene headers
106
${CLUCENE_LIBRARY_DIR} #CLucene/clucene-config.h
110
# this will run uic on .ui files:
111
QT4_WRAP_UI(bibletime_UIS_H ${bibletime_UIS})
113
# this will run moc on source files
114
QT4_WRAP_CPP(bibletime_MOC_SOURCES ${bibletime_MOCABLE_HEADERS})
116
SOURCE_GROUP("QM Files" REGULAR_EXPRESSION ".*\\.qm")
118
#This must come before the target definition!
120
${CLUCENE_LIBRARY_DIR}
124
SET(EXECUTABLE_NAME "bibletime")
126
SET(EXECUTABLE_NAME "BibleTime")
130
# Define rules to generate ${bibletime_UI_translations} files
131
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTUITranslation.cmake")
133
SET(common_bibletime_SOURCES
136
${bibletime_MOC_SOURCES}
138
${bibletime_UI_translations}
141
# For the Windows Application Icon
143
SET(common_bibletime_SOURCES
144
${common_bibletime_SOURCES}
148
SOURCE_GROUP( "Icon Files"
149
FILES "cmake/BTWinIcon.rc" }
151
ADD_EXECUTABLE(${EXECUTABLE_NAME} WIN32 ${common_bibletime_SOURCES})
153
ADD_EXECUTABLE(${EXECUTABLE_NAME} ${common_bibletime_SOURCES})
156
#IF (CMAKE_BUILD_TYPE STREQUAL "Release")
157
# SET_TARGET_PROPERTIES(${EXECUTABLE_NAME}
159
# COMPILE_FLAGS "${SWORD_CFLAGS}" #Enable exception handling
161
#ENDIF (CMAKE_BUILD_TYPE STREQUAL "Release")
163
INCLUDE(${QT_USE_FILE})
164
TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME}
167
${CURL_LIBRARIES} # optional, empty if not found
168
${ICU_LIBRARIES} # optional, empty if not found
169
${ICU_I18N_LIBRARIES} # optional, empty if not found
170
${ZLIB_LIBRARIES} # optional, empty if not found
175
# enable support MacOS 10.5+
176
SET_TARGET_PROPERTIES(${EXECUTABLE_NAME}
178
COMPILE_FLAGS "-mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk"
179
LINK_FLAGS "-mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk"
184
IF (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
185
SET(CMAKE_INSTALL_PREFIX "install/") #install to ./build/install, allow override
186
ENDIF (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
189
SET(CMAKE_INSTALL_PREFIX "install/BibleTime.app/Contents/Resources")
193
SET(CMAKE_CXX_FLAGS_RELEASE "-DNO_DBUS -DSWUSINGDLL /MD /Zc:wchar_t- /W1 /D_UNICODE /DUNICODE ")
194
SET(CMAKE_CXX_FLAGS_DEBUG "-DNO_DBUS -DSWUSINGDLL /MDd /Zc:wchar_t- /W1 /D_UNICODE /DUNICODE /ZI")
196
SET(CMAKE_CXX_FLAGS_RELEASE "-Wall -O2 -fexceptions")
197
SET(CMAKE_CXX_FLAGS_DEBUG "-Wall -Werror -O2 -ggdb -fexceptions")
204
INSTALL(TARGETS "${EXECUTABLE_NAME}"
205
DESTINATION "${BT_DESTINATION}"
209
FILE(GLOB INSTALL_ICONS_LIST "${CMAKE_CURRENT_SOURCE_DIR}/pics/icons/*.svg")
210
INSTALL(FILES ${INSTALL_ICONS_LIST}
211
DESTINATION "${BT_SHARE_PATH}bibletime/icons/"
213
# icons - png, needed for About Dialog
214
FILE(GLOB INSTALL_ICONS_LIST_PNG "${CMAKE_CURRENT_SOURCE_DIR}/pics/icons/bibletime.png")
215
INSTALL(FILES ${INSTALL_ICONS_LIST_PNG}
216
DESTINATION "${BT_SHARE_PATH}bibletime/icons/"
219
FILE(GLOB INSTALL_DISPLAY_TEMPLATES_LIST ${CMAKE_CURRENT_SOURCE_DIR}/src/display-templates/*.tmpl)
220
INSTALL(FILES ${INSTALL_DISPLAY_TEMPLATES_LIST}
221
DESTINATION "${BT_SHARE_PATH}bibletime/display-templates/"
223
FILE(GLOB INSTALL_DISPLAY_CSS_LIST ${CMAKE_CURRENT_SOURCE_DIR}/src/display-templates/*.css)
224
INSTALL(FILES ${INSTALL_DISPLAY_CSS_LIST}
225
DESTINATION "${BT_SHARE_PATH}bibletime/display-templates/"
228
INSTALL(FILES "src/frontend/display/bthtml.js"
229
DESTINATION "${BT_SHARE_PATH}bibletime/javascript/"
232
INSTALL(FILES "docs/license.html"
233
DESTINATION "${BT_SHARE_PATH}bibletime/license/"
236
INSTALL(FILES "pics/startuplogo.png" "pics/startuplogo_christmas.png" "pics/startuplogo_easter.jpg"
237
DESTINATION "${BT_SHARE_PATH}bibletime/pics/"
240
# Platform specific installation
242
# LINUX: application icon
243
INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/pics/icons/bibletime.svg"
244
DESTINATION "${BT_SHARE_PATH}icons/"
246
# LINUX: desktop file
247
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/platforms/linux/bibletime.desktop.cmake" "${CMAKE_CURRENT_BINARY_DIR}/bibletime.desktop")
248
INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/bibletime.desktop"
249
DESTINATION "${BT_SHARE_PATH}applications/"
252
# sword locale information
253
FILE(GLOB INSTALL_SWORD_LOCALE_LIST ${SWORD_INCLUDE_DIR}/../locales.d/*)
254
INSTALL(FILES ${INSTALL_SWORD_LOCALE_LIST}
255
DESTINATION "${BT_SHARE_PATH}sword/locales.d/"
258
# install pdb file for debugging purposes
259
IF (CMAKE_BUILD_TYPE STREQUAL "Debug")
260
SET( bibletime_PDB ${bibletime_BINARY_DIR}/Debug/bibletime.pdb)
261
INSTALL (FILES "${bibletime_PDB}"
262
DESTINATION "${BT_DESTINATION}"
264
ENDIF (CMAKE_BUILD_TYPE STREQUAL "Debug")
268
# sword locale information, needed for DMG image
269
FILE(GLOB INSTALL_SWORD_LOCALE_LIST ${SWORD_INCLUDE_DIR}/../../share/sword/locales.d/*)
270
INSTALL(FILES ${INSTALL_SWORD_LOCALE_LIST}
271
DESTINATION "${BT_SHARE_PATH}sword/locales.d/"
276
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTDocumentation.cmake")
277
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTDeveloper.cmake")
279
IF (WIN32 AND NOT UNIX)
280
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTBinaryPackageWindows.cmake")
281
ENDIF (WIN32 AND NOT UNIX)
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
290
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
291
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
294
ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
295
######################################################