Home | History | Annotate | Download | only in safestack
      1 add_custom_target(safestack)
      2 
      3 set(SAFESTACK_SOURCES safestack.cc)
      4 
      5 include_directories(..)
      6 
      7 set(SAFESTACK_CFLAGS ${SANITIZER_COMMON_CFLAGS})
      8 
      9 if(APPLE)
     10   # Build universal binary on APPLE.
     11   add_compiler_rt_runtime(clang_rt.safestack
     12     STATIC
     13     OS osx
     14     ARCHS ${SAFESTACK_SUPPORTED_ARCH}
     15     SOURCES ${SAFESTACK_SOURCES}
     16             $<TARGET_OBJECTS:RTInterception.osx>
     17             $<TARGET_OBJECTS:RTSanitizerCommon.osx>
     18             $<TARGET_OBJECTS:RTSanitizerCommonNoLibc.osx>
     19     CFLAGS ${SAFESTACK_CFLAGS}
     20     PARENT_TARGET safestack)
     21 else()
     22   # Otherwise, build separate libraries for each target.
     23   foreach(arch ${SAFESTACK_SUPPORTED_ARCH})
     24     add_compiler_rt_runtime(clang_rt.safestack
     25       STATIC
     26       ARCHS ${arch}
     27       SOURCES ${SAFESTACK_SOURCES}
     28               $<TARGET_OBJECTS:RTInterception.${arch}>
     29               $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
     30               $<TARGET_OBJECTS:RTSanitizerCommonNoLibc.${arch}>
     31       CFLAGS ${SAFESTACK_CFLAGS}
     32       PARENT_TARGET safestack)
     33   endforeach()
     34 endif()
     35