cmake_minimum_required(VERSION 3.21)

project(att_browser
  VERSION 0.1.0
  DESCRIPTION "Minimal keyboard-driven QtWebEngine browser"
  LANGUAGES CXX
)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)

include(GNUInstallDirs)

find_package(Qt6 6.5 REQUIRED COMPONENTS Core Gui Widgets Network Concurrent Sql WebEngineCore WebEngineWidgets)
find_package(Corrosion REQUIRED)

qt_standard_project_setup()

# Brave's adblock-rust behind a small C API. Always built in release: a debug
# build of the engine is far too slow to compile EasyList or check requests.
corrosion_import_crate(
  MANIFEST_PATH adblock/Cargo.toml
  CRATES att_adblock
  CRATE_TYPES staticlib
  PROFILE release
)

qt_add_executable(att_browser
  src/adblock.cpp
  src/adblock.h
  src/main.cpp
  src/browserwindow.cpp
  src/browserwindow.h
  src/commandline.cpp
  src/commandline.h
  src/completionview.cpp
  src/completionview.h
  src/config.h
  src/greasemonkey.cpp
  src/greasemonkey.h
  src/hardening.cpp
  src/hardening.h
  src/hints.cpp
  src/hints.h
  src/messageview.cpp
  src/messageview.h
  src/history.cpp
  src/history.h
  src/statusbar.cpp
  src/statusbar.h
  src/urlutil.cpp
  src/urlutil.h
  src/useragent.cpp
  src/useragent.h
)

target_include_directories(att_browser PRIVATE src adblock)

target_link_libraries(att_browser PRIVATE
  att_adblock
  Qt6::Core
  Qt6::Gui
  Qt6::Widgets
  Qt6::Network
  Qt6::Concurrent
  Qt6::Sql
  Qt6::WebEngineCore
  Qt6::WebEngineWidgets
)

install(TARGETS att_browser
  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
