summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt87
1 files changed, 62 insertions, 25 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 40e615a..5cbd06a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,21 +1,20 @@
# TODO: write FindICU (icu-config only for 2.2 and up) -- currently taken from another CMake system
# limit pkg-config version to >= 0.14, demo, utilities, doc, tests
+# use BUILD_SHARED_LIBS
+# convince perl swig bindings to build properly
#
# NOTES: Defaults to build type of Shared
# Forces out-of-source tree build
-#
+#
#
# This file started on 18 January 2010 by Gregory Hellings
# It is ceded to The SWORD Library developers and CrossWire under the terms
# of their own GPLv2 license and all copyright is transferred to them for
# all posterity and eternity, wherever such transfer is possible. Where it is
# not, then this file is released under the GPLv2 by myself.
-#
-#
-# 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.7.3)
+SET(SWORD_VERSION 1.8.1)
# Make sure it's an out-of-stream build
IF(${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
@@ -33,9 +32,15 @@ SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/options.cmake")
# Source variables
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/sources.cmake")
+# Cppcheck
+INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/CppcheckTargets.cmake")
# Our local includes
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}/include") # For swversion.h
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/include") # For everything else
+IF(MSVC)
+ INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/src/utilfuns/win32/")
+ ADD_DEFINITIONS(-DWIN32 -D_ICUSWORD_ -D_LIB -DREGEX_MALLOC -DSWMAKINGDLL -D_CRT_SECURE_NO_WARNINGS -DCURL_STATICLIB -DUSBINARY -D_CRT_SECURE_NO_DEPRECATE)
+ENDIF(MSVC)
###########################################################################################
# This will look for various libraries that libsword builds against. There is no REQUIRED
@@ -43,10 +48,19 @@ INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/include") # For everything else
#
MESSAGE(STATUS "\n-- SEARCHING FOR SYTEM PACKAGES")
# Find our packages
-FIND_PACKAGE(ZLIB QUIET)
-FIND_PACKAGE(ICU QUIET)
-FIND_PACKAGE(CURL QUIET)
+IF(MSVC)
+ FIND_PACKAGE(BZIP2 REQUIRED)
+ FIND_PACKAGE(XZ REQUIRED)
+ FIND_PACKAGE(ICU REQUIRED)
+ FIND_PACKAGE(CURL REQUIRED)
+ELSE(MSVC)
+ FIND_PACKAGE(BZIP2 QUIET)
+ FIND_PACKAGE(XZ QUIET)
+ FIND_PACKAGE(ICU QUIET)
+ FIND_PACKAGE(CURL QUIET)
+ENDIF(MSVC)
FIND_PACKAGE(CLucene QUIET)
+FIND_PACKAGE(ZLIB QUIET)
FIND_PACKAGE(PkgConfig QUIET)
FIND_PACKAGE(Regex QUIET)
@@ -65,8 +79,12 @@ INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/muxsources.cmake)
# Most of the work for configuration is done above, already.
#
# I want to do this manually, there might be reason in the future
+SET(CPPCHECK_POSSIBLEERROR_ARG "--enable=all")
IF(LIBSWORD_LIBRARY_TYPE MATCHES ".*Shared.*" OR NOT LIBSWORD_LIBRARY_TYPE)
ADD_LIBRARY(sword SHARED ${sword_SOURCES})
+ ADD_CPPCHECK(sword
+ POSSIBLE_ERROR TRUE
+ FORCE TRUE)
MESSAGE(STATUS "Building Shared library.")
SET(BUILDING_SHARED 1)
SET(SWORD_LINK_NAME sword)
@@ -74,6 +92,9 @@ 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})
+ ADD_CPPCHECK(sword_static
+ POSSIBLE_ERROR TRUE
+ FORCE TRUE)
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
@@ -85,7 +106,7 @@ IF(LIBSWORD_LIBRARY_TYPE MATCHES ".*Static.*" OR NOT LIBSWORD_LIBRARY_TYPE)
# same exact name. In other systems, the .a and .so suffixes suffice
# to keep them separate
IF(NOT MSVC OR NOT LIBSWORD_LIBRARY_TYPE MATCHES ".*Shared.*")
- SET_TARGET_PROPERTIES(sword_static PROPERTIES
+ SET_TARGET_PROPERTIES(sword_static PROPERTIES
OUTPUT_NAME "sword")
#MESSAGE(STATUS "Building Static library with name sword")
ELSE(NOT MSVC OR NOT LIBSWORD_LIBRARY_TYPE MATCHES ".*Shared.*")
@@ -98,10 +119,10 @@ ENDIF(LIBSWORD_LIBRARY_TYPE MATCHES ".*Static.*" OR NOT LIBSWORD_LIBRARY_TYPE)
################################################################################################
# Some random user settings
#
-
-IF(NOT SWORD_GLOBAL_CONF_DIR STREQUAL "")
- ADD_DEFINITIONS(-DGLOBCONFPATH="${SWORD_GLOBAL_CONF_DIR}/sword.conf")
-ENDIF(NOT SWORD_GLOBAL_CONF_DIR STREQUAL "")
+ADD_DEFINITIONS(-DGLOBCONFPATH="${SYSCONF_INSTALL_DIR}/sword.conf")
+SET(CONFFILE "[Install]
+DataPath=${SHARE_INSTALL_PREFIX}/sword")
+FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/sword.conf" "${CONFFILE}")
###############################################################################################
@@ -150,13 +171,21 @@ IF(SWORD_ENABLE_PROFILEFN STREQUAL "Yes")
TARGET_LINK_LIBRARIES(libsword fnccheck)
ENDIF(SWORD_ENABLE_PROFILEFN STREQUAL "Yes")
-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}")
-
+IF(MSVC)
+ SET(CMAKE_C_FLAGS_DEBUG "/D /O0 /DDEBUG ${CMAKE_C_FLAGS}")
+ SET(CMAKE_C_FLAGS_RELEASE "/O3 /DNDEBUG ${CMAKE_C_FLAGS}")
+ SET(CMAKE_C_FLAGS_RELWITHDEBINFO "/O3 /D /DDEBUG ${CMAKE_C_FLAGS}")
+ SET(CMAKE_CXX_FLAGS_DEBUG "/D /O0 /DDEBUG ${CMAKE_CXX_FLAGS}")
+ SET(CMAKE_CXX_FLAGS_RELEASE "/O3 ${CMAKE_CXX_FLAGS}")
+ SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O3 /D /DDEBUG ${CMAKE_CXX_FLAGS}")
+ELSE(MSVC)
+ 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}")
+ENDIF(MSVC)
##############################################################################################
# Setting libraries and includes
#
@@ -165,6 +194,14 @@ IF(WITH_ZLIB)
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
SET(SWORD_LINK_LIBRARIES ${SWORD_LINK_LIBRARIES} ${ZLIB_LIBRARY})
ENDIF(WITH_ZLIB)
+IF(WITH_BZIP2)
+ INCLUDE_DIRECTORIES(${BZIP2_INCLUDE_DIR})
+ SET(SWORD_LINK_LIBRARIES ${SWORD_LINK_LIBRARIES} ${BZIP2_LIBRARY})
+ENDIF(WITH_BZIP2)
+IF(WITH_XZ)
+ INCLUDE_DIRECTORIES(${XZ_INCLUDE_DIR})
+ SET(SWORD_LINK_LIBRARIES ${SWORD_LINK_LIBRARIES} ${XZ_LIBRARY})
+ENDIF(WITH_XZ)
IF(WITH_CURL)
FIND_PROGRAM(CURL_CONFIG curl-config
DOC "The curl-config executable path, used to determine SFTP support.")
@@ -190,7 +227,7 @@ IF(WITH_CURL)
ENDIF(WITH_CURL)
IF(WITH_CLUCENE)
INCLUDE_DIRECTORIES(${CLUCENE_INCLUDE_DIR})
- SET(SWORD_LINK_LIBRARIES ${SWORD_LINK_LIBRARIES} ${CLUCENE_LIBRARY} -lclucene-shared)
+ SET(SWORD_LINK_LIBRARIES ${SWORD_LINK_LIBRARIES} ${CLUCENE_LIBRARY})
LINK_DIRECTORIES(${CLUCENE_LIBRARY_DIR})
ADD_DEFINITIONS(-DUSELUCENE)
IF(CLUCENE2)
@@ -226,7 +263,7 @@ ADD_DEFINITIONS(-D_FTPLIB_NO_COMPAT)
#############################################################################################
# Platform-specifc bits that I will eventually refactor out into their own files, once I am happy
# with the stuff that is here.
-#
+#
IF(APPLE OR iPhone)
ADD_DEFINITIONS(-Dunix)
ENDIF(APPLE OR iPhone)
@@ -244,7 +281,7 @@ ENDIF(BUILDING_STATIC)
##############################################################################################
# Installing the library, headers, utilies, etc
-#
+#
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/install.cmake")
@@ -258,7 +295,7 @@ ENDIF(NOT SWORD_BINDINGS STREQUAL "" AND SWORD_BINDINGS)
##############################################################################################
# Utilities are hawt
-#
+#
IF(NOT SWORD_BUILD_UTILS STREQUAL "No")
ADD_SUBDIRECTORY("${CMAKE_CURRENT_SOURCE_DIR}/utilities")
@@ -266,7 +303,7 @@ ENDIF(NOT SWORD_BUILD_UTILS STREQUAL "No")
##############################################################################################
# Demos are also hawt
-#
+#
IF(SWORD_BUILD_EXAMPLES STREQUAL "Yes")
ADD_SUBDIRECTORY("${CMAKE_CURRENT_SOURCE_DIR}/examples/cmdline")