CMAKE_MINIMUM_REQUIRED(VERSION 3.7)
project(purplemm)
set(PURPLEMM_NAME "purplemm")
set(PURPLEMM_VERSION_STRING "1.0.0")

option(BUILD_TEST "Build purplemmtest" FALSE)

set(ENABLE_NLS FALSE)

find_package(PkgConfig)
if(PKG_CONFIG_FOUND)
    pkg_check_modules(PURPLE purple>=2.8.0)
    include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${PURPLE_INCLUDE_DIRS})
    list(APPEND PURPLE_LIBRARIES)
    set(ENABLE_NLS TRUE)
endif(PKG_CONFIG_FOUND)

if(NOT PURPLE_FOUND)
    set(PURPLE_INCLUDE_DIR "" CACHE PATH "Path to libpurple include dir")
    set(PURPLE_LIBRARY "" CACHE FILEPATH "Filepath to libpurple library")
    set(GLIB_INCLUDE_DIR "" CACHE PATH "Path to glib-2.0 include dir")
    set(GLIB_CONFIG_INCLUDE_DIR "" CACHE PATH "Path to glibconfig.h file for glib-2.0")
    set(GLIB_LIBRARY "" CACHE FILEPATH "Filepath to glib-2.0 library")
    set(INTL_INCLUDE_DIR "" CACHE PATH "Path to libintl include dir")
    set(INTL_LIBRARY "" CACHE FILEPATH "Filepath to libintl library")
    if(PURPLE_INCLUDE_DIR AND PURPLE_LIBRARY AND GLIB_INCLUDE_DIR AND GLIB_CONFIG_INCLUDE_DIR AND GLIB_LIBRARY)
        set(PURPLE_FOUND true)
        message(STATUS "Libpurple set manually. Can build purplemm")
    endif()
    if(INTL_INCLUDE_DIR AND INTL_LIBRARY)
        set(ENABLE_NLS TRUE)
    endif()
    include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${PURPLE_INCLUDE_DIR} ${GLIB_INCLUDE_DIR} ${GLIB_CONFIG_INCLUDE_DIR} ${INTL_INCLUDE_DIR})
    list(APPEND PURPLE_LIBRARIES ${PURPLE_LIBRARY} ${GLIB_LIBRARY} ${INTL_LIBRARY})
endif()

if(NOT PURPLE_FOUND)
    message(FATAL_ERROR "Libpurple not found. Can't build purplemm")
endif()

get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
set(PURPLEMM_LIBRARIES purplemm ${PURPLE_LIBRARIES} CACHE INTERNAL "")
set(PURPLEMM_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src" ${dirs} CACHE INTERNAL "")

if(ENABLE_NLS)
    if(NOT WIN32)
        add_definitions(-DLOCALEDIR="${CMAKE_INSTALL_PREFIX}/share/locale")
    else()
        add_definitions(-DLOCALEDIR="./locale")
    endif(NOT WIN32)
endif(ENABLE_NLS)

set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)")

add_subdirectory(src)
if(BUILD_TEST)
    add_subdirectory(test)
endif(BUILD_TEST)

if(NOT WIN32)

# Source distribution
set(ARCHIVE_NAME libpurplemm-1.00.0)
add_custom_target(purplemm-dist COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR} &&
    rm -rf ${ARCHIVE_NAME} &&
    svn export . ${ARCHIVE_NAME} &&
    tar czf ${ARCHIVE_NAME}.tar.gz ${ARCHIVE_NAME} &&
    rm -rf ${ARCHIVE_NAME}
)

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpurplemm.pc.cmake
               ${CMAKE_CURRENT_BINARY_DIR}/libpurplemm.pc
               @ONLY )
    if(NOT PURPLEMM_STATIC)
        install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpurplemm.pc
            DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig
            COMPONENT Devel)
    endif(NOT PURPLEMM_STATIC)
endif(NOT WIN32)

# uninstall target
configure_file(
    ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/uninstall.cmake.in
    ${CMAKE_CURRENT_BINARY_DIR}/cmake/uninstall.cmake
    IMMEDIATE @ONLY)
add_custom_target(uninstall-purplemm
    ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake/uninstall.cmake)
