cmake_minimum_required(VERSION 3.16) # Qt requires CMake 3.16
project(qmarkdowntextedit LANGUAGES CXX VERSION 1.0.0)

#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

# add option to disable test executable
option(QMARKDOWNTEXTEDIT_EXE "Build test executable" OFF)

# find qt
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} OPTIONAL_COMPONENTS Quick)

# needed for windows
if(WIN32)
    set(INTL_LDFLAGS -lintl)
endif(WIN32)

# QMarkdownTextEdit library
set(RC_FILES
    media.qrc
)

# Translations arent loaded so don't include them
set(TS_FILES
    trans/qmarkdowntextedit_de.ts
    trans/qmarkdowntextedit_ur.ts
    trans/qmarkdowntextedit_zh_CN.ts
)

set(QMARKDOWNTEXTEDIT_SOURCES
    ${RC_FILES}
    linenumberarea.h # We need to keep this here, otherwise the build fails
    markdownhighlighter.cpp
    qmarkdowntextedit.cpp
    qownlanguagedata.cpp
    qownlanguagedata.h
    qplaintexteditsearchwidget.cpp
    qplaintexteditsearchwidget.ui
)
set(QMARKDOWNTEXTEDIT_HEADERS
    markdownhighlighter.h
    qmarkdowntextedit.h
    qplaintexteditsearchwidget.h
)

add_library(qmarkdowntextedit STATIC ${QMARKDOWNTEXTEDIT_SOURCES})
set_target_properties(qmarkdowntextedit PROPERTIES
    PUBLIC_HEADER "${QMARKDOWNTEXTEDIT_HEADERS}"
)

target_link_libraries(qmarkdowntextedit PUBLIC
    Qt${QT_VERSION_MAJOR}::Widgets
    ${INTL_LDFLAGS}
)

if (Qt${QT_VERSION_MAJOR}Quick_FOUND)
    target_link_libraries(qmarkdowntextedit PUBLIC Qt${QT_VERSION_MAJOR}::Quick)

    #add_executable(QtQuickExample examples/qml/example.cpp examples/qml/ressources.qrc)
    #target_link_libraries(QtQuickExample PRIVATE Qt${QT_VERSION_MAJOR}::Quick qmarkdowntextedit)
endif()

# QMarkdownTextEdit executable
#if(QMARKDOWNTEXTEDIT_EXE)
#    set(SOURCE_FILES
#        main.cpp
#        mainwindow.cpp
#        mainwindow.h
#        mainwindow.ui
#    )
#
#    add_executable(qmarkdowntextedit-exe ${SOURCE_FILES})
#    set_target_properties(qmarkdowntextedit-exe PROPERTIES OUTPUT_NAME "qmarkdowntextedit")
#    target_link_libraries(qmarkdowntextedit-exe PRIVATE
#        Qt${QT_VERSION_MAJOR}::Widgets
#        ${INTL_LDFLAGS}
#        qmarkdowntextedit
#    )
#endif()

#include(GNUInstallDirs) # Doesn't fail on windows

# Install the lib
#install(TARGETS qmarkdowntextedit
#    ARCHIVE DESTINATION lib
#    LIBRARY DESTINATION lib
#    RUNTIME DESTINATION bin
#    PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
#)

# Add PkgConfig config file
#configure_file(qmarkdowntextedit.pc.in ${CMAKE_BINARY_DIR}/qmarkdowntextedit.pc @ONLY)
#install(FILES ${CMAKE_BINARY_DIR}/qmarkdowntextedit.pc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig)

# Install exe
#if(QMARKDOWNTEXTEDIT_EXE)
#    install(TARGETS qmarkdowntextedit-exe DESTINATION bin)
#endif()
