set(PROJ_NAME HJMediaUI)

include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/item)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/utils)
include_directories(${HJ_EXTERNALS_PATH}/generic/ffmpeg)
#set(${PROJ_NAME}_INCLUDE_DIRS 
#    ${CMAKE_CURRENT_SOURCE_DIR})

#if (HarmonyOS)
#    include_directories(${CMAKE_CURRENT_SOURCE_DIR}/hsys)
#    list(APPEND ${PROJ_NAME}_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/hsys)
#endif()

if(WINDOWS)
    include_directories(${CMAKE_CURRENT_SOURCE_DIR}/wsys)
    list(APPEND ${PROJ_NAME}_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/wsys)
endif()


# message (STATUS "retrieve_files entry")
HJ_SUBDIR_LIST(subdir_names ${CMAKE_CURRENT_SOURCE_DIR})
# message (STATUS "core sub dir names:${subdir_names}")

HJ_RETRIEVE_XFILES(SUBPROJ_SOURCE_FILES ${subdir_names})
HJ_RETRIEVE_HFILES(SUBPROJ_HEADER_FILES ${subdir_names})

file(GLOB HEADER_FILES "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
file(GLOB SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/*.cc" "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
list(APPEND HEADER_FILES ${SUBPROJ_HEADER_FILES})
list(APPEND SOURCE_FILES ${SUBPROJ_SOURCE_FILES})

# list(APPEND SOURCE_FILES ${CMAKE_SOURCE_DIR}/Dependencies/generic/spdlog/details/registry-inl.cc)

MAKE_COMMON_CONFIG()

add_executable(${PROJ_NAME} ${SOURCE_FILES} ${HEADER_FILES})

target_link_libraries(${PROJ_NAME} PRIVATE HJGraphs HJPlugins HJStat HJComp HJMedia HJConvert HJUtils LIBFFMPEG LIBSPDLOG LIBYUV LIBSTB imguiNodeEditor implot imgui glfw LIBREFLCPP yyjson)
target_link_libraries(${PROJ_NAME} PRIVATE winmm.lib Crypt32.lib)

if (WINDOWS)
    target_link_libraries(${PROJ_NAME} PRIVATE HJRender HJInference HJOpencv LIBOPENCV HJDetect)
endif()

#target_include_directories(${PROJ_NAME} INTERFACE ${${PROJ_NAME}_INCLUDE_DIRS})


if(WINDOWS)
    target_link_libraries(${PROJ_NAME} PRIVATE HJPlatform)
endif()

HJ_CONFIG_FRAMEWORK(${PROJ_NAME})

set_target_properties(${PROJ_NAME} PROPERTIES
    ARCHIVE_OUTPUT_DIRECTORY ${ARCHIVE_output}
    LIBRARY_OUTPUT_DIRECTORY ${library_output}
    RUNTIME_OUTPUT_DIRECTORY ${runtime_output})
	
ProjFolder(${PROJ_NAME} "MainUI")

# Copy resource directory to output directory
copy_directory_post_build(${PROJ_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/../../resource resource)
copy_directory_post_build(${PROJ_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/data data)
message (STATUS "PROJ_NAME: ${PROJ_NAME}")
