PROJECT(Qsmtp C) CMAKE_MINIMUM_REQUIRED(VERSION 2.4) SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules") INCLUDE(CheckCCompilerFlag) FIND_PACKAGE(owfat REQUIRED) IF (COMMAND cmake_policy) CMAKE_POLICY(SET CMP0003 NEW) ENDIF (COMMAND cmake_policy) SET(AUTOQMAIL /var/qmail) SET(QSMTP_VERSION_MAJOR 0) SET(QSMTP_VERSION_MINOR 14) SET(QSMTP_VERSION_EXTRAVERSION) FIND_PACKAGE(OpenSSL REQUIRED) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/include/version.h.tmpl ${CMAKE_BINARY_DIR}/version.h @ONLY) CHECK_C_COMPILER_FLAG(-Wno-sign-compare CFLAG_NO_SIGN_COMPARE) CHECK_C_COMPILER_FLAG(-Wno-pointer-sign CFLAGS_NO_POINTER_SIGN) ADD_DEFINITIONS(-Wall -W -Wshadow -D_FILE_OFFSET_BITS=64) IF (CFLAG_NO_SIGN_COMPARE) ADD_DEFINITIONS(-Wno-sign-compare) ENDIF (CFLAG_NO_SIGN_COMPARE) IF (CFLAG_NO_POINTER_SIGN) ADD_DEFINITIONS(-Wno-pointer-sign) ENDIF (CFLAG_NO_POINTER_SIGN) OPTION(NOSTDERR "Do not print error messages to stderr" ON) IF(NOSTDERR) ADD_DEFINITIONS(-DNOSTDERR) ENDIF(NOSTDERR) OPTION(USESYSLOG "Use syslog() for logging" ON) IF(USESYSLOG) ADD_DEFINITIONS(-DUSESYSLOG) ENDIF(USESYSLOG) OPTION(IPV4ONLY "Disable support for IPv6 connections" OFF) IF(IPV4ONLY) ADD_DEFINITIONS(-DIPV4ONLY) ENDIF(IPV4ONLY) OPTION(CHUNKING "Enable CHUNKING extension (RfC 3030)" OFF) IF(CHUNKING) ADD_DEFINITIONS(-DCHUNKING) ENDIF(CHUNKING) OPTION(DEBUG_IO "Log the SMTP session" OFF) IF(DEBUG_IO) ADD_DEFINITIONS(-DDEBUG_IO) ENDIF(DEBUG_IO) OPTION(AUTHCRAM "Support CRAMMD5 authentication method" OFF) IF(AUTHCRAM) ADD_DEFINITIONS(-DAUTHCRAM) ENDIF(AUTHCRAM) INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}/include ${OPENSSL_INCLUDE_DIR} ${CMAKE_BINARY_DIR} ) ADD_SUBDIRECTORY(lib) ADD_SUBDIRECTORY(qsmtpd) ADD_SUBDIRECTORY(qremote) ADD_SUBDIRECTORY(tools) INCLUDE(CTest) ENABLE_TESTING() ADD_SUBDIRECTORY(tests) OPTION(BUILD_DOC "Build documentation" ON) IF (BUILD_DOC) # API documentation INCLUDE(FindDoxygen REQUIRED) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @Only) ADD_CUSTOM_TARGET(docu ALL COMMAND ${DOXYGEN_EXECUTABLE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) IF (NOT DOC_DESTINATION_DIRECTORY) SET(DOC_DESTINATION_DIRECTORY "doc/") ENDIF (NOT DOC_DESTINATION_DIRECTORY) INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION ${DOC_DESTINATION_DIRECTORY}) # general documentation INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/CREDITS ${CMAKE_CURRENT_SOURCE_DIR}/doc/INSTALL ${CMAKE_CURRENT_SOURCE_DIR}/doc/THOUGHTS ${CMAKE_CURRENT_SOURCE_DIR}/doc/faq.html DESTINATION ${DOC_DESTINATION_DIRECTORY}) # man pages CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/doc/man/Qremote.8 ${CMAKE_CURRENT_BINARY_DIR}/Qremote.8 @ONLY) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/doc/man/Qsmtpd.8 ${CMAKE_CURRENT_BINARY_DIR}/Qsmtpd.8 @ONLY) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/doc/man/filterconf.5 ${CMAKE_CURRENT_BINARY_DIR}/filterconf.5 @ONLY) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/Qremote.8 ${CMAKE_CURRENT_BINARY_DIR}/Qsmtpd.8 DESTINATION man/man8) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/filterconf.5 DESTINATION man/man5) ENDIF (BUILD_DOC)