set(EXE_NAME lxqt-config-randr)

if(USE_QT5)
  set(QTX_INCLUDE_DIRS "")
  set(QTX_LIBRARIES Qt5::Widgets Qt5::X11Extras)
else()
  set(QTX_INCLUDE_DIRS ${QT_INCLUDE_DIR})
  set(QTX_LIBRARIES ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY})
endif()

find_package(Qt4 COMPONENTS QtCore QtGui REQUIRED)
find_package(X11 REQUIRED)

include(CheckFunctionExists)
include(FindPkgConfig)

set(CMAKE_REQUIRED_INCLUDES ${X11_Xrandr_INCLUDE_PATH}/Xrandr.h)
set(CMAKE_REQUIRED_LIBRARIES ${X11_Xrandr_LIB})
check_function_exists(XRRGetScreenSizeRange HAS_RANDR_1_2)
check_function_exists(XRRGetScreenResourcesCurrent HAS_RANDR_1_3)
find_library(XRANDR_LIBRARY NAMES Xrandr)

configure_file(config-randr.h.cmake
                ${CMAKE_CURRENT_BINARY_DIR}/config-randr.h)

include_directories( ${X11_Xrandr_INCLUDE_PATH})

set(SOURCES_FILES
    randr.cpp
    randrmode.cpp
    randrscreen.cpp
    randrgammainfo.cpp
    randrcrtc.cpp
    randroutput.cpp
    randrdisplay.cpp
    legacyrandrscreen.cpp
    qtimerconfirmdialog.cpp
    collapsiblewidget.cpp
    outputgraphicsitem.cpp
    outputconfig.cpp
    layoutmanager.cpp
    randrconfig.cpp
    razorrandrconfiguration.cpp
    loaderconfiglogin.cpp
    main.cpp
)

set(UI_SOURCES_FILES
    forms/outputconfigbase.ui
    forms/qtimerconfirmdialog.ui
    forms/randrconfigbase.ui
    forms/razorrandrconfiguration.ui
)

set( RESOURCES_SRC_FILES
    lxqtconfigrandr.qrc
)

if(USE_QT5)
	qt5_wrap_ui(UI_FILES ${UI_SOURCES_FILES} )
	qt5_add_resources(RESOURCES_FILES ${RESOURCES_SRC_FILES} )
else()
	qt4_wrap_ui(UI_FILES ${UI_SOURCES_FILES} )
	qt4_add_resources(RESOURCES_FILES ${RESOURCES_SRC_FILES} )
endif()

include_directories(
    ${CMAKE_CURRENT_BINARY_DIR}
    ${QTX_INCLUDE_DIRS}
    ${X11_Xrandr_INCLUDE_PATH}
)
add_executable(${EXE_NAME}
    ${SOURCES_FILES}
    ${UI_FILES}
    ${RESOURCES_FILES}
    ${MOC_FILES}
)

target_link_libraries(${EXE_NAME}
    ${QTX_LIBRARIES}
    ${X11_LIBRARIES}
    ${XRANDR_LIBRARY}
)

install(TARGETS ${EXE_NAME} RUNTIME DESTINATION bin)
