cmake_minimum_required(VERSION 3.10)
project(qtexengine)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)

if (${PREFER_QT})
    if (${PREFER_QT} EQUAL 6)
        find_package(Qt6 COMPONENTS Core PrintSupport Widgets REQUIRED)
        set(V 6)
    elseif (${PREFER_QT} EQUAL 5)
        find_package(Qt5 COMPONENTS Core PrintSupport Widgets REQUIRED)
        set(V 5)
    endif ()
else ()
    find_package(Qt6 COMPONENTS Core PrintSupport Widgets QUIET)
    if (${Qt6_FOUND})
        set(V 6)
    else ()
        find_package(Qt5 COMPONENTS Core PrintSupport Widgets REQUIRED)
        set(V 5)
    endif ()
endif ()
get_target_property(QT_LIB_PATH Qt${V}::Core LOCATION)
message(STATUS "Found Qt${V}Core: ${QT_LIB_PATH}")

set(SOURCES
    src/qtexengine_compat.cpp
    src/QTeXPaintDevice.cpp
    src/QTeXPaintEngine.cpp)

set(HEADERS
    src/qtexengine_compat.h
    src/QTeXEngine.h)

if (MSVC)
    add_definitions(-DQTEXENGINE_EXPORTS=1)
    add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP>)
endif ()

add_library(qtexengine_static STATIC ${SOURCES})
if (MSVC AND BUILD_SHARED_LIBS)
    set_target_properties(qtexengine_static PROPERTIES OUTPUT_NAME "qtexengine_static")
else ()
    set_target_properties(qtexengine_static PROPERTIES OUTPUT_NAME "qtexengine")
endif ()
target_link_libraries(qtexengine_static PUBLIC Qt${V}::Core Qt${V}::PrintSupport Qt${V}::Widgets)

if (BUILD_SHARED_LIBS)
    add_library(qtexengine_shared SHARED $<TARGET_OBJECTS:qtexengine_static>)
    set_target_properties(qtexengine_shared PROPERTIES OUTPUT_NAME "qtexengine")
    target_link_libraries(qtexengine_shared PUBLIC Qt${V}::Core Qt${V}::PrintSupport Qt${V}::Widgets)
endif ()

include(GNUInstallDirs)
install(TARGETS qtexengine_static
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
if (BUILD_SHARED_LIBS)
    install(TARGETS qtexengine_shared
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif ()
install(FILES ${HEADERS}
    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qtexengine)
