add_compiler_rt_component(safestack)

set(SAFESTACK_SOURCES safestack.cc)

include_directories(..)

set(SAFESTACK_CFLAGS ${SANITIZER_COMMON_CFLAGS})

if(APPLE)
  # Build universal binary on APPLE.
  add_compiler_rt_runtime(clang_rt.safestack
    STATIC
    OS osx
    ARCHS ${SAFESTACK_SUPPORTED_ARCH}
    SOURCES ${SAFESTACK_SOURCES}
            $<TARGET_OBJECTS:RTInterception.osx>
            $<TARGET_OBJECTS:RTSanitizerCommon.osx>
            $<TARGET_OBJECTS:RTSanitizerCommonNoLibc.osx>
    CFLAGS ${SAFESTACK_CFLAGS}
    PARENT_TARGET safestack)
else()
  # Otherwise, build separate libraries for each target.
  foreach(arch ${SAFESTACK_SUPPORTED_ARCH})
    add_compiler_rt_runtime(clang_rt.safestack
      STATIC
      ARCHS ${arch}
      SOURCES ${SAFESTACK_SOURCES}
              $<TARGET_OBJECTS:RTInterception.${arch}>
              $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
              $<TARGET_OBJECTS:RTSanitizerCommonNoLibc.${arch}>
      CFLAGS ${SAFESTACK_CFLAGS}
      PARENT_TARGET safestack)
  endforeach()
endif()
