cmake_minimum_required(VERSION 3.5)

project(latex-creator
    VERSION 2.2.1.3
    LANGUAGES CXX
    DESCRIPTION "Erstellen von LaTeX-Dokumenten aus der Vorlage 'Formblatt'"
)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOUIC_SEARCH_PATHS ui)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

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

set(H_FILES
    include/mainwindow.h
)

set(CPP_FILES
    src/main.cpp
    src/mainwindow.cpp
)

set(UI_FILES
    ui/mainwindow.ui
)

set(RES_FILES
    resources/app.qrc
)

set(TEX_FILES
    resources/tex-files/definitions.tex
    resources/tex-files/document_body_pure.tex
    resources/tex-files/document_body_theme.tex
    resources/tex-files/document_header.tex
    resources/tex-files/includes.tex
    resources/tex-files/section.tex
)

if(WIN32)
	# we need the following to statements for the windows file-attributes configuration
	set(PROJECT_VENDOR "E W")
	set(WIN32_FILE_EXTENSION "exe")

	# path to icon of windows exe
	set(ICON_PATH resources/tex-file.ico)

	configure_file(
		resources/winres.rc.in
		winres.rc
		@ONLY
	)

    list(APPEND RES_FILES
		winres.rc
    )
endif()

set(PROJECT_SOURCES
    ${H_FILES}
    ${CPP_FILES}
    ${UI_FILES}
    ${RES_FILES}
)

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_add_executable(latex-creator
        MANUAL_FINALIZATION
        ${PROJECT_SOURCES}
    )
# Define target properties for Android with Qt 6 as:
#    set_property(TARGET latex-creator APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
else()
    if(ANDROID)
        add_library(latex-creator SHARED
            ${PROJECT_SOURCES}
        )
# Define properties for Android with Qt 5 after find_package() calls as:
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
    else()
        add_executable(latex-creator
            ${PROJECT_SOURCES}
        )
    endif()
endif()

target_include_directories(latex-creator PUBLIC
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> # include directory in your build tree
    $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)

target_link_libraries(latex-creator PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)

set_target_properties(latex-creator PROPERTIES
    MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

if(QT_VERSION_MAJOR EQUAL 6)
    qt_finalize_executable(latex-creator)
endif()

include(GNUInstallDirs)

install(TARGETS latex-creator
	BUNDLE DESTINATION .
	LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
	ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
	RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

install(
    FILES ${TEX_FILES}
    DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}
)

if (CMAKE_BUILD_TYPE STREQUAL "Debug")
add_custom_command(
    TARGET ${PROJECT_NAME} POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy
        ${CMAKE_CURRENT_SOURCE_DIR}/resources/tex-files/definitions.tex
        ${CMAKE_CURRENT_SOURCE_DIR}/resources/tex-files/document_body_pure.tex
        ${CMAKE_CURRENT_SOURCE_DIR}/resources/tex-files/document_body_theme.tex
        ${CMAKE_CURRENT_SOURCE_DIR}/resources/tex-files/document_header.tex
        ${CMAKE_CURRENT_SOURCE_DIR}/resources/tex-files/includes.tex
        ${CMAKE_CURRENT_SOURCE_DIR}/resources/tex-files/section.tex
        $<TARGET_FILE_DIR:${PROJECT_NAME}>)
endif()
