add_library(intf_pub INTERFACE)
target_compile_options(
  intf_pub
  INTERFACE
    -fPIC
    -fvisibility=hidden
    -fvisibility-inlines-hidden
    $<$<CONFIG:Release>:-O2>
    $<$<CONFIG:Debug>:-O0
    -g>
    $<$<COMPILE_LANGUAGE:CXX>:-std=c++17>
    $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CONFIG:Debug>>:-ftrapv
    -fstack-check>
    $<$<COMPILE_LANGUAGE:C>:-pthread
    -Wfloat-equal
    -Wshadow
    -Wformat=2
    -Wno-deprecated
    -Wextra>
    $<IF:$<VERSION_GREATER:${CMAKE_C_COMPILER_VERSION},4.8.5>,-fstack-protector-strong,-fstack-protector-all>
)
target_compile_definitions(
  intf_pub INTERFACE _GLIBCXX_USE_CXX11_ABI=0
                     $<$<CONFIG:Release>:_FORTIFY_SOURCE=2>)
target_include_directories(
  intf_pub INTERFACE ${ASCEND_CANN_PACKAGE_PATH}/include
                     ${PROJECT_SOURCE_DIR}/include)
# if the CANN_PATHS not empty
if(CANN_PATHS)
  # if the arch is aarch64, add the include path
  if(${ARCH} STREQUAL "aarch64")
    target_include_directories(intf_pub
                               INTERFACE ${CANN_PATHS}/aarch64-linux/include)
    target_link_directories(intf_pub INTERFACE
                            ${CANN_PATHS}/aarch64-linux/lib64)
  else()
    target_include_directories(intf_pub
                               INTERFACE ${CANN_PATHS}/x86_64-linux/include)
    target_link_directories(intf_pub INTERFACE ${CANN_PATHS}/x86_64-linux/lib64)
  endif()
endif()

target_link_options(
  intf_pub
  INTERFACE
  $<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:-pie>
  $<$<CONFIG:Release>:-s>
  -Wl,-z,relro
  -Wl,-z,now
  -Wl,-z,noexecstack)