add_library(aihac_symbolizer SHARED
    expression.cc
    expression_impl.cc
    expr_print_manager.cc
    symbol_operator.cc
    symbolic_utils.cc
    symbol_checker.cc
    expr_parser.cc
    scanner.cc
    attr_group_shape_env_attr.cc
    attr_group_symbolic_desc_attr.cc
    guard_dfx_context.cc
)
target_compile_options(aihac_symbolizer PRIVATE -DNO_METADEF_ABI_COMPATIABLE)

target_compile_options(aihac_symbolizer PRIVATE
    $<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:-fexceptions>
    $<$<OR:$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>,$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>: -fno-common -Wextra -Wfloat-equal>
    $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Debug>>:/MTd>
    $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Release>>:/MT>)

target_compile_definitions(aihac_symbolizer PRIVATE
    $<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:FMK_SUPPORT_DUMP>
    google=ascend_private
    $<IF:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,OS_TYPE=WIN,OS_TYPE=0>
    $<$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>:SECUREC_USING_STD_SECURE_LIB=0 NOMINMAX>
)

target_include_directories(aihac_symbolizer PRIVATE
    ${CMAKE_CURRENT_LIST_DIR}
    ${CMAKE_BINARY_DIR}
    ${METADEF_DIR}
    ${CMAKE_BINARY_DIR}/proto/metadef_protos
)

target_link_options(aihac_symbolizer PRIVATE
    -Wl,-Bsymbolic
)

target_link_libraries(aihac_symbolizer
    PRIVATE
        intf_pub
        static_mmpa
        -Wl,--no-as-needed
        c_sec
        slog
        json
        platform
        symengine
        error_manager
        graph_base
        graph
        slog
        Boost::boost
        -Wl,--as-needed
        ascend_protobuf_shared_headers
        ascend_protobuf
        $<$<NOT:$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>:-lrt>
        -ldl
    PUBLIC
        metadef_headers
)
set_target_properties(aihac_symbolizer PROPERTIES
        CXX_EXTENSIONS NO)