cmake_minimum_required(VERSION 3.18)
if(CMAKE_HOST_APPLE)
  set(CMAKE_OSX_DEPLOYMENT_TARGET "13.0" CACHE STRING "Minimum supported macOS")
endif()
project(inkdraft VERSION 0.1.0 LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
option(INKTYPE_BUILD_TESTS "Build host application tests" ON)
option(INKTYPE_BUILD_DEVICE "Build experimental Paper Pro XOVI extension" OFF)
find_package(Qt6 6.8 REQUIRED COMPONENTS Core Gui Quick Network)
if(INKTYPE_BUILD_TESTS)
  find_package(Qt6 6.8 REQUIRED COMPONENTS Test)
endif()
if(APPLE AND TARGET WrapOpenGL::WrapOpenGL)
  get_target_property(gl_links WrapOpenGL::WrapOpenGL INTERFACE_LINK_LIBRARIES)
  list(FILTER gl_links EXCLUDE REGEX "AGL")
  set_property(TARGET WrapOpenGL::WrapOpenGL PROPERTY INTERFACE_LINK_LIBRARIES "${gl_links}")
endif()
set(INKDRAFT_VENDOR "${CMAKE_CURRENT_SOURCE_DIR}/.artifacts/vendor" CACHE PATH "Pinned dependencies")
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
set(BUILD_TESTING OFF CACHE BOOL "" FORCE)
set(BUILD_TOOLS OFF CACHE BOOL "" FORCE)
set(BUILD_DOCS OFF CACHE BOOL "" FORCE)
add_subdirectory("${INKDRAFT_VENDOR}/hunspell" hunspell EXCLUDE_FROM_ALL)
add_library(draftcore STATIC app/store.cpp app/speller.cpp app/scanner.cpp app/spellcheck.cpp app/sync.cpp app/workspace.cpp app/setup.cpp app/setupflow.cpp app/sshprobe.cpp app/sshidentity.cpp)
target_compile_definitions(draftcore PRIVATE SPELL_ENGINE_hunspell)
target_include_directories(draftcore PUBLIC app)
target_link_libraries(draftcore PUBLIC Qt6::Quick Qt6::Network hunspell)
target_compile_options(draftcore PRIVATE -Wall -Wextra)
add_executable(inkdraft app/main.cpp qml/resources.qrc)
target_link_libraries(inkdraft PRIVATE draftcore)
add_executable(inkdraft-askpass app/askpass.cpp)
target_link_libraries(inkdraft-askpass PRIVATE Qt6::Core Qt6::Network)
if(INKTYPE_BUILD_TESTS)
add_executable(inkdraft_tests tests/native.cpp qml/resources.qrc)
target_link_libraries(inkdraft_tests PRIVATE draftcore Qt6::Test)
add_executable(inkdraft_setup_tests tests/setup.cpp qml/resources.qrc)
target_link_libraries(inkdraft_setup_tests PRIVATE draftcore Qt6::Test)
add_dependencies(inkdraft_setup_tests inkdraft-askpass)
add_executable(inkdraft_desktop_tests tests/desktop.cpp qml/resources.qrc)
target_link_libraries(inkdraft_desktop_tests PRIVATE draftcore Qt6::Test)
add_executable(inkdraft_guide_tests tests/guide.cpp qml/resources.qrc)
target_link_libraries(inkdraft_guide_tests PRIVATE draftcore Qt6::Test)
add_executable(inktype_tablet_tests tests/tablet.cpp device/view.cpp qml/resources.qrc)
target_include_directories(inktype_tablet_tests PRIVATE device)
target_link_libraries(inktype_tablet_tests PRIVATE draftcore Qt6::Test)
endif()
if(INKTYPE_BUILD_DEVICE)
  add_subdirectory(device)
endif()
install(TARGETS inkdraft inkdraft-askpass RUNTIME DESTINATION bin)
install(DIRECTORY .artifacts/vendor/packs DESTINATION share/inkdraft)
install(FILES vendor/inputs.json LICENSE vendor/NOTICE.md DESTINATION share/inkdraft)
