summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt115
1 files changed, 74 insertions, 41 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 37dc16b..c82f15d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -15,7 +15,7 @@
# A CMake port of the SWORD build system... we hope
PROJECT(libsword CXX C)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0)
-SET(SWORD_VERSION 1.6.2)
+SET(SWORD_VERSION 1.7.2)
# Make sure it's an out-of-stream build
IF(${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
@@ -29,15 +29,19 @@ MESSAGE(STATUS "Configuring your system to build libsword.")
#
# Our include directory, for our own internally created "FIND_PACKAGE" calls, like CLucene
SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+# User options
+INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/options.cmake")
# Source variables
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/sources.cmake")
# Our local includes
-INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/include")
+INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}/include") # For swversion.h
+INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/include") # For everything else
###########################################################################################
# This will look for various libraries that libsword builds against. There is no REQUIRED
# attribute added here, since all of the libraries here are not, in actuality, required.
#
+MESSAGE(STATUS "\n-- SEARCHING FOR SYTEM PACKAGES")
# Find our packages
FIND_PACKAGE(ZLIB QUIET)
FIND_PACKAGE(ICU QUIET)
@@ -65,11 +69,17 @@ IF(LIBSWORD_LIBRARY_TYPE MATCHES ".*Shared.*" OR NOT LIBSWORD_LIBRARY_TYPE)
ADD_LIBRARY(sword SHARED ${sword_SOURCES})
MESSAGE(STATUS "Building Shared library.")
SET(BUILDING_SHARED 1)
+ SET(SWORD_LINK_NAME sword)
ENDIF(LIBSWORD_LIBRARY_TYPE MATCHES ".*Shared.*" OR NOT LIBSWORD_LIBRARY_TYPE)
IF(LIBSWORD_LIBRARY_TYPE MATCHES ".*Static.*" OR NOT LIBSWORD_LIBRARY_TYPE)
ADD_LIBRARY(sword_static STATIC ${sword_SOURCES})
+ SET_TARGET_PROPERTIES(sword_static PROPERTIES COMPILE_FLAGS "-fPIC")
SET(BUILDING_STATIC 1)
+ # Defaults to linking against the shared if it is also being built
+ IF(NOT BUILDING_SHARED)
+ SET(SWORD_LINK_NAME sword_static)
+ ENDIF(NOT BUILDING_SHARED)
# With MSVC, the .dll files also create .lib files of the same name
# with the exported symbols. Thus, we don't want the two to have the
# same exact name. In other systems, the .a and .so suffixes suffice
@@ -77,30 +87,18 @@ IF(LIBSWORD_LIBRARY_TYPE MATCHES ".*Static.*" OR NOT LIBSWORD_LIBRARY_TYPE)
IF(NOT MSVC OR NOT LIBSWORD_LIBRARY_TYPE MATCHES ".*Shared.*")
SET_TARGET_PROPERTIES(sword_static PROPERTIES
OUTPUT_NAME "sword")
- MESSAGE(STATUS "Building Static library with name sword")
+ #MESSAGE(STATUS "Building Static library with name sword")
ELSE(NOT MSVC OR NOT LIBSWORD_LIBRARY_TYPE MATCHES ".*Shared.*")
- MESSAGE(STATUS "Building Static library with name
- sword_static")
+ #MESSAGE(STATUS "Building Static library with name
+ #sword_static")
ENDIF(NOT MSVC OR NOT LIBSWORD_LIBRARY_TYPE MATCHES ".*Shared.*")
+ MESSAGE(STATUS "Building Static library.")
ENDIF(LIBSWORD_LIBRARY_TYPE MATCHES ".*Static.*" OR NOT LIBSWORD_LIBRARY_TYPE)
################################################################################################
# Some random user settings
#
-IF(SWORD_ENABLE_PROFILE STREQUAL "Yes")
- SET_TARGET_PROPERTIES(sword
- PROPERTIES COMPILE_FLAGS "-pg"
- )
-ENDIF(SWORD_ENABLE_PROFILE STREQUAL "Yes")
-
-IF(SWORD_ENABLE_PROFILEFN STREQUAL "Yes")
- SET_TARGET_PROPERTIES(sword
- PROPERTIES COMPILE_FLAGS "-g -finstrument-functions"
- )
- TARGET_LINK_LIBRARIES(libsword fnccheck)
-ENDIF(SWORD_ENABLE_PROFILEFN STREQUAL "Yes")
-
IF(NOT SWORD_GLOBAL_CONF_DIR STREQUAL "")
ADD_DEFINITIONS(-DGLOBCONFPATH="${SWORD_GLOBAL_CONF_DIR}/sword.conf")
ENDIF(NOT SWORD_GLOBAL_CONF_DIR STREQUAL "")
@@ -123,33 +121,41 @@ IF(BUILDING_SHARED)
ENDIF(BUILDING_SHARED)
###############################################################################################
-# Some options are only needed if we're going to be building a debug option into the library
-# These are generally only for developer building and testing
+# The buildflags depend on the CMAKE_BUILD_TYPE supplied at the command line.
+# For a full lists of different flags see http://cmake.org/Wiki/CMake_Useful_Variables
+#
+# Cmake has sane defaults for None aka '', DEBUG, RELEASE, RELWITHDEBINFO for known compilers.
+#
+# You can override these variables on the command-line or here.
+# We provide our own defaults below
#
-# Debug testing
-IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
- SET(SWORD_CFLAGS "-g3 -Wall -Werror -O0")
-ELSE(CMAKE_BUILD_TYPE STREQUAL "Debug")
- SET(SWORD_CFLAGS "-O3")
-ENDIF(CMAKE_BUILD_TYPE STREQUAL "Debug")
+# Note the below two initialisations done for us by cmake:
+#
+#SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" or "$ENV{CFLAGS}" or "" )
+#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" or "$ENV{CXXFLAGS}" or "" )
IF(SWORD_ENABLE_WARNINGS STREQUAL "Yes")
- SET(SWORD_CFLAGS "${SWORD_CFLAGS} -Werror")
+ SET(CMAKE_C_FLAGS "-Werror ${CMAKE_C_FLAGS}")
+ SET(CMAKE_CXX_FLAGS "-Werror ${CMAKE_CXX_FLAGS}")
ENDIF(SWORD_ENABLE_WARNINGS STREQUAL "Yes")
-IF(BUILDING_SHARED)
- SET_TARGET_PROPERTIES(sword
- PROPERTIES COMPILE_FLAGS ${SWORD_CFLAGS}
- )
-ENDIF(BUILDING_SHARED)
+IF(SWORD_ENABLE_PROFILE STREQUAL "Yes")
+ SET(CMAKE_C_FLAGS "-pg ${CMAKE_C_FLAGS}")
+ SET(CMAKE_CXX_FLAGS "-pg ${CMAKE_CXX_FLAGS}")
+ENDIF(SWORD_ENABLE_PROFILE STREQUAL "Yes")
-IF(BUILDING_STATIC)
- SET_TARGET_PROPERTIES(sword_static
- PROPERTIES COMPILE_FLAGS ${SWORD_CFLAGS}
- )
-ENDIF(BUILDING_STATIC)
+IF(SWORD_ENABLE_PROFILEFN STREQUAL "Yes")
+ SET(CMAKE_C_FLAGS "-g -finstrument-functions ${CMAKE_C_FLAGS}")
+ SET(CMAKE_CXX_FLAGS "-g -finstrument-functions ${CMAKE_CXX_FLAGS}")
+ TARGET_LINK_LIBRARIES(libsword fnccheck)
+ENDIF(SWORD_ENABLE_PROFILEFN STREQUAL "Yes")
-MESSAGE(STATUS "Setting CFlags for compile to ${SWORD_CFLAGS}")
+SET(CMAKE_C_FLAGS_DEBUG "-g3 -Wall -O0 ${CMAKE_C_FLAGS}")
+SET(CMAKE_C_FLAGS_RELEASE "-O3 ${CMAKE_C_FLAGS}")
+SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -g ${CMAKE_C_FLAGS}")
+SET(CMAKE_CXX_FLAGS_DEBUG "-g3 -Wall -O0 ${CMAKE_CXX_FLAGS}")
+SET(CMAKE_CXX_FLAGS_RELEASE "-O3 ${CMAKE_CXX_FLAGS}")
+SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g ${CMAKE_CXX_FLAGS}")
##############################################################################################
# Setting libraries and includes
@@ -160,6 +166,25 @@ IF(WITH_ZLIB)
SET(SWORD_LINK_LIBRARIES ${SWORD_LINK_LIBRARIES} ${ZLIB_LIBRARY})
ENDIF(WITH_ZLIB)
IF(WITH_CURL)
+ FIND_PROGRAM(CURL_CONFIG curl-config
+ DOC "The curl-config executable path, used to determine SFTP support.")
+ # If we can find the config script, we will run it and attempt to parse out the
+ # availability of SFTP support. Otherwise, we will assume the library was built
+ # without it.
+ IF(CURL_CONFIG)
+ EXECUTE_PROCESS(
+ COMMAND ${CURL_CONFIG} --protocols
+ COMMAND grep SFTP
+ COMMAND wc -l
+ OUTPUT_VARIABLE CURL_CONFIG_OUTPUT
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ IF(CURL_CONFIG_OUTPUT STREQUAL "1")
+ ADD_DEFINITIONS(-DCURLSFTPAVAILABLE)
+ MESSAGE(STATUS "cURL SFTP Support: Yes")
+ ELSE(CURL_CONFIG_OUTPUT STREQUAL "1")
+ MESSAGE(STATUS "cURL SFTP Support: No")
+ ENDIF(CURL_CONFIG_OUTPUT STREQUAL "1")
+ ENDIF(CURL_CONFIG)
INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS})
SET(SWORD_LINK_LIBRARIES ${SWORD_LINK_LIBRARIES} ${CURL_LIBRARY})
ENDIF(WITH_CURL)
@@ -167,11 +192,19 @@ IF(WITH_CLUCENE)
INCLUDE_DIRECTORIES(${CLUCENE_INCLUDE_DIR})
SET(SWORD_LINK_LIBRARIES ${SWORD_LINK_LIBRARIES} ${CLUCENE_LIBRARY})
LINK_DIRECTORIES(${CLUCENE_LIBRARY_DIR})
+ ADD_DEFINITIONS(-DUSELUCENE)
+ IF(CLUCENE2)
+ ADD_DEFINITIONS(-DCLUCENE2)
+ ENDIF(CLUCENE2)
ENDIF(WITH_CLUCENE)
IF(WITH_ICU)
INCLUDE_DIRECTORIES(${ICU_INCLUDE_DIRS})
+ ADD_DEFINITIONS(${ICU_DEFINITIONS})
SET(SWORD_LINK_LIBRARIES ${SWORD_LINK_LIBRARIES} ${ICU_LIBRARIES} ${ICU_I18N_LIBRARIES})
ENDIF(WITH_ICU)
+IF(REGEX_FOUND AND CROSS_COMPILE_MINGW32)
+ SET(SWORD_LINK_LIBRARIES ${SWORD_LINK_LIBRARIES} ${REGEX_LIBRARY})
+ENDIF(REGEX_FOUND AND CROSS_COMPILE_MINGW32)
IF(BUILDING_SHARED)
TARGET_LINK_LIBRARIES(sword ${SWORD_LINK_LIBRARIES})
@@ -219,9 +252,9 @@ INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/install.cmake")
# Bindings are good, right?
#
-IF(NOT SWORD_BINDINGS STREQUAL "")
- INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/bindings.cmake")
-ENDIF(NOT SWORD_BINDINGS STREQUAL "")
+IF(NOT SWORD_BINDINGS STREQUAL "" AND SWORD_BINDINGS)
+ ADD_SUBDIRECTORY("${CMAKE_CURRENT_SOURCE_DIR}/bindings")
+ENDIF(NOT SWORD_BINDINGS STREQUAL "" AND SWORD_BINDINGS)
##############################################################################################
# Utilities are hawt