CMAKE_MINIMUM_REQUIRED(VERSION 3.7)
project(dxim-fox)
set(PROJECT_VERSION "1.00.svn")

set(DXIMFOX_LIBS "")
set(DXIMFOX_INCLUDE_DIRS "")

if(NOT APPLE)
    option(FOX_HAVE_TRAY "Enable trayicon" TRUE)
endif(NOT APPLE)

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")

list(APPEND DXIMFOX_LIBS ${PURPLEMM_LIBRARIES})
list(APPEND DXIMFOX_INCLUDE_DIRS ${PURPLEMM_INCLUDE_DIRS})

if(PKG_CONFIG_FOUND)
    pkg_check_modules(FOX fox)
    pkg_check_modules(GTHREAD gthread-2.0)
    list(APPEND DXIMFOX_LIBS ${FOX_LIBRARIES} ${GTHREAD_LIBRARIES})
    list(APPEND DXIMFOX_INCLUDE_DIRS ${FOX_INCLUDE_DIRS} ${GTHREAD_INCLUDE_DIRS})
endif(PKG_CONFIG_FOUND)

if(NOT FOX_FOUND)
    set(FOX_INCLUDE_DIR "" CACHE PATH "Path to fox include dir")
    set(FOX_LIBRARY "" CACHE FILEPATH "Filepath to fox library")
    set(PNG_INCLUDE_DIR "" CACHE PATH "Path to png include dir")
    set(PNG_LIBRARY "" CACHE FILEPATH "Filepath to png library")
    set(GTHREAD_INCLUDE_DIR "" CACHE PATH "Path to gthread include dir")
    set(GTHREAD_LIBRARY "" CACHE FILEPATH "Filepath to gthread library")
    if(FOX_INCLUDE_DIR AND PNG_INCLUDE_DIR AND GTHREAD_INCLUDE_DIR)
        set(FOX_FOUND true)
        list(APPEND DXIMFOX_LIBS ${FOX_LIBRARY} ${PNG_LIBRARY} ${GTHREAD_LIBRARY})
        list(APPEND DXIMFOX_INCLUDE_DIRS ${FOX_INCLUDE_DIR} ${PNG_INCLUDE_DIR} ${GTHREAD_INCLUDE_DIR})
    endif()
endif()

if(NOT FOX_FOUND)
    message("Fox library not found. Can't build dxim")
    return()
endif()

if(ENABLE_NLS)
    list(APPEND DXIMQT_LIBS ${Intl_LIBRARIES})
    list(APPEND DXIMQT_INCLUDE_DIRS ${Intl_INCLUDE_DIRS})
endif()

if(UNIX)
    if(PKG_CONFIG_FOUND)
        pkg_check_modules(X11 REQUIRED x11)
        list(APPEND DXIMFOX_LIBS ${X11_LIBRARIES})
        list(APPEND DXIMFOX_INCLUDE_DIRS ${X11_INCLUDE_DIRS})
        pkg_check_modules(XSS xscrnsaver)
        if(XSS_FOUND)
            set(USE_SCREENSAVER ON)
            list(APPEND DXIMFOX_LIBS ${XSS_LIBRARIES})
            list(APPEND DXIMFOX_INCLUDE_DIRS ${XSS_INCLUDE_DIRS})
        else(XSS_FOUND)
            message(STATUS "Warning: libxss not found, idle detection won't be accurate")
        endif(XSS_FOUND)
    endif(PKG_CONFIG_FOUND)
endif(UNIX)

if(WIN32)
    list(APPEND DXIMFOX_LIBS "winmm")
endif(WIN32)

if(NOT APPLE)
    set(HAVE_TRAY ${FOX_HAVE_TRAY})
else(NOT APPLE)
    set(HAVE_TRAY false)
endif(NOT APPLE)

configure_file(config.h.cmake
               ${CMAKE_CURRENT_BINARY_DIR}/config.h
)
list(APPEND DXIMFOX_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR})

add_definitions(-DHAVE_CONFIG_H)
if(WIN32)
add_definitions(-DFOXDLL)
add_definitions(-DUNICODE)
add_definitions(-D_UNICODE)
add_definitions(-DWIN32)
endif(WIN32)

SET(SOURCES
dxim.cpp
dxmessagechannel.cpp
dxpipe.cpp
dxtext.cpp
dxtextfield.cpp
fxext.cpp
icons.cpp
preferences.cpp
dxutils.cpp
../logger/logger.cpp
callback/callback.cpp
dialogs/aboutdialog.cpp
dialogs/accountdialog.cpp
dialogs/accounteditor.cpp
dialogs/actionrequestdialog.cpp
dialogs/chatdialog.cpp
dialogs/chatjoindialog.cpp
dialogs/choicerequestdialog.cpp
dialogs/configdialog.cpp
dialogs/fieldsrequestdialog.cpp
dialogs/ftdialog.cpp
dialogs/imdialog.cpp
dialogs/inputrequestdialog.cpp
dialogs/keybindingsdialog.cpp
dialogs/logviewer.cpp
dialogs/plugindialog.cpp
dialogs/plugineditor.cpp
dialogs/roomlistdialog.cpp
roster/roster.cpp
tabitems/chattabitem.cpp
tabitems/dxtabbook.cpp
tabitems/dxtabitem.cpp
tabitems/imtabitem.cpp
tabitems/msgtabitem.cpp
tabitems/texttabitem.cpp
tabitems/logthread.cpp
emojis/dxemoji.cpp
emojis/emojis.cpp
emojis/emojisdialog.cpp
)

SET(TRAY_SOURCES
 FXTrayApp.cpp
 FXTrayIcon.cpp
)

INCLUDE_DIRECTORIES(${DXIMFOX_INCLUDE_DIRS}
 ${CMAKE_CURRENT_SOURCE_DIR}
 ${CMAKE_CURRENT_BINARY_DIR}
 ${CMAKE_BINARY_DIR}
)

if(FOX_HAVE_TRAY)
 SET(SRCS ${SOURCES} ${TRAY_SOURCES})
else(FOX_HAVE_TRAY)
 SET(SRCS ${SOURCES})
endif(FOX_HAVE_TRAY)

if(MINGW)
    # resource compilation for MinGW
    ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/windxim.o
                    COMMAND ${CMAKE_RC_COMPILER} -I${CMAKE_CURRENT_SOURCE_DIR} -i${CMAKE_CURRENT_SOURCE_DIR}/dxim-fox.rc
                    -o ${CMAKE_CURRENT_BINARY_DIR}/windxim.o )
    set(SRCS ${SRCS} ${CMAKE_CURRENT_BINARY_DIR}/windxim.o)
else(MINGW)
    set(SRCS ${SRCS} dxim-fox.rc)
endif(MINGW)

ADD_EXECUTABLE(dxim-fox ${SRCS})
if(WIN32)
    TARGET_LINK_LIBRARIES(dxim-fox "-Wl,--subsystem,windows -mwindows" ${DXIMFOX_LIBS})
else(WIN32)
    TARGET_LINK_LIBRARIES(dxim-fox ${DXIMFOX_LIBS})
endif(WIN32)

INSTALL(TARGETS dxim-fox DESTINATION bin)

