set(COMPONENT_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(COMPONENT_SRC_DIR ${COMPONENT_DIR}/src)
set(COMPONENT_INCLUDE_DIRS ${COMPONENT_DIR}/include)
set(COMPONENT_PRIVATE_INCLUDE_DIRS ${COMPONENT_DIR}/priv_include)
set(COMPONENT_REQUIRES "json")
set(COMPONENT_SRCS_C "")
set(COMPONENT_SRCS_CPP "")
set(COMPONENT_SRCS_C_COMPILE_FLAGS "")
set(COMPONENT_SRCS_CPP_COMPILE_FLAGS "")
set(COMPONENT_SRCS_COMPILE_OPTIONS "")

#
# Expression
#
file(GLOB_RECURSE EXPRESSION_SRCS_C ${COMPONENT_SRC_DIR}/*.c ${COMPONENT_DIR}/default_assets/*.c)
file(GLOB_RECURSE EXPRESSION_SRCS_CPP ${COMPONENT_SRC_DIR}/*.cpp ${COMPONENT_DIR}/default_assets/*.cpp)
list(APPEND COMPONENT_SRCS_C ${EXPRESSION_SRCS_C})
list(APPEND COMPONENT_SRCS_CPP ${EXPRESSION_SRCS_CPP})

#
# Register Component
#
idf_component_register(
    SRCS ${COMPONENT_SRCS_C} ${COMPONENT_SRCS_CPP}
    INCLUDE_DIRS ${COMPONENT_INCLUDE_DIRS}
    PRIV_INCLUDE_DIRS ${COMPONENT_PRIVATE_INCLUDE_DIRS}
    REQUIRES ${COMPONENT_REQUIRES}
    WHOLE_ARCHIVE
)

include(package_manager)
cu_pkg_define_version(${CMAKE_CURRENT_LIST_DIR})

#
# Compile Options
#
target_compile_options(${COMPONENT_LIB}
    PUBLIC
        ${COMPONENT_SRCS_COMPILE_OPTIONS}
)
set_source_files_properties(${COMPONENT_SRCS_C}
    PROPERTIES
        COMPILE_FLAGS "${COMPONENT_SRCS_C_COMPILE_FLAGS}"
)
set_source_files_properties(${COMPONENT_SRCS_CPP}
    PROPERTIES
        COMPILE_FLAGS "${COMPONENT_SRCS_CPP_COMPILE_FLAGS}"
)
