summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt194
1 files changed, 107 insertions, 87 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 49edc04..fd10916 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,35 +1,47 @@
PROJECT(bibletime CXX C)
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0)
-
-SET(BT_WC_REVISION "0")
-IF (EXISTS ${PROJECT_SOURCE_DIR}/.svn)
- # Probably a SVN workspace, determine revision level
- FIND_PACKAGE(Subversion)
- IF (Subversion_FOUND)
- Subversion_WC_INFO(${PROJECT_SOURCE_DIR} BT)
- MESSAGE(STATUS "Current revision is ${BT_WC_REVISION}")
- ENDIF (Subversion_FOUND)
-ENDIF (EXISTS ${PROJECT_SOURCE_DIR}/.svn)
-
-#Version
-SET(BT_VERSION_MAJOR "2")
-SET(BT_VERSION_MINOR "5")
-#SET(BT_REVISION_PATCH "+svnr${BT_WC_REVISION}")
-SET(BT_REVISION_PATCH "")
-ADD_DEFINITIONS(-DBT_SVN_REVISION="${SVN_REVISION}")
-ADD_DEFINITIONS(-DBT_VERSION="${BT_VERSION_MAJOR}.${BT_VERSION_MINOR}${BT_REVISION_PATCH}")
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6.2)
+SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
-MESSAGE(STATUS "Setting up build environment for BibleTime version ${BT_VERSION_MAJOR}.${BT_VERSION_MINOR}${BT_REVISION_PATCH}")
+# BibleTime version
+SET(BT_VERSION_MAJOR "2")
+SET(BT_VERSION_MINOR "8")
+SET(BT_VERSION_PATCH "1")
+SET(BT_VERSION_BUILD "") # Temporarily uncomment this line for release procedures
+
+# Determine build, if needed:
+IF (NOT (DEFINED BT_VERSION_BUILD))
+ SET(Git_FIND_QUIETLY TRUE)
+ FIND_PACKAGE(Git)
+ IF (Git_FOUND)
+ Git_WC_INFO(${PROJECT_SOURCE_DIR} BT)
+ IF (DEFINED BT_WC_REVISION_HASH_SHORT)
+ SET(BT_VERSION_BUILD "+${BT_WC_REVISION_HASH_SHORT}")
+ ENDIF (DEFINED BT_WC_REVISION_HASH_SHORT)
+ ENDIF (Git_FOUND)
+ENDIF (NOT (DEFINED BT_VERSION_BUILD))
+
+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 (NOT CMAKE_BUILD_TYPE STREQUAL "Release")
+ ADD_DEFINITIONS(-DBT_NO_DEBUG -DNDEBUG -DQT_NO_DEBUG)
+ENDIF (NOT CMAKE_BUILD_TYPE STREQUAL "Release")
#Non-English locales to be processed and installed for UI, handbook and howto
-LIST(APPEND MESSAGE_LOCALE_LANGS cs da de en_GB es et fi fr hu it nl nn_NO pl pt_BR ro ru sk)
+LIST(APPEND MESSAGE_LOCALE_LANGS ar cs da de en_GB es et fi fr hu it nl nn_NO pl pt_BR ro ru sk zh_TW)
#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 cs de fi fr hu it nl pt_BR)
-LIST(APPEND HOWTO_LOCALE_LANGS bg cs da de es fi fr it hu ko nl pt_BR ru)
+LIST(APPEND HANDBOOK_LOCALE_LANGS 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)
# Find required packages
-SET(QT_MIN_VERSION 4.4.0)
+SET(QT_MIN_VERSION 4.5.0)
SET(QT_USE_QTXML 1)
SET(QT_USE_QTWEBKIT 1)
SET(QT_USE_QTMAIN 1)
@@ -44,11 +56,9 @@ ENDIF (QT_QTDBUS_FOUND AND NOT APPLE)
# If cmake says that qdbusxml2cpp is missing, uncomment the following line
#SET(QT_DBUSXML2CPP_EXECUTABLE "/usr/bin/qdbusxml2cpp") #TEMP HACK?
-FIND_PACKAGE(Boost REQUIRED)
#
#custom includes
#
-SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
FIND_PACKAGE(CLucene REQUIRED)
# optional: Try to detect CURL, ICU and ZLib and add it to the linker flags if found, maybe Sword needs it
@@ -58,22 +68,25 @@ FIND_PACKAGE(ZLIB)
FIND_PACKAGE(Sword REQUIRED)
+# directory layout settings up front, needed in various places
+SET(BT_DESTINATION "bin/")
+SET(BT_SHARE_PATH "share/")
+IF (APPLE)
+ SET(BT_DESTINATION "../MacOS/")
+ SET(BT_SHARE_PATH "../share/")
+ENDIF (APPLE)
# Define $bibletime_SOURCES
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTSourceFileList.cmake")
-# Define rules to generate ${bibletime_UI_translations} files
-INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTUITranslation.cmake")
-
#
# The actual build options
#
INCLUDE_DIRECTORIES(
- ${CMAKE_CURRENT_BINARY_DIR} #for .h files generated from .ui
- ${CMAKE_CURRENT_SOURCE_DIR}/src # so that include paths like "frontend/..." work
- ${CLUCENE_INCLUDE_DIR} #CLucene headers
- ${CLUCENE_LIBRARY_DIR} #CLucene/clucene-config.h
- ${Boost_INCLUDE_DIRS}
+ ${CMAKE_CURRENT_BINARY_DIR} #for .h files generated from .ui
+ ${CMAKE_CURRENT_SOURCE_DIR}/src # so that include paths like "frontend/..." work
+ ${CLUCENE_INCLUDE_DIR} #CLucene headers
+ ${CLUCENE_LIBRARY_DIR} #CLucene/clucene-config.h
${SWORD_INCLUDE_DIR}
)
@@ -83,9 +96,7 @@ QT4_WRAP_UI(bibletime_UIS_H ${bibletime_UIS})
# this will run moc on source files
QT4_WRAP_CPP(bibletime_MOC_SOURCES ${bibletime_MOCABLE_HEADERS})
-SOURCE_GROUP( "Generated Files"
- FILES ${bibletime_UIS} ${bibletime_MOC_SOURCES}
-)
+SOURCE_GROUP("QM Files" REGULAR_EXPRESSION ".*\\.qm")
#This must come before the target definition!
LINK_DIRECTORIES(
@@ -98,6 +109,10 @@ IF (APPLE)
SET(EXECUTABLE_NAME "BibleTime")
ENDIF (APPLE)
+
+# Define rules to generate ${bibletime_UI_translations} files
+INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTUITranslation.cmake")
+
SET(common_bibletime_SOURCES
${bibletime_SOURCES}
${bibletime_UIS_H}
@@ -106,37 +121,28 @@ SET(common_bibletime_SOURCES
${bibletime_UI_translations}
)
-# include test files in debug mode
-IF (NOT CMAKE_BUILD_TYPE STREQUAL "Release")
- # this will run moc on test source files
- QT4_WRAP_CPP(bibletime_test_MOC_SOURCES ${bibletime_test_MOCABLE_HEADERS})
-
- SET(common_bibletime_SOURCES
+# For the Windows Application Icon
+IF (MSVC)
+ SET(common_bibletime_SOURCES
${common_bibletime_SOURCES}
- ${bibletime_test_SOURCES}
- ${bibletime_test_MOC_SOURCES}
+ "cmake/BTWinIcon.rc"
)
-ENDIF (NOT CMAKE_BUILD_TYPE STREQUAL "Release")
-# For the Windows Application Icon
-IF (MSVC)
- SET(common_bibletime_SOURCES
- ${common_bibletime_SOURCES}
- "cmake/BTWinIcon.rc"
- )
+ SOURCE_GROUP( "Icon Files"
+ FILES "cmake/BTWinIcon.rc" }
+ )
ENDIF (MSVC)
-#Link to QtTest only in debug builds
IF (CMAKE_BUILD_TYPE STREQUAL "Release")
IF (MSVC)
ADD_EXECUTABLE(${EXECUTABLE_NAME} WIN32 ${common_bibletime_SOURCES})
ELSE (MSVC)
ADD_EXECUTABLE(${EXECUTABLE_NAME} ${common_bibletime_SOURCES})
ENDIF (MSVC)
-# SET_TARGET_PROPERTIES(${EXECUTABLE_NAME}
-# PROPERTIES
-# COMPILE_FLAGS "${SWORD_CFLAGS}" #Enable exception handling
-# )
+# SET_TARGET_PROPERTIES(${EXECUTABLE_NAME}
+# PROPERTIES
+# COMPILE_FLAGS "${SWORD_CFLAGS}" #Enable exception handling
+# )
INCLUDE(${QT_USE_FILE})
TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME}
${QT_LIBRARIES}
@@ -148,17 +154,11 @@ IF (CMAKE_BUILD_TYPE STREQUAL "Release")
${SWORD_LIBRARY}
)
ELSE (CMAKE_BUILD_TYPE STREQUAL "Release")
- SET(CMAKE_BUILD_TYPE "Debug")
IF (MSVC)
ADD_EXECUTABLE(${EXECUTABLE_NAME} WIN32 ${common_bibletime_SOURCES})
ELSE (MSVC)
ADD_EXECUTABLE(${EXECUTABLE_NAME} ${common_bibletime_SOURCES})
ENDIF (MSVC)
- SET_TARGET_PROPERTIES(${EXECUTABLE_NAME}
- PROPERTIES
- COMPILE_FLAGS "-DBT_ENABLE_TESTING" #Enable exception handling and Testing
- )
- SET(QT_USE_QTTEST 1)
INCLUDE(${QT_USE_FILE})
TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME}
${QT_LIBRARIES}
@@ -166,33 +166,40 @@ ELSE (CMAKE_BUILD_TYPE STREQUAL "Release")
${CURL_LIBRARIES} # optional, empty if not found
${ICU_LIBRARIES} # optional, empty if not found
${ICU_I18N_LIBRARIES} # optional, empty if not found
+ ${ZLIB_LIBRARIES} # optional, empty if not found
${SWORD_LIBRARY}
)
- # Unit Tests
- ADD_CUSTOM_TARGET(test
- COMMAND ./${EXECUTABLE_NAME} --run-tests
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
- COMMENT "Running BibleTime Unit Tests"
- )
ENDIF (CMAKE_BUILD_TYPE STREQUAL "Release")
+IF (APPLE)
+ # enable support MacOS 10.5+
+ SET_TARGET_PROPERTIES(${EXECUTABLE_NAME}
+ PROPERTIES
+ COMPILE_FLAGS "-mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk"
+ LINK_FLAGS "-mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk"
+ )
+ENDIF (APPLE)
+
+
IF (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
SET(CMAKE_INSTALL_PREFIX "install/") #install to ./build/install, allow override
ENDIF (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+IF (APPLE)
+ SET(CMAKE_INSTALL_PREFIX "install/BibleTime.app/Contents/Resources")
+ENDIF (APPLE)
+
IF (MSVC)
- SET(CMAKE_CXX_FLAGS_RELEASE "-DNO_DBUS -DSWUSINGDLL -DBT_VERSION=\\\"${BT_VERSION}\\\" /MD /Zc:wchar_t- /W1 /D_UNICODE /DUNICODE ")
- SET(CMAKE_CXX_FLAGS_DEBUG "-DNO_DBUS -DSWUSINGDLL -DBT_VERSION=\\\"${BT_VERSION}\\\" /MDd /Zc:wchar_t- /W1 /D_UNICODE /DUNICODE -DBT_ENABLE_TESTING /ZI")
+ SET(CMAKE_CXX_FLAGS_RELEASE "-DNO_DBUS -DSWUSINGDLL /MD /Zc:wchar_t- /W1 /D_UNICODE /DUNICODE ")
+ SET(CMAKE_CXX_FLAGS_DEBUG "-DNO_DBUS -DSWUSINGDLL /MDd /Zc:wchar_t- /W1 /D_UNICODE /DUNICODE /ZI")
ELSE (MSVC)
SET(CMAKE_CXX_FLAGS_RELEASE "-Wall -O2 -fexceptions")
- SET(CMAKE_CXX_FLAGS_DEBUG "-Wall -Werror -O0 -g -fexceptions -DBT_ENABLE_TESTING")
+ SET(CMAKE_CXX_FLAGS_DEBUG "-Wall -Werror -O2 -ggdb -fexceptions")
ENDIF (MSVC)
# Install files
#
-SET(BT_DESTINATION "bin/")
-SET(BT_SHARE_PATH "")
INSTALL(TARGETS "${EXECUTABLE_NAME}"
DESTINATION "${BT_DESTINATION}"
@@ -201,47 +208,47 @@ INSTALL(TARGETS "${EXECUTABLE_NAME}"
# icons
FILE(GLOB INSTALL_ICONS_LIST "${CMAKE_CURRENT_SOURCE_DIR}/pics/icons/*.svg")
INSTALL(FILES ${INSTALL_ICONS_LIST}
- DESTINATION "${BT_SHARE_PATH}share/bibletime/icons/"
+ DESTINATION "${BT_SHARE_PATH}bibletime/icons/"
)
# icons - png, needed for About Dialog
FILE(GLOB INSTALL_ICONS_LIST_PNG "${CMAKE_CURRENT_SOURCE_DIR}/pics/icons/bibletime.png")
INSTALL(FILES ${INSTALL_ICONS_LIST_PNG}
- DESTINATION "${BT_SHARE_PATH}share/bibletime/icons/"
+ DESTINATION "${BT_SHARE_PATH}bibletime/icons/"
)
# display templates
FILE(GLOB INSTALL_DISPLAY_TEMPLATES_LIST ${CMAKE_CURRENT_SOURCE_DIR}/src/display-templates/*.tmpl)
INSTALL(FILES ${INSTALL_DISPLAY_TEMPLATES_LIST}
- DESTINATION "${BT_SHARE_PATH}share/bibletime/display-templates/"
+ DESTINATION "${BT_SHARE_PATH}bibletime/display-templates/"
)
# javascript
INSTALL(FILES "src/frontend/display/bthtml.js"
- DESTINATION "${BT_SHARE_PATH}share/bibletime/javascript/"
+ DESTINATION "${BT_SHARE_PATH}bibletime/javascript/"
)
# license.html
INSTALL(FILES "docs/license.html"
- DESTINATION "${BT_SHARE_PATH}share/bibletime/license/"
+ DESTINATION "${BT_SHARE_PATH}bibletime/license/"
)
# splash screen
INSTALL(FILES "pics/startuplogo.png" "pics/startuplogo_christmas.png"
- DESTINATION "${BT_SHARE_PATH}share/bibletime/pics/"
+ DESTINATION "${BT_SHARE_PATH}bibletime/pics/"
)
#
# Platform specific installation
#
# LINUX: application icon
INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/pics/icons/bibletime.svg"
- DESTINATION "${BT_SHARE_PATH}share/icons/"
+ DESTINATION "${BT_SHARE_PATH}icons/"
)
# LINUX: desktop file
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/platforms/linux/bibletime.desktop.cmake" "${CMAKE_CURRENT_BINARY_DIR}/bibletime.desktop")
INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/bibletime.desktop"
- DESTINATION "${BT_SHARE_PATH}share/applications/"
+ DESTINATION "${BT_SHARE_PATH}applications/"
)
IF (MSVC)
# sword locale information
FILE(GLOB INSTALL_SWORD_LOCALE_LIST ${SWORD_INCLUDE_DIR}/../locales.d/*)
INSTALL(FILES ${INSTALL_SWORD_LOCALE_LIST}
- DESTINATION "${BT_SHARE_PATH}share/sword/locales.d/"
+ DESTINATION "${BT_SHARE_PATH}sword/locales.d/"
)
# install pdb file for debugging purposes
@@ -253,19 +260,32 @@ IF (MSVC)
ENDIF (CMAKE_BUILD_TYPE STREQUAL "Debug")
ENDIF (MSVC)
+IF (APPLE)
+ # sword locale information, needed for DMG image
+ FILE(GLOB INSTALL_SWORD_LOCALE_LIST ${SWORD_INCLUDE_DIR}/../../share/sword/locales.d/*)
+ INSTALL(FILES ${INSTALL_SWORD_LOCALE_LIST}
+ DESTINATION "${BT_SHARE_PATH}sword/locales.d/"
+ )
+ENDIF (APPLE)
+
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTDocumentation.cmake")
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTDeveloper.cmake")
-INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTCpack.cmake")
+IF (WIN32 AND NOT UNIX)
+ INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTBinaryPackageWindows.cmake")
+ENDIF (WIN32 AND NOT UNIX)
+IF (APPLE)
+ INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/BTBinaryPackageMacOS.cmake")
+ENDIF (APPLE)
######################################################
# "make uninstall" target; see http://www.cmake.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F
#
CONFIGURE_FILE(
-"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
-"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
-IMMEDIATE @ONLY
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
+ IMMEDIATE @ONLY
)
ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
######################################################