cmake_minimum_required(VERSION 3.12)

project(PropertyEditor CXX)

find_package(Qt6 COMPONENTS Core Widgets Gui QuickWidgets QuickTemplates2 QuickControls2 REQUIRED)

qt6_add_resources(QRC_FILE resources.qrc)

file(GLOB_RECURSE PROJECT_SOURCE FILES ${CMAKE_CURRENT_SOURCE_DIR}/source/*.h  ${CMAKE_CURRENT_SOURCE_DIR}/source/*.hpp ${CMAKE_CURRENT_SOURCE_DIR}/source/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/resources/*)

source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${PROJECT_SOURCE})

#if(BUILD_SHARED_LIBS)
#	add_library(PropertyEditor SHARED ${PROJECT_SOURCE} ${QRC_FILE})
#	target_compile_definitions(PropertyEditor PRIVATE PROPERTY_EDITOR_SHARED_LIBRARY)
#        message(STATUS "[CMake] Building as SHARED library")
#        message(STATUS "[CMake] Defined: PROPERTY_EDITOR_SHARED_LIBRARY")
#else()
#	add_library(PropertyEditor STATIC ${PROJECT_SOURCE} ${QRC_FILE})
#        target_compile_definitions(PropertyEditor PUBLIC PROPERTY_EDITOR_STATIC_LIBRARY)
#        message(STATUS "[CMake] Building as STATIC library")
#            message(STATUS "[CMake] Defined: PROPERTY_EDITOR_STATIC_LIBRARY")
#endif()

add_library(PropertyEditor SHARED ${PROJECT_SOURCE} ${QRC_FILE})

target_compile_definitions(PropertyEditor
  PUBLIC
    DIAGRAM_DESIGNER_SHARED
  PRIVATE
    DIAGRAM_DESIGNER_EXPORTS
    #QT_NO_KEYWORDS
)


set_property(TARGET PropertyEditor PROPERTY AUTOMOC ON)
set_property(TARGET PropertyEditor PROPERTY USE_FOLDERS ON)
set_property(TARGET PropertyEditor PROPERTY AUTOGEN_SOURCE_GROUP "Generated Files")

target_compile_definitions(PropertyEditor PRIVATE PROPERTY_EDITOR_LIBRARY)

target_link_libraries(PropertyEditor PUBLIC
	Qt::Gui
	Qt::GuiPrivate
	Qt::Widgets
	Qt::WidgetsPrivate
	Qt::QuickWidgets 
	Qt::QuickPrivate
	Qt::QuickTemplates2
	Qt::QuickTemplates2Private
	Qt::QuickControls2
)

target_include_directories(PropertyEditor PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/source/include)
file(GLOB_RECURSE PUBLIC_FILES LIST_DIRECTORIES TRUE ${CMAKE_CURRENT_SOURCE_DIR}/source/include/*)
foreach(PUBLIC_FILE ${PUBLIC_FILES})
    if(IS_DIRECTORY ${PUBLIC_FILE})
        target_include_directories(PropertyEditor PRIVATE  ${PUBLIC_FILE})
    endif()
endforeach()

set_target_properties(
    PropertyEditor
    PROPERTIES
    RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${dd_PlatformDir}/bin"
    LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${dd_PlatformDir}/lib"
    ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${dd_PlatformDir}/lib"
)

if(PROJECT_IS_TOP_LEVEL)
	add_subdirectory(example)
endif()
