cmake_minimum_required(VERSION 3.1.0)
project(UmlauteWeb
	VERSION 2.1.1.0
	DESCRIPTION "Changing non-ASCII-strings to HTML-Escapses and vice versa."
	LANGUAGES CXX
)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
option(BUILD_SHARED_LIBS "Force building shared library" ON)

option(WITH_TESTS "Build tests" ON)

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

set(H_FILES
	include/UmlauteWeb_global.hpp
	include/Std.hpp
	include/Qt.hpp
)

set(CPP_FILES
	src/Std.cpp
	src/Qt.cpp
)

set(PROJECT_FILES
	${H_FILES}
	${CPP_FILES}
)

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

	configure_file(
		${CMAKE_CURRENT_SOURCE_DIR}/winres.rc.in
		${CMAKE_BINARY_DIR}/winres.rc
		@ONLY
	)

    list(APPEND PROJECT_FILES
		${CMAKE_BINARY_DIR}/winres.rc
    )
endif()

add_library(UmlauteWeb SHARED
	${PROJECT_FILES}
)

add_library(UmlauteWeb::UmlauteWeb ALIAS UmlauteWeb)
target_link_libraries(UmlauteWeb PRIVATE Qt${QT_VERSION_MAJOR}::Core)

if(BUILD_SHARED_LIBS)
	target_compile_definitions(UmlauteWeb PRIVATE UMLAUTEWEB_LIBRARY)
	target_compile_definitions(UmlauteWeb PUBLIC UMLAUTEWEB_SHARED)
endif(BUILD_SHARED_LIBS)


include(GNUInstallDirs)
target_include_directories(UmlauteWeb PUBLIC
	$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> # include directory in your build tree
	$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>       # include directory when installed
)

include(CMakePackageConfigHelpers)

set_target_properties(UmlauteWeb PROPERTIES
	SOVERSION ${PROJECT_VERSION_MAJOR}
	VERSION ${PROJECT_VERSION}
)

write_basic_package_version_file(
	${CMAKE_CURRENT_BINARY_DIR}/UmlauteWebConfigVersion.cmake
	VERSION "${PROJECT_VERSION}"
	COMPATIBILITY AnyNewerVersion
)

set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/UmlauteWeb)

install(
	TARGETS UmlauteWeb
	EXPORT UmlauteWebConfig
	LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
	ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
	RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

install(
	FILES ${H_FILES}
	DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/UmlauteWeb
)

install(
	FILES ${QM_FILES}
	DESTINATION ${CMAKE_INSTALL_DATADIR}/UmlauteWeb/i18n
)

install(
	FILES ${CMAKE_CURRENT_BINARY_DIR}/UmlauteWebConfigVersion.cmake
	DESTINATION ${INSTALL_CONFIGDIR}
)

install(
	EXPORT UmlauteWebConfig
	DESTINATION ${INSTALL_CONFIGDIR}
)

export(
	TARGETS UmlauteWeb
	FILE UmlauteWebConfig.cmake
)

if(WITH_TESTS)
    add_subdirectory(test)
endif()
