cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR)

set(PROJECT_NAME slimski)
project(${PROJECT_NAME})

###Pretty colors
set(CMAKE_COLOR_MAKEFILE ON)
###Do not force verbose
set(CMAKE_VERBOSE_MAKEFILE ON)
###Include current dir
set(CMAKE_INCLUDE_CURRENT_DIR TRUE)

INCLUDE(CheckIncludeFile)
INCLUDE(CheckCCompilerFlag)
INCLUDE(CheckCXXCompilerFlag)
INCLUDE(CheckTypeSize)

set(SLIMSKI_VERSION_MAJOR "1")
set(SLIMSKI_VERSION_MINOR "5")
set(SLIMSKI_VERSION_PATCH "0")
set(SLIMSKI_VERSION "${SLIMSKI_VERSION_MAJOR}.${SLIMSKI_VERSION_MINOR}.${SLIMSKI_VERSION_PATCH}")

#set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Installation Directory")
#     howdy     would be overridden by debtools anyhow
#                ref:      debian/rules:41:override_dh_usrlocal
#
#       also: skidoo  removed from debian/slimski.dirs:  usr/local  and  usr/local/bin
set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "Installation Directory")

set(PKGDATADIR "${CMAKE_INSTALL_PREFIX}/share/slimski")
set(SYSCONFDIR "/etc")
set(MANDIR "${CMAKE_INSTALL_PREFIX}/share/man")

set(SLIMSKI_DEFINITIONS)
set(SLIMSKI_DEFINITIONS ${SLIMSKI_DEFINITIONS} "-DPACKAGE=\"slimski\"")
set(SLIMSKI_DEFINITIONS ${SLIMSKI_DEFINITIONS} "-DVERSION=\"${SLIMSKI_VERSION}\"")
set(SLIMSKI_DEFINITIONS ${SLIMSKI_DEFINITIONS} "-DPKGDATADIR=\"${PKGDATADIR}\"")
set(SLIMSKI_DEFINITIONS ${SLIMSKI_DEFINITIONS} "-DSYSCONFDIR=\"${SYSCONFDIR}\"")

### project-specific CFLAGS or CPPFLAGS not needed. Defer to use of the system-specified flags.
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -g -O2")
#set(CMAKE_CPP_FLAGS "${CMAKE_CPP_FLAGS} -Wall -g -O2")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g -O2")

### source
set(slimski_srcs
    main.cpp
    app.cpp
    capslock.cpp
    cfg.cpp
    image.cpp
    numlock.cpp
    panel.cpp
    PAM.cpp
    switchuser.cpp
    util.cpp
    log.cpp
)

add_executable(${PROJECT_NAME} ${slimski_srcs})

###Set the custom CMake module directory (where our include/lib finders reside)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")

find_package(X11 REQUIRED)
find_package(Freetype REQUIRED)
find_package(JPEG REQUIRED)
find_package(PNG REQUIRED)
#find_package(ZLIB REQUIRED)   # dpkg-shlibdeps warns "none of this library's symbols are used


### Fontconfig    # dpkg-shlibdeps sez "none of this library's symbols are used
set(FONTCONFIG_DIR ${CMAKE_MODULE_PATH})
find_package(FONTCONFIG REQUIRED)
if(FONTCONFIG_FOUND)
    message("\tFontConfig Found")
    target_link_libraries(${PROJECT_NAME} ${FONTCONFIG_LIBRARY})
    include_directories(${FONTCONFIG_INCLUDE_DIR})
endif(FONTCONFIG_FOUND)

message("\tPAM Enabled")
find_package(PAM)
if(PAM_FOUND)
    message("\tPAM Found")
    target_link_libraries(${PROJECT_NAME} ${PAM_LIBRARY})
    include_directories(${PAM_INCLUDE_DIR})
else(PAM_FOUND)
    #    howdy    would be fatal
    message("\tPAM Not Found")
endif(PAM_FOUND)


### system libraries
find_library(M_LIB m)
find_library(RT_LIB rt)

add_definitions(${SLIMSKI_DEFINITIONS})

###Set up include dirs with all found packages
include_directories(
    ${X11_INCLUDE_DIR}
    ${X11_Xft_INCLUDE_PATH}
    ${X11_Xrender_INCLUDE_PATH}   # dpkg-shlibdeps misleadingly warns "none of this library's symbols are used

###     Using FREETYPE_INCLUDE_DIR_freetype2 directly
###       can cause issues with newer freetype packages (it does not contain all freetype include dirs)
#   ${FREETYPE_INCLUDE_DIR_freetype2}
#     ^---v
    ${FREETYPE_INCLUDE_DIRS}   # dpkg-shlibdeps misleadingly warns "none of this library's symbols are used
    ${X11_Xmu_INCLUDE_PATH}
    ${JPEG_INCLUDE_DIR}
    ${PNG_INCLUDE_DIR}
)

set(X11_Xmu_LIB Xmu)
###Set up library with all found packages
target_link_libraries(${PROJECT_NAME}
    ${M_LIB}
    ${RT_LIB}
    ${X11_X11_LIB}
    ${X11_Xft_LIB}
    ${X11_Xrender_LIB}       # dpkg-shlibdeps misleadingly warns "none of this library's symbols are used     howdy bub   retest this
    ${X11_Xmu_LIB}
    ${FREETYPE_LIBRARY}      # dpkg-shlibdeps misleadingly warns "none of this library's symbols are used
    ${JPEG_LIBRARIES}
    ${PNG_LIBRARIES}
    )


####### install                howdy    for debian buster+   usr/bin     https://www.debian.org/releases/stable/amd64/release-notes/ch-whats-new.en.html#merged-usr
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin )

install(FILES doc/slimski.1 DESTINATION ${MANDIR}/man1/)

install(FILES slimski.conf DESTINATION ${SYSCONFDIR})

###  TODO   this hard-coded dirpath may not exist on all target systems
###
###  TODO   check the inconsistent use of trailing slash
###         (vs none, as seen in the CMakeLists.txt residing in subdirs)
install(FILES README DESTINATION /usr/share/doc/slimski/)

add_subdirectory(themes)
add_subdirectory(doc)

