From 7a00574163029c0c2b649878c95d5acbd083564a Mon Sep 17 00:00:00 2001 From: "Roberto C. Sanchez" Date: Mon, 12 May 2014 08:21:30 -0400 Subject: Imported Upstream version 1.7.2+dfsg --- CMakeLists.txt | 115 +++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 74 insertions(+), 41 deletions(-) (limited to 'CMakeLists.txt') 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 -- cgit v1.2.3