Files
bongo/cmake/Requirements.cmake
T

136 lines
4.3 KiB
CMake

# include here the requirements to build Bongo
# anything which isn't necessary should be marked [optional]
include(CheckIncludeFile)
include(CheckLibraryExists)
include(FindPkgConfig)
# look for header files we need first
check_include_file(inttypes.h HAVE_INTTYPES_H)
check_include_file(sys/kstat.h HAVE_KSTAT_H)
check_include_file(sys/vfs.h HAVE_SYS_VFS_H)
check_include_file(sys/stat.h HAVE_SYS_STAT_H)
check_include_file(sys/statvfs.h HAVE_SYS_STATVFS_H)
check_include_file(time.h HAVE_TIME_H)
check_include_file(semaphore.h HAVE_SEMAPHORE_H)
# look for zlib
find_library(HAVE_ZLIB NAMES z zlib)
if (NOT HAVE_ZLIB)
message(FATAL_ERROR "Bongo requires zlib")
endif (NOT HAVE_ZLIB)
# look for PThreads
include(FindThreads)
if (NOT CMAKE_USE_PTHREADS_INIT)
message(FATAL_ERROR "Bongo requires a platform with PThreads")
endif (NOT CMAKE_USE_PTHREADS_INIT)
# check for LDAP [optional]
check_include_file(ldap.h HAVE_LDAP_H)
if (HAVE_LDAP_H)
check_library_exists(ldap ldap_init "" HAVE_LDAP)
endif (HAVE_LDAP_H)
# check for ODBC [optional]
check_include_file(odbcinst.h HAVE_ODBCINST_H)
if (HAVE_ODBCINST_H)
check_library_exists(odbc SQLConnect "" HAVE_ODBC)
endif (HAVE_ODBCINST_H)
# check for resolv
#check_library_exists(resolv res_init "" HAVE_RESOLV)
#if (NOT HAVE_RESOLV)
# message(FATAL_ERROR "Cannot find resolv library")
#endif (NOT HAVE_RESOLV)
# check for gettext
check_include_file(libintl.h HAVE_LIBINTL_H)
include (FindGettext)
if (NOT GETTEXT_FOUND)
message(FATAL_ERROR "Bongo needs Gettext developer support available")
endif (NOT GETTEXT_FOUND)
check_include_file(kstat.h HAVE_KSTAT_H)
# check for log4c
include(cmake/FindLog4C.cmake)
include_directories(AFTER ${CMAKE_CURRENT_SOURCE_DIR}/import/log4c/)
# check for glib
pkg_check_modules (GLIB2 REQUIRED glib-2.0>=2.10)
include_directories(AFTER ${GLIB2_INCLUDE_DIRS})
# check for GMime
pkg_search_module (GMIME2 REQUIRED gmime-2.6 gmime-2.4 gmime-2.2 gmime-2.0 gmime)
include_directories(AFTER ${GMIME2_INCLUDE_DIRS})
# check for gcrypt
check_library_exists(gcrypt gcry_control "" HAVE_GCRYPT)
if (HAVE_GCRYPT)
set(GCRYPT_LIBRARIES "gcrypt")
else (HAVE_GCRYPT)
message(FATAL_ERROR "Bongo couldn't find the libgcrypt runtime library")
endif (HAVE_GCRYPT)
# check for gnutls
pkg_check_modules (GNUTLS REQUIRED gnutls)
# check for sqlite3
pkg_check_modules (SQLITE REQUIRED sqlite3)
# check for curl
pkg_check_modules (CURL REQUIRED libcurl)
# check for libical
check_include_file(libical/ical.h HAVE_ICAL_H)
if (NOT HAVE_ICAL_H)
check_include_file(ical.h HAVE_OLD_ICAL_H)
if (NOT HAVE_OLD_ICAL_H)
message(FATAL_ERROR "Bongo needs libical in order to compile")
endif (NOT HAVE_OLD_ICAL_H)
endif (NOT HAVE_ICAL_H)
check_library_exists(ical icaltime_compare "" HAVE_ICAL)
if (HAVE_ICAL)
set(LIBICAL_LIBRARIES "ical")
else (HAVE_ICAL)
message(FATAL_ERROR "Bongo couldn't find the libical runtime library")
endif (HAVE_ICAL)
# check for Python
include(FindPythonLibs)
if (NOT PYTHONLIBS_FOUND)
message(FATAL_ERROR "Bongo requires Python development libraries installed")
endif (NOT PYTHONLIBS_FOUND)
execute_process(COMMAND python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
RESULT_VARIABLE PYTHON_SITEPACKAGES_FOUND
OUTPUT_VARIABLE PYTHON_SITEPACKAGES_PATH_RAW
)
string(STRIP "${PYTHON_SITEPACKAGES_PATH_RAW}" PYTHON_SITEPACKAGES_PATH_RAW)
execute_process(COMMAND python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)"
RESULT_VARIABLE PYTHON_SITELIB_FOUND
OUTPUT_VARIABLE PYTHON_SITELIB_PATH_RAW
)
string(STRIP "${PYTHON_SITELIB_PATH_RAW}" PYTHON_SITELIB_PATH_RAW)
string(LENGTH "${CMAKE_INSTALL_PREFIX}" CMAKE_INSTALL_PREFIX_LEN)
string(SUBSTRING "${PYTHON_SITEPACKAGES_PATH_RAW}" 0 ${CMAKE_INSTALL_PREFIX_LEN} PYTHON_SITEPACKAGES_PATH_RAW_PREFIX)
if (PYTHON_SITEPACKAGES_FOUND EQUAL 0)
if (PYTHON_SITEPACKAGES_PATH_RAW_PREFIX STREQUAL CMAKE_INSTALL_PREFIX)
set(PYTHON_SITEPACKAGES_PATH "${PYTHON_SITEPACKAGES_PATH_RAW}")
set(PYTHON_SITELIB_PATH "${PYTHON_SITELIB_PATH_RAW}")
else ()
set(PYTHON_SITEPACKAGES_PATH "${CMAKE_INSTALL_PREFIX}/${PYTHON_SITEPACKAGES_PATH_RAW}")
set(PYTHON_SITELIB_PATH "${CMAKE_INSTALL_PREFIX}/${PYTHON_SITELIB_PATH_RAW}")
endif ()
else (PYTHON_SITEPACKAGES_FOUND EQUAL 0)
message(FATAL_ERROR "Couldn't determine where to install Python modules")
endif (PYTHON_SITEPACKAGES_FOUND EQUAL 0)
# check for Doxygen [optional]
include(FindDoxygen)