project(MazDB LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_EXTENSIONS FALSE)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)

include(GNUInstallDirs)
include(CTest)

option(MAZDB_EXAMPLES "Build & install example(s)." ON)

find_package(Threads REQUIRED)

find_package(leveldb REQUIRED)

find_package(Qt5Core REQUIRED)
find_package(Qt5Qml REQUIRED)
find_package(Qt5Quick REQUIRED)

set(CMAKE_AUTOMOC ON)

find_library(SSP_LIBRARIES
    NAMES snap-standard-paths
    REQUIRED
)

find_path(SSP_INCLUDE_DIRECTORY
    NAMES SnapStandardPaths.h
    REQUIRED
)

if(BUILD_TESTING)
    find_package(Qt5QuickTest REQUIRED)
    find_package(Qt5Test REQUIRED)
endif()

if(DEFINED QT_IMPORTS_DIR)
    message(STATUS "QT_IMPORTS_DIR already set. Installing MazDB QML modules to ${QT_IMPORTS_DIR}")
else()
    get_target_property(QMAKE_EXECUTABLE Qt5::qmake LOCATION)
    execute_process(
        COMMAND ${QMAKE_EXECUTABLE} -query QT_INSTALL_QML
        OUTPUT_VARIABLE QT_IMPORTS_DIR OUTPUT_STRIP_TRAILING_WHITESPACE
    )
    file(TO_CMAKE_PATH "${QT_IMPORTS_DIR}" QT_IMPORTS_DIR)
endif()

add_subdirectory(src)

if(MAZDB_EXAMPLES)
    add_subdirectory(example)
endif()

if(BUILD_TESTING)
    add_subdirectory(tests)
endif()
