summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake')
-rw-r--r--cmake/FindCLucene.cmake116
-rw-r--r--cmake/FindICU.cmake51
-rw-r--r--cmake/FindSword.cmake221
-rw-r--r--cmake/sword_linker_check.cpp27
-rw-r--r--cmake/sword_version_compare.cpp23
5 files changed, 287 insertions, 151 deletions
diff --git a/cmake/FindCLucene.cmake b/cmake/FindCLucene.cmake
index 1a1fb45..85e59b3 100644
--- a/cmake/FindCLucene.cmake
+++ b/cmake/FindCLucene.cmake
@@ -20,102 +20,102 @@ INCLUDE(CheckSymbolExists)
INCLUDE(FindLibraryWithDebug)
if(NOT CLUCENE_MIN_VERSION)
- set(CLUCENE_MIN_VERSION "0.9.19")
+ set(CLUCENE_MIN_VERSION "0.9.19")
endif(NOT CLUCENE_MIN_VERSION)
IF(EXISTS ${PROJECT_CMAKE}/CLuceneConfig.cmake)
- INCLUDE(${PROJECT_CMAKE}/CLuceneConfig.cmake)
+ INCLUDE(${PROJECT_CMAKE}/CLuceneConfig.cmake)
ENDIF(EXISTS ${PROJECT_CMAKE}/CLuceneConfig.cmake)
IF(MSVC)
- IF(CMAKE_BUILD_TYPE STREQUAL "Release")
- SET(WIN_CLUCENE_SEARCH_PATH ../clucene-core-0.9.21b/src/CLucene/Release)
- ELSE(CMAKE_BUILD_TYPE STREQUAL "Release")
- SET(WIN_CLUCENE_SEARCH_PATH ../clucene-core-0.9.21b/src/CLucene/debug)
- ENDIF(CMAKE_BUILD_TYPE STREQUAL "Release")
- SET(WIN_CLUCENE_INCLUDE_PATH ../clucene-core-0.9.21b/src)
+ IF(CMAKE_BUILD_TYPE STREQUAL "Release")
+ SET(WIN_CLUCENE_SEARCH_PATH ../clucene-core-0.9.21b/src/CLucene/Release)
+ ELSE(CMAKE_BUILD_TYPE STREQUAL "Release")
+ SET(WIN_CLUCENE_SEARCH_PATH ../clucene-core-0.9.21b/src/CLucene/debug)
+ ENDIF(CMAKE_BUILD_TYPE STREQUAL "Release")
+ SET(WIN_CLUCENE_INCLUDE_PATH ../clucene-core-0.9.21b/src)
ELSE(MSVC)
- SET(WIN_CLUCENE_SEARCH_PATH "")
- SET(WIN_CLUCENE_INCLUDE_PATH "")
+ SET(WIN_CLUCENE_SEARCH_PATH "")
+ SET(WIN_CLUCENE_INCLUDE_PATH "")
ENDIF(MSVC)
SET(TRIAL_LIBRARY_PATHS
- $ENV{CLUCENE_HOME}/lib${LIB_SUFFIX}
- ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}
- /usr/local/lib${LIB_SUFFIX}
- /opt/local/lib${LIB_SUFFIX}
- /usr/lib${LIB_SUFFIX}
- /usr/lib64
- /sw/lib${LIB_SUFFIX}
- /usr/pkg/lib${LIB_SUFFIX}
- ${WIN_CLUCENE_SEARCH_PATH}
- )
+ $ENV{CLUCENE_HOME}/lib${LIB_SUFFIX}
+ ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}
+ /usr/local/lib${LIB_SUFFIX}
+ /opt/local/lib${LIB_SUFFIX}
+ /usr/lib${LIB_SUFFIX}
+ /usr/lib64
+ /sw/lib${LIB_SUFFIX}
+ /usr/pkg/lib${LIB_SUFFIX}
+ ${WIN_CLUCENE_SEARCH_PATH}
+ )
SET(TRIAL_INCLUDE_PATHS
- $ENV{CLUCENE_HOME}/include
- ${CMAKE_INSTALL_PREFIX}/include
- /usr/local/include
- /usr/include
- /sw/include
- /usr/pkg/include
- ${WIN_CLUCENE_INCLUDE_PATH}
- )
+ $ENV{CLUCENE_HOME}/include
+ ${CMAKE_INSTALL_PREFIX}/include
+ /usr/local/include
+ /usr/include
+ /sw/include
+ /usr/pkg/include
+ ${WIN_CLUCENE_INCLUDE_PATH}
+ )
FIND_LIBRARY_WITH_DEBUG(CLUCENE_LIBRARY
- NAMES clucene clucene-core
- PATHS ${TRIAL_LIBRARY_PATHS})
+ NAMES clucene clucene-core
+ PATHS ${TRIAL_LIBRARY_PATHS})
IF (CLUCENE_LIBRARY)
- MESSAGE(STATUS "Found CLucene library: ${CLUCENE_LIBRARY}")
+ MESSAGE(STATUS "Found CLucene library: ${CLUCENE_LIBRARY}")
ENDIF (CLUCENE_LIBRARY)
FIND_PATH(CLUCENE_INCLUDE_DIR
- NAMES CLucene.h
- PATHS ${TRIAL_INCLUDE_PATHS})
+ NAMES CLucene.h
+ PATHS ${TRIAL_INCLUDE_PATHS})
IF (CLUCENE_INCLUDE_DIR)
- MESSAGE(STATUS "Found CLucene include dir: ${CLUCENE_INCLUDE_DIR}")
+ MESSAGE(STATUS "Found CLucene include dir: ${CLUCENE_INCLUDE_DIR}")
ENDIF (CLUCENE_INCLUDE_DIR)
IF(WIN32)
- SET(TRIAL_LIBRARY_PATHS ${CLUCENE_INCLUDE_DIR})
+ SET(TRIAL_LIBRARY_PATHS ${CLUCENE_INCLUDE_DIR})
ENDIF(WIN32)
SET(CLUCENE_GOOD_VERSION TRUE)
FIND_PATH(CLUCENE_LIBRARY_DIR
- NAMES CLucene/clucene-config.h PATHS ${TRIAL_LIBRARY_PATHS} ${TRIAL_INCLUDE_PATHS} NO_DEFAULT_PATH)
+ NAMES CLucene/clucene-config.h PATHS ${TRIAL_LIBRARY_PATHS} ${TRIAL_INCLUDE_PATHS} NO_DEFAULT_PATH)
IF (CLUCENE_LIBRARY_DIR)
- MESSAGE(STATUS "Found CLucene library dir: ${CLUCENE_LIBRARY_DIR}")
- FILE(READ ${CLUCENE_LIBRARY_DIR}/CLucene/clucene-config.h CLCONTENT)
- STRING(REGEX MATCH "_CL_VERSION +\".*\"" CLMATCH ${CLCONTENT})
- IF (CLMATCH)
- STRING(REGEX REPLACE "_CL_VERSION +\"(.*)\"" "\\1" CLUCENE_VERSION ${CLMATCH})
+ MESSAGE(STATUS "Found CLucene library dir: ${CLUCENE_LIBRARY_DIR}")
+ FILE(READ ${CLUCENE_LIBRARY_DIR}/CLucene/clucene-config.h CLCONTENT)
+ STRING(REGEX MATCH "_CL_VERSION +\".*\"" CLMATCH ${CLCONTENT})
+ IF (CLMATCH)
+ STRING(REGEX REPLACE "_CL_VERSION +\"(.*)\"" "\\1" CLUCENE_VERSION ${CLMATCH})
IF (CLUCENE_VERSION STRLESS "${CLUCENE_MIN_VERSION}")
- MESSAGE(ERROR " CLucene version ${CLUCENE_VERSION} is less than the required minimum ${CLUCENE_MIN_VERSION}")
- SET(CLUCENE_GOOD_VERSION FALSE)
+ MESSAGE(ERROR " CLucene version ${CLUCENE_VERSION} is less than the required minimum ${CLUCENE_MIN_VERSION}")
+ SET(CLUCENE_GOOD_VERSION FALSE)
ENDIF (CLUCENE_VERSION STRLESS "${CLUCENE_MIN_VERSION}")
IF (CLUCENE_VERSION STREQUAL "0.9.17")
- MESSAGE(ERROR "CLucene version 0.9.17 is not supported.")
- SET(CLUCENE_GOOD_VERSION FALSE)
+ MESSAGE(ERROR "CLucene version 0.9.17 is not supported.")
+ SET(CLUCENE_GOOD_VERSION FALSE)
ENDIF (CLUCENE_VERSION STREQUAL "0.9.17")
- ENDIF (CLMATCH)
+ ENDIF (CLMATCH)
ELSE (CLUCENE_LIBRARY_DIR)
- MESSAGE(STATUS "CLucene library dir not found.")
+ MESSAGE(STATUS "CLucene library dir not found.")
ENDIF (CLUCENE_LIBRARY_DIR)
IF(CLUCENE_INCLUDE_DIR AND CLUCENE_LIBRARY AND CLUCENE_LIBRARY_DIR AND CLUCENE_GOOD_VERSION)
- SET(CLucene_FOUND TRUE)
+ SET(CLucene_FOUND TRUE)
ENDIF(CLUCENE_INCLUDE_DIR AND CLUCENE_LIBRARY AND CLUCENE_LIBRARY_DIR AND CLUCENE_GOOD_VERSION)
IF(CLucene_FOUND)
- IF(NOT CLucene_FIND_QUIETLY)
- MESSAGE(STATUS "Found CLucene: ${CLUCENE_LIBRARY}")
- ENDIF(NOT CLucene_FIND_QUIETLY)
+ IF(NOT CLucene_FIND_QUIETLY)
+ MESSAGE(STATUS "Found CLucene: ${CLUCENE_LIBRARY}")
+ ENDIF(NOT CLucene_FIND_QUIETLY)
ELSE(CLucene_FOUND)
- IF(CLucene_FIND_REQUIRED)
- MESSAGE(FATAL_ERROR "Could not find CLucene.")
- ENDIF(CLucene_FIND_REQUIRED)
+ IF(CLucene_FIND_REQUIRED)
+ MESSAGE(FATAL_ERROR "Could not find CLucene.")
+ ENDIF(CLucene_FIND_REQUIRED)
ENDIF(CLucene_FOUND)
MARK_AS_ADVANCED(
- CLUCENE_INCLUDE_DIR
- CLUCENE_LIBRARY_DIR
- CLUCENE_LIBRARY
- )
+ CLUCENE_INCLUDE_DIR
+ CLUCENE_LIBRARY_DIR
+ CLUCENE_LIBRARY
+ )
diff --git a/cmake/FindICU.cmake b/cmake/FindICU.cmake
new file mode 100644
index 0000000..9dff9f3
--- /dev/null
+++ b/cmake/FindICU.cmake
@@ -0,0 +1,51 @@
+# Finds the International Components for Unicode (ICU) Library
+#
+# ICU_FOUND - True if ICU found.
+# ICU_I18N_FOUND - True if ICU's internationalization library found.
+# ICU_INCLUDE_DIRS - Directory to include to get ICU headers
+# Note: always include ICU headers as, e.g.,
+# unicode/utypes.h
+# ICU_LIBRARIES - Libraries to link against for the common ICU
+# ICU_I18N_LIBRARIES - Libraries to link against for ICU internationaliation
+# (note: in addition to ICU_LIBRARIES)
+
+# Look for the header file.
+find_path(
+ ICU_INCLUDE_DIR
+ NAMES unicode/utypes.h
+ DOC "Include directory for the ICU library")
+mark_as_advanced(ICU_INCLUDE_DIR)
+
+# Look for the library.
+find_library(
+ ICU_LIBRARY
+ NAMES icuuc cygicuuc cygicuuc32
+ DOC "Libraries to link against for the common parts of ICU")
+mark_as_advanced(ICU_LIBRARY)
+
+# Copy the results to the output variables.
+if(ICU_INCLUDE_DIR AND ICU_LIBRARY)
+ set(ICU_FOUND 1)
+ set(ICU_LIBRARIES ${ICU_LIBRARY})
+ set(ICU_INCLUDE_DIRS ${ICU_INCLUDE_DIR})
+
+ # Look for the ICU internationalization libraries
+ find_library(
+ ICU_I18N_LIBRARY
+ NAMES icuin icui18n cygicuin cygicuin32
+ DOC "Libraries to link against for ICU internationalization")
+ mark_as_advanced(ICU_I18N_LIBRARY)
+ if (ICU_I18N_LIBRARY)
+ set(ICU_I18N_FOUND 1)
+ set(ICU_I18N_LIBRARIES ${ICU_I18N_LIBRARY})
+ else (ICU_I18N_LIBRARY)
+ set(ICU_I18N_FOUND 0)
+ set(ICU_I18N_LIBRARIES)
+ endif (ICU_I18N_LIBRARY)
+else(ICU_INCLUDE_DIR AND ICU_LIBRARY)
+ set(ICU_FOUND 0)
+ set(ICU_I18N_FOUND 0)
+ set(ICU_LIBRARIES)
+ set(ICU_I18N_LIBRARIES)
+ set(ICU_INCLUDE_DIRS)
+endif(ICU_INCLUDE_DIR AND ICU_LIBRARY)
diff --git a/cmake/FindSword.cmake b/cmake/FindSword.cmake
index 0df6618..8080895 100644
--- a/cmake/FindSword.cmake
+++ b/cmake/FindSword.cmake
@@ -2,119 +2,154 @@ SET (REQUIRED_SWORD_VERSION 1.5.9)
SET (SIMPLE_RENDER_SWORD_VERSION 1.5.10)
SET (MULTIVERSE_SWORD_VERSION 1.5.11.1)
SET (SYSCONF_CHANGED_SWORD_VERSION 1.5.11.98)
-SET (INTERNET_WARNING_SWORD_VERSION 1.5.11.98)
+#SET (INTERNET_WARNING_SWORD_VERSION 1.5.11.98) # same as SYSCONF_CHANGED_SWORD_VERSION, treated together
# This module looks for installed sword
#
# It will define the following values
# SWORD_INCLUDE_DIR
-# SWORD_LIBS
-
-IF (WIN32)
-
- SET(TRIAL_LIBRARY_PATHS
- $ENV{SWORD_HOME}/lib${LIB_SUFFIX}
- ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}
- /usr/lib${LIB_SUFFIX}
- /usr/local/lib${LIB_SUFFIX}
- /sw/lib${LIB_SUFFIX}
- ../sword-1.5.11/lib/vcppmake/vc8/ICUDebug
- ../sword-1.5.11/lib/vcppmake/vc8/ICURelease
- )
- SET(TRIAL_INCLUDE_PATHS
- $ENV{SWORD_HOME}/include/sword
- $ENV{SWORD_HOME}/include
- ${CMAKE_INSTALL_PREFIX}/include/sword
- ${CMAKE_INSTALL_PREFIX}/include
- /sw/include
- ../sword-1.5.11/include
- )
-
- FIND_LIBRARY(SWORD_LIBRARY sword
- NAMES libsword
- PATHS ${TRIAL_LIBRARY_PATHS})
- IF (SWORD_LIBRARY)
- MESSAGE(STATUS "Found Sword library: ${SWORD_LIBRARY}")
- ENDIF (SWORD_LIBRARY)
- FIND_PATH(SWORD_INCLUDE_DIR
- NAMES swmgr.h
- PATHS ${TRIAL_INCLUDE_PATHS})
-
- IF (SWORD_INCLUDE_DIR)
- MESSAGE(STATUS "Found Sword include dir: ${SWORD_INCLUDE_DIR}")
- ENDIF (SWORD_INCLUDE_DIR)
-
-ELSE(WIN32)
-
- EXECUTE_PROCESS(COMMAND pkg-config --atleast-version=${REQUIRED_SWORD_VERSION} sword
- RESULT_VARIABLE SWORD_VERSION_OK
- )
- EXECUTE_PROCESS(COMMAND pkg-config --atleast-version=${SIMPLE_RENDER_SWORD_VERSION} sword
- RESULT_VARIABLE SIMPLE_RENDER_SWORD_OK
- )
- EXECUTE_PROCESS(COMMAND pkg-config --atleast-version=${MULTIVERSE_SWORD_VERSION} sword
- RESULT_VARIABLE MULTIVERSE_SWORD_OK
- )
- EXECUTE_PROCESS(COMMAND pkg-config --atleast-version=${SYSCONF_CHANGED_SWORD_VERSION} sword
- RESULT_VARIABLE SYSCONF_CHANGED_SWORD_OK
- )
- EXECUTE_PROCESS(COMMAND pkg-config --atleast-version=${INTERNET_WARNING_SWORD_VERSION} sword
- RESULT_VARIABLE INTERNET_WARNING_SWORD_OK
- )
+# SWORD_LIBRARY
+# SWORD_LIBRARY_DIR
+# SWORD_CFLAGS
+
+IF(MSVC)
+ SET(SWORD_WIN32_LIBRARY_PATH ../sword/lib/vcppmake/vc8/ICUDebug)
+ SET(SWORD_WIN32_INCLUDE_PATH ../sword/include)
+ENDIF(MSVC)
+
+SET(TRIAL_LIBRARY_PATHS
+ $ENV{SWORD_HOME}/lib${LIB_SUFFIX}
+ ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}
+ /usr/local/lib${LIB_SUFFIX}
+ /opt/local/lib${LIB_SUFFIX}
+ /usr/lib${LIB_SUFFIX}
+ /usr/lib64
+ /usr/pkg/lib${LIB_SUFFIX}
+ ${SWORD_WIN32_LIBRARY_PATH}
+)
+SET(TRIAL_INCLUDE_PATHS
+ $ENV{SWORD_HOME}/include/sword
+ $ENV{SWORD_HOME}/include
+ ${CMAKE_INSTALL_PREFIX}/include/sword
+ ${CMAKE_INSTALL_PREFIX}/include
+ /usr/local/include/sword
+ /usr/local/include
+ /usr/include/sword
+ /usr/include
+ /sw/include/sword
+ /sw/include
+ /usr/pkg/include/sword
+ /usr/pkg/include
+ ${SWORD_WIN32_INCLUDE_PATH}
+)
+FIND_LIBRARY(SWORD_LIBRARY sword NAMES libsword PATHS ${TRIAL_LIBRARY_PATHS})
+IF (SWORD_LIBRARY)
+ MESSAGE(STATUS "Found Sword library: ${SWORD_LIBRARY}")
+ SET(SWORD_LIBRARY "sword")
+ELSE (SWORD_LIBRARY)
+ MESSAGE(FATAL_ERROR "Could not find the Sword library.")
+ENDIF (SWORD_LIBRARY)
+
+FIND_PATH(SWORD_LIBRARY_DIR NAMES libsword.a libsword.la libsword.so libsword.lib PATHS ${TRIAL_LIBRARY_PATHS} ENV CMAKE_LIBRARY_PATH)
+IF (SWORD_LIBRARY_DIR)
+ MESSAGE(STATUS "Found Sword library dir: ${SWORD_LIBRARY_DIR}")
+ELSE (SWORD_LIBRARY_DIR)
+ MESSAGE(FATAL_ERROR "Could not find the Sword library dir.")
+ENDIF (SWORD_LIBRARY_DIR)
+
+FIND_PATH(SWORD_INCLUDE_DIR NAMES swmgr.h PATHS ${TRIAL_INCLUDE_PATHS})
+IF (SWORD_INCLUDE_DIR)
+ MESSAGE(STATUS "Found Sword include dir: ${SWORD_INCLUDE_DIR}")
+ELSE (SWORD_INCLUDE_DIR)
+ MESSAGE(FATAL_ERROR "Sword include dir could not be found.")
+ENDIF (SWORD_INCLUDE_DIR)
- EXECUTE_PROCESS(COMMAND pkg-config --modversion sword
- OUTPUT_VARIABLE SWORD_VERSION
- OUTPUT_STRIP_TRAILING_WHITESPACE
+#
+# Check for minimum Sword version
+#
+MACRO(CHECK_SWORD_VERSION VERSION)
+ TRY_RUN(SWVERSIONTEST_RUN_RESULT SWVERSIONTEST_COMPILE_RESULT
+ ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/sword_version_compare.cpp
+ CMAKE_FLAGS
+ "-DINCLUDE_DIRECTORIES:STRING=${SWORD_INCLUDE_DIR}"
+ "-DLINK_DIRECTORIES:STRING=${SWORD_LIBRARY_DIR}"
+ "-DLINK_LIBRARIES:STRING=${SWORD_LIBRARY}"
+ COMPILE_OUTPUT_VARIABLE SWVERSIONTEST_COMPILE_OUTPUT
+ RUN_OUTPUT_VARIABLE SWVERSIONTEST_RUN_OUTPUT
+ ARGS ${VERSION}
)
+ IF(NOT SWVERSIONTEST_COMPILE_RESULT)
+ MESSAGE(FATAL_ERROR "Sword version check program could NOT be compiled: ${SWVERSIONTEST_COMPILE_OUTPUT}")
+ ENDIF(NOT SWVERSIONTEST_COMPILE_RESULT)
+ENDMACRO(CHECK_SWORD_VERSION VERSION)
- IF (SWORD_VERSION_OK EQUAL 0)
+MESSAGE(STATUS "Checking for required Sword version ${REQUIRED_SWORD_VERSION}...")
+CHECK_SWORD_VERSION(${REQUIRED_SWORD_VERSION})
- MESSAGE(STATUS "Sword version ${SWORD_VERSION} is ok")
+IF(SWVERSIONTEST_RUN_RESULT EQUAL 0)
+ MESSAGE(STATUS "Installed Sword version is ok. Check program said: ${SWVERSIONTEST_RUN_OUTPUT}")
+ELSE(SWVERSIONTEST_RUN_RESULT EQUAL 0)
+ MESSAGE(FATAL_ERROR "Installed Sword version is NOT ok! Check program said: ${SWVERSIONTEST_RUN_OUTPUT}")
+ENDIF(SWVERSIONTEST_RUN_RESULT EQUAL 0)
+
+#
+# Check for API changes that require compiler definitions
+#
- EXECUTE_PROCESS(COMMAND pkg-config --variable=includedir sword
- OUTPUT_VARIABLE SWORD_INCLUDE_DIR
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- SET(SWORD_INCLUDE_DIR "${SWORD_INCLUDE_DIR}/sword")
- MESSAGE(STATUS "Sword include directory is ${SWORD_INCLUDE_DIR}")
+# SIMPLE_RENDER
+CHECK_SWORD_VERSION(${SIMPLE_RENDER_SWORD_VERSION})
+IF(SWVERSIONTEST_RUN_RESULT EQUAL 0)
+ SET (SWORD_CFLAGS "${SWORD_CFLAGS} -DSWORD_SIMPLERENDER")
+ MESSAGE(STATUS " Found simple render version of Sword.")
+ENDIF(SWVERSIONTEST_RUN_RESULT EQUAL 0)
- EXECUTE_PROCESS(COMMAND pkg-config --libs sword
- OUTPUT_VARIABLE SWORD_LIBS
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- MESSAGE(STATUS "Sword lib linker flags to be used: ${SWORD_LIBS}")
+# MULTIVERSE
+CHECK_SWORD_VERSION(${MULTIVERSE_SWORD_VERSION})
+IF(SWVERSIONTEST_RUN_RESULT EQUAL 0)
+ SET (SWORD_CFLAGS "${SWORD_CFLAGS} -DSWORD_MULTIVERSE")
+ MESSAGE(STATUS " Found multiverse version of Sword.")
+ENDIF(SWVERSIONTEST_RUN_RESULT EQUAL 0)
- ELSE (SWORD_VERSION_OK EQUAL 0)
+# SYSCONF_CHANGED and INTERNET_WARNING
+CHECK_SWORD_VERSION(${SYSCONF_CHANGED_SWORD_VERSION})
+IF(SWVERSIONTEST_RUN_RESULT EQUAL 0)
+ SET (SWORD_CFLAGS "${SWORD_CFLAGS} -DSWORD_SYSCONF_CHANGED -DSWORD_INTERNET_WARNING")
+ MESSAGE(STATUS " Found sysconf_changed and internet_warning version of Sword.")
+ENDIF(SWVERSIONTEST_RUN_RESULT EQUAL 0)
- IF (SWORD_VERSION)
- MESSAGE(FATAL_ERROR "Sword version ${SWORD_VERSION} does not match the required ${REQUIRED_SWORD_VERSION}")
- ELSE (SWORD_VERSION)
- MESSAGE(FATAL_ERROR "Sword not found")
- ENDIF (SWORD_VERSION)
+MESSAGE(STATUS "SWORD_CFLAGS: ${SWORD_CFLAGS}")
- ENDIF (SWORD_VERSION_OK EQUAL 0)
+#
+# Sword linker flag detection
+#
+MACRO(CHECK_SWORD_LINK_LIBRARIES FLAGS)
+ TRY_COMPILE(SWLINKER_CHECK_COMPILE_RESULT
+ ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/sword_linker_check.cpp
+ CMAKE_FLAGS
+ "-DINCLUDE_DIRECTORIES:STRING=${SWORD_INCLUDE_DIR}"
+ "-DLINK_DIRECTORIES:STRING=${SWORD_LIBRARY_DIR};${CLUCENE_LIBRARY_DIR}"
+ "-DLINK_LIBRARIES:STRING=${FLAGS}"
+ OUTPUT_VARIABLE SWLINKER_CHECK_COMPILE_OUTPUT
+)
+ENDMACRO(CHECK_SWORD_LINK_LIBRARIES FLAGS)
-ENDIF (WIN32)
+#CURL_LIBRARIES and ICU_LIBRARIES are optional, empty if not found
+CHECK_SWORD_LINK_LIBRARIES("${CLUCENE_LIBRARY};${SWORD_LIBRARY};${CURL_LIBRARIES};${ICU_LIBRARIES};${ICU_I18N_LIBRARIES};${ZLIB_LIBRARIES}")
+IF(SWLINKER_CHECK_COMPILE_RESULT)
+ MESSAGE(STATUS "Sword linker check compiled ok.")
+ # SWORD_LIBRARY can stay unchanged
+ELSE(SWLINKER_CHECK_COMPILE_RESULT)
+ MESSAGE(STATUS "Sword linker check could NOT be compiled. It seems that you need additional libraries for the linker.")
+ MESSAGE(STATUS "Here is the detailed output of the compilation and linking process:")
+ MESSAGE(FATAL_ERROR "${SWLINKER_CHECK_COMPILE_OUTPUT}")
+ENDIF(SWLINKER_CHECK_COMPILE_RESULT)
-IF (MULTIVERSE_SWORD_OK EQUAL 0)
- SET (SWORD_CFLAGS "${SWORD_CFLAGS} -DSWORD_MULTIVERSE")
-ENDIF (MULTIVERSE_SWORD_OK EQUAL 0)
-IF (SIMPLE_RENDER_SWORD_OK EQUAL 0)
- SET (SWORD_CFLAGS "${SWORD_CFLAGS} -DSWORD_SIMPLERENDER")
-ENDIF (SIMPLE_RENDER_SWORD_OK EQUAL 0)
-IF (SYSCONF_CHANGED_SWORD_OK EQUAL 0)
- SET (SWORD_CFLAGS "${SWORD_CFLAGS} -DSWORD_SYSCONF_CHANGED")
-ENDIF (SYSCONF_CHANGED_SWORD_OK EQUAL 0)
-IF (INTERNET_WARNING_SWORD_OK EQUAL 0)
- SET (SWORD_CFLAGS "${SWORD_CFLAGS} -DSWORD_INTERNET_WARNING")
-ENDIF (INTERNET_WARNING_SWORD_OK EQUAL 0)
MARK_AS_ADVANCED(
SWORD_INCLUDE_DIR
- SWORD_LIBS
+ SWORD_LIBRARY
+ SWORD_LIBRARY_DIR
SWORD_CFLAGS
)
-
-MESSAGE(STATUS "SWORD_CFLAGS: ${SWORD_CFLAGS}")
diff --git a/cmake/sword_linker_check.cpp b/cmake/sword_linker_check.cpp
new file mode 100644
index 0000000..465e1cf
--- /dev/null
+++ b/cmake/sword_linker_check.cpp
@@ -0,0 +1,27 @@
+/*********
+*
+* This file is part of BibleTime's source code, http://www.bibletime.info/.
+*
+* Copyright 1999-2008 by the BibleTime developers.
+* The BibleTime source code is licensed under the GNU General Public License version 2.0.
+*
+**********/
+
+/*
+ * Use some important Sword classes to see if the linker flags work correctly
+ */
+
+#include <iostream>
+
+#include <swmgr.h>
+#include <installmgr.h>
+#include <ftptrans.h>
+
+int main(int argc, char* argv[])
+{
+ sword::SWMgr mgr;
+ sword::InstallMgr imgr;
+ sword::FTPTransport trans("example.com");
+
+ return 0;
+}
diff --git a/cmake/sword_version_compare.cpp b/cmake/sword_version_compare.cpp
new file mode 100644
index 0000000..f67a5c9
--- /dev/null
+++ b/cmake/sword_version_compare.cpp
@@ -0,0 +1,23 @@
+/*********
+*
+* This file is part of BibleTime's source code, http://www.bibletime.info/.
+*
+* Copyright 1999-2008 by the BibleTime developers.
+* The BibleTime source code is licensed under the GNU General Public License version 2.0.
+*
+**********/
+
+/*
+ * Check if Sword's current version is equal or larger than the version given to the program (first commandline argument)
+ */
+
+#include <iostream>
+
+#include <swversion.h>
+
+int main(int argc, char* argv[])
+{
+ sword::SWVersion testversion(argv[1]);
+ std::cout << "Your installed Sword version is: " << sword::SWVersion::currentVersion.getText();
+ return (sword::SWVersion::currentVersion >= testversion) ? 0 : 1;
+}