cmake_minimum_required(VERSION 3.16)

project(btrfs-assistant VERSION 1.5 LANGUAGES CXX)

include(GNUInstallDirs)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM 1)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CMAKE_AUTOUIC_SEARCH_PATHS src/ui)

option(BTRFS_ASSISTANT_TESTS "Build the unit tests" OFF)
option(BTRFS_ASSISTANT_FUZZ "Build the libFuzzer targets, needs clang" OFF)
option(BTRFS_ASSISTANT_HELPER_LIBEXEC "Install the helper daemon under CMAKE_INSTALL_LIBEXECDIR instead of <prefix>/lib" OFF)
set(BTRFS_ASSISTANT_HELPER_DIR "" CACHE PATH "Where the helper daemon is installed, overrides BTRFS_ASSISTANT_HELPER_LIBEXEC")
if(NOT BTRFS_ASSISTANT_HELPER_DIR)
    if(BTRFS_ASSISTANT_HELPER_LIBEXEC)
        set(BTRFS_ASSISTANT_HELPER_DIR "${CMAKE_INSTALL_FULL_LIBEXECDIR}/btrfs-assistant")
    else()
        set(BTRFS_ASSISTANT_HELPER_DIR "${CMAKE_INSTALL_PREFIX}/lib/btrfs-assistant")
    endif()
endif()
set(BTRFS_ASSISTANT_SYSTEMD_UNIT_DIR "" CACHE PATH "Where the helper's systemd unit is installed, defaults to <prefix>/lib/systemd/system")
if(NOT BTRFS_ASSISTANT_SYSTEMD_UNIT_DIR)
    set(BTRFS_ASSISTANT_SYSTEMD_UNIT_DIR "${CMAKE_INSTALL_PREFIX}/lib/systemd/system")
endif()

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

add_subdirectory(src)
add_subdirectory(icons)

if(BTRFS_ASSISTANT_TESTS)
    enable_testing()
    add_subdirectory(tests)
endif()

if(BTRFS_ASSISTANT_FUZZ)
    add_subdirectory(tests/fuzz)
endif()

if(NOT TARGET uninstall)
    configure_file(${PROJECT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in ${CMAKE_BINARY_DIR}/cmake_uninstall.cmake @ONLY)
    add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_BINARY_DIR}/cmake_uninstall.cmake
                      COMMENT "Removing the files listed in install_manifest.txt")
endif()

message(STATUS "Btrfs Assistant will be built for install into ${CMAKE_INSTALL_PREFIX}")
