cmake_minimum_required(VERSION 2.6)
PROJECT(minbif)

SET(CONF_NAME minbif.conf)
SET(MOTD_NAME minbif.motd)

IF(NOT MAN_PREFIX)
	SET(MAN_PREFIX ${CMAKE_INSTALL_PREFIX}/share/man/man8/)
ENDIF(NOT MAN_PREFIX)
IF(NOT CONF_PREFIX)
	SET(CONF_PREFIX ${CMAKE_INSTALL_PREFIX}/etc/minbif)
ENDIF(NOT CONF_PREFIX)
IF(NOT DOC_PREFIX)
	SET(DOC_PREFIX ${CMAKE_INSTALL_PREFIX}/share/doc/minbif)
ENDIF(NOT DOC_PREFIX)

INCLUDE(FindPkgConfig)
INCLUDE(CheckIncludeFiles)
INCLUDE(CheckLibraryExists)

PKG_CHECK_MODULES(PURPLE REQUIRED purple>=2.4)

OPTION(ENABLE_MINBIF "Enable minbif compilation" ON)
OPTION(ENABLE_PLUGIN "Enable plugin build" OFF)
OPTION(ENABLE_PAM "Enable PAM support" OFF)

IF(ENABLE_MINBIF)
	OPTION(ENABLE_CACA "Enable libcaca library" ON)
	IF(ENABLE_CACA)
		PKG_CHECK_MODULES(CACA caca>=0.99)
		PKG_CHECK_MODULES(IMLIB imlib2>=1.0)

		IF(IMLIB_FOUND AND CACA_FOUND)
			SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_CACA")
		ELSE(IMLIB_FOUND AND CACA_FOUND)
			MESSAGE(FATAL_ERROR "Unable to find the libcaca and/or imlib2 libraries. To disable caca output, run 'make ENABLE_CACA=0'")
		ENDIF(IMLIB_FOUND AND CACA_FOUND)

	ENDIF(ENABLE_CACA)

	OPTION(ENABLE_VIDEO "Enable video support" ON)
	IF(ENABLE_VIDEO)
		IF(NOT ENABLE_CACA)
			MESSAGE(FATAL_ERROR "You need to enable CACA to enable VIDEO")
		ENDIF(NOT ENABLE_CACA)
		PKG_CHECK_MODULES(GSTREAMER gstreamer-0.10>=0.10.10 gstreamer-interfaces-0.10>=0.10)
		PKG_CHECK_MODULES(FARSIGHT farsight2-0.10>=0.0.9)
		PKG_CHECK_MODULES(PURPLE_26 purple>=2.6.1)
		IF(GSTREAMER_FOUND AND PURPLE_26_FOUND AND FARSIGHT_FOUND)
			SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHAVE_VIDEO")
		ELSE(GSTREAMER_FOUND AND PURPLE_26_FOUND AND FARSIGHT_FOUND)
			MESSAGE(FATAL_ERROR "Dependencies for video were not met. Install gstreamer, farsight and libpurple>=2.6 first. Or to disable video, run 'make ENABLE_VIDEO=0'")
		ENDIF(GSTREAMER_FOUND AND PURPLE_26_FOUND AND FARSIGHT_FOUND)
	ENDIF(ENABLE_VIDEO)
ENDIF(ENABLE_MINBIF)
IF(ENABLE_PLUGIN)
	PKG_CHECK_MODULES(LIBXML REQUIRED libxml-2.0>=2.5)
ENDIF(ENABLE_PLUGIN)
IF (ENABLE_PAM)
	CHECK_INCLUDE_FILES ("security/pam_appl.h" HAVE_SECURITY_PAM_APPL_H)
	CHECK_INCLUDE_FILES ("pam/pam_appl.h" HAVE_PAM_PAM_APPL_H)
	CHECK_INCLUDE_FILES ("security/pam_misc.h" HAVE_SECURITY_PAM_MISC_H)
	CHECK_INCLUDE_FILES ("security/openpam.h" HAVE_OPENPAM_H)
	CHECK_INCLUDE_FILES ("security/pam_modules.h" HAVE_PAM_MODULES_H)

	CHECK_LIBRARY_EXISTS("pam" "pam_set_item" "" HAVE_LPAM)

	IF (HAVE_LPAM)
		IF (HAVE_SECURITY_PAM_APPL_H OR HAVE_PAM_PAM_APPL_H)
			SET(PAM_FOUND TRUE)
			SET(PAM_LDFLAGS "-lpam")
			ADD_DEFINITIONS(-DHAVE_PAM)
		ENDIF (HAVE_SECURITY_PAM_APPL_H OR HAVE_PAM_PAM_APPL_H)
	ENDIF (HAVE_LPAM)
ENDIF (ENABLE_PAM)

INCLUDE_DIRECTORIES(${PURPLE_INCLUDE_DIRS} ${CACA_INCLUDE_DIRS} ${IMLIB_INCLUDE_DIRS} ${GSTREAMER_INCLUDE_DIRS} ${FARSIGHT_INCLUDE_DIRS} ${LIBXML_INCLUDE_DIRS} "src/")
LINK_DIRECTORIES(${PURPLE_LINK_DIRS} ${CACA_LINK_DIRS} ${IMLIB_LINK_DIRS} ${GSTREAMER_LINK_DIRS} ${FARSIGHT_LINK_DIRS} ${LIBXML_LINK_DIRS})

SET(CMAKE_BUILD_TYPE ${BUILD})
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_REENTRANT -D_FILE_OFFSET_BITS=64 -Werror -Wall -Wextra -Wno-unused-parameter")
SET(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS})

IF(ENABLE_MINBIF)
	add_subdirectory(src)
ENDIF(ENABLE_MINBIF)

IF(ENABLE_PLUGIN)
	add_subdirectory(plugins)
ENDIF(ENABLE_PLUGIN)

MESSAGE(STATUS "Using compiler ${CMAKE_CXX_COMPILER}")
MESSAGE(STATUS "Build type: ${CMAKE_BUILD_TYPE}")

INSTALL(FILES man/minbif.8
	DESTINATION ${MAN_PREFIX})
INSTALL(FILES COPYING README
	DESTINATION ${DOC_PREFIX})
INSTALL(DIRECTORY doc/
	DESTINATION ${DOC_PREFIX})
INSTALL(FILES ${CONF_NAME} ${MOTD_NAME}
	DESTINATION ${CONF_PREFIX})
