cmake_minimum_required(VERSION 3.15)
project(lomiri-printing-app VERSION 0.4.2 LANGUAGES CXX)


# Always Be Testing
enable_testing()

# Load translation tools
find_package(Intltool REQUIRED)

# Set the vars
set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")  # -fno-permissive -pedantic -Wall -Wextra")

# Set the options
option(SNAP_MODE "Build as a snap package" off)
option(CLICK_MODE "Build as a click package" off)

include(CTest)

find_package(PkgConfig REQUIRED)

pkg_check_modules(POPPLER-QT REQUIRED poppler-qt5)

if (BUILD_TESTING)
  find_program(XVFBRUN xvfb-run REQUIRED)
  set(XVFB_COMMAND ${XVFBRUN} -s "-screen 0 640x480x24" -a)

  find_program(QMLTESTRUNNER qmltestrunner REQUIRED)
endif()

# Find packages
list(APPEND QT_COMPONENTS
  Core
  Gui
  PrintSupport
  Qml
  Quick
)

if(BUILD_TESTING)
  list(APPEND QT_COMPONENTS
    QuickTest
    Test
  )
endif()

find_package(Qt5 COMPONENTS ${QT_COMPONENTS} REQUIRED)

include(GNUInstallDirs)

if(DEFINED QT_IMPORTS_DIR)
  message(STATUS "QT_INSTALL_QML set, installing QML modules to ${QT_INSTALL_QML}")
else()
  if(CLICK_MODE)
    execute_process(
      COMMAND dpkg-architecture -qDEB_HOST_MULTIARCH
      OUTPUT_VARIABLE ARCH_TRIPLET
      OUTPUT_STRIP_TRAILING_WHITESPACE
    )
    set(QT_IMPORTS_DIR "lib/${ARCH_TRIPLET}")
  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
    )
  endif()
endif()

# Setup gettext defs
set(GETTEXT_PACKAGE "lomiri-printing-app")

# Add subdirs
#add_subdirectory(notifier)
add_subdirectory(lomiri-printing-app)

# Add queue dialog
add_subdirectory(queue-dialog)

# Add translations
add_subdirectory(po)

# Show files in QtC
file(GLOB QTC_FILES
     RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
     *.cpp *.js .qml README*)

# This figures out the target architecture for use in the manifest file.
if(DEFINED ENV{ARCH})
    set(CLICK_ARCH "$ENV{ARCH}")
else()
    execute_process(
        COMMAND dpkg-architecture -qDEB_HOST_ARCH
        OUTPUT_VARIABLE CLICK_ARCH
        OUTPUT_STRIP_TRAILING_WHITESPACE
    )
endif()

if(CLICK_MODE)
  configure_file(manifest.json.in ${CMAKE_CURRENT_BINARY_DIR}/manifest.json)
  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/manifest.json DESTINATION "${CMAKE_INSTALL_PREFIX}")
  install(FILES apparmor.json DESTINATION "${CMAKE_INSTALL_PREFIX}")
  install(FILES apparmor-queue.json DESTINATION "${CMAKE_INSTALL_PREFIX}")
endif()

add_custom_target(lomiri_printing_app_qtc_files DEPENDS Main.qml SOURCES ${QTC_FILES})
