cmake_minimum_required( VERSION 3.1.3 )

project( "maim" )

set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build (Debug or Release)")

if ( NOT CMAKE_INSTALL_PREFIX )
    set(CMAKE_INSTALL_PREFIX "/usr")
endif()

set( CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_PREFIX}/share/man" CACHE PATH "Directory where man pages reside. (/usr/share/man, /usr/local/share/man, etc.)" )

set( CMAKE_COMPRESS_MAN TRUE CACHE BOOL "Whether or not to compress the man pages for install." )

if ( CMAKE_COMPRESS_MAN )
    set( MANTARGET "maim.1.gz" )
else()
    set( MANTARGET "maim.1" )
endif()

add_definitions(-DMAIM_VERSION="v5.4.68")

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin/")

# Sources
set( source
     src/x.cpp
     src/image.cpp
     src/main.cpp )

set( BIN_TARGET     "${PROJECT_NAME}" )

# Executable
add_executable( "${BIN_TARGET}" ${source} )

# Obtain library paths and make sure they exist.
set( CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_SOURCE_DIR}/modules" )
find_package( PNG        REQUIRED )
find_package( JPEG       REQUIRED )
find_package( XRandr     REQUIRED )
find_package( XRender    REQUIRED )
find_package( XFixes     REQUIRED )
find_package( XComposite REQUIRED )
find_package( X11        REQUIRED )
find_package( SLOP       REQUIRED )
find_package( Threads    REQUIRED )

set_property(TARGET ${BIN_TARGET} PROPERTY CXX_STANDARD_REQUIRED ON)
set_property(TARGET ${BIN_TARGET} PROPERTY CXX_STANDARD 11)

# Includes
include_directories( ${XRANDR_INCLUDE_DIR}
                     ${X11_INCLUDE_DIR}
                     ${SLOP_INCLUDE_DIR}
                     ${XFIXES_INCLUDE_DIR}
                     ${XCOMPOSITE_INCLUDE_DIR}
                     ${JPEG_INCLUDE_DIR}
                     ${XRANDR_INCLUDE_DIR}
                     ${XRENDER_INCLUDE_DIR}
                     ${PNG_INCLUDE_DIRS} )

# Libraries
target_link_libraries( ${BIN_TARGET}
                       ${CMAKE_THREAD_LIBS_INIT}
                       ${X11_LIBRARIES}
                       ${PNG_LIBRARIES}
                       ${XFIXES_LIBRARY}
                       ${XCOMPOSITE_LIBRARY}
                       ${XRANDR_LIBRARY}
                       ${JPEG_LIBRARIES}
                       ${XRENDER_LIBRARY}
                       ${SLOP_LIBRARIES} )

if( CMAKE<3.7 )
  message( WARNING "CMake version is below 3.7, CMake version >= 3.7 is required for unicode support." )
else()
  find_package(ICU COMPONENTS uc)
  set( MAIM_UNICODE TRUE CACHE BOOL "To enable or disable unicode support." )
  if ( MAIM_UNICODE AND ICU_FOUND )
      # ICU is required for old nvidia drivers to work for whatever reason.
      add_definitions(-DCXXOPTS_USE_UNICODE)
      include_directories( ${ICU_INCLUDE_DIR} )
      target_link_libraries( ${BIN_TARGET} ${ICU_UC_LIBRARIES} )
  endif()
endif()

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")

install( TARGETS ${BIN_TARGET} DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" )
install( FILES "${CMAKE_SOURCE_DIR}/${MANTARGET}" DESTINATION  "${CMAKE_INSTALL_MANDIR}/man1" COMPONENT doc )
