cmake_minimum_required(VERSION 3.9)

project(youtubedl-gui LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

INCLUDE(GNUInstallDirs)
INCLUDE(CheckIPOSupported)

#Set default prefix to /usr
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
  set(CMAKE_INSTALL_PREFIX "/usr")
endif()

# check if compiler supports link time optmizations and enable it
if(LINUX)
  check_ipo_supported(RESULT result)
    if (CMAKE_COMPILER_IS_GNUCXX) # clang lto with qt is broken.
            if(result)
            set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
        endif()
    endif()
endif()


# uninstall target
if(NOT TARGET uninstall)
  configure_file(
    "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
    "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
    IMMEDIATE @ONLY)

  add_custom_target(uninstall
    COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
endif()

find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED)

set(SRC
    #headers
    src/canceldownload.h
    src/downloadprogress.h
    src/downloadstatus.h
    src/mainactions.h
    src/maincommand.h
    src/ytdl.h
    src/readconfig.h

    #cpp
    src/canceldownload.cpp
    src/downloadprogress.cpp
    src/downloadstatus.cpp
    src/main.cpp
    src/mainactions.cpp
    src/maincommand.cpp
    src/ytdl.cpp
    src/readconfig.cpp

    #ui
    src/downloadstatus.ui
    src/ytdl.ui)

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_add_executable(youtubedl-gui
	    ${SRC}
    )
else()
    if(ANDROID)
        add_library(youtubedl-gui SHARED
		${SRC}
        )
    else()
        add_executable(youtubedl-gui
		${SRC}
        )
    endif()
endif()


target_link_libraries(youtubedl-gui PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)

install(TARGETS youtubedl-gui RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})

install(FILES icons/16x16.png
    DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/16x16/apps
    RENAME youtubedl-gui.png)
install(FILES icons/32x32.png
    DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/32x32/apps
    RENAME youtubedl-gui.png)
install(FILES icons/64x64.png
    DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/64x64/apps
    RENAME youtubedl-gui.png)
install(FILES icons/128x128.png
    DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps
    RENAME youtubedl-gui.png)
install(FILES icons/256x256.png
    DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/256x256/apps
    RENAME youtubedl-gui.png)
install(FILES icons/512x512.png
    DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/512x512/apps
    RENAME youtubedl-gui.png)

install(FILES resources/youtubedl-gui.desktop
    DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)
