1*7c3d14c8STreehugger Robotadd_custom_target(safestack) 2*7c3d14c8STreehugger Robotset_target_properties(safestack PROPERTIES 3*7c3d14c8STreehugger Robot FOLDER "Compiler-RT Misc") 4*7c3d14c8STreehugger Robot 5*7c3d14c8STreehugger Robotset(SAFESTACK_SOURCES safestack.cc) 6*7c3d14c8STreehugger Robot 7*7c3d14c8STreehugger Robotinclude_directories(..) 8*7c3d14c8STreehugger Robot 9*7c3d14c8STreehugger Robotset(SAFESTACK_CFLAGS ${SANITIZER_COMMON_CFLAGS}) 10*7c3d14c8STreehugger Robot 11*7c3d14c8STreehugger Robotif(APPLE) 12*7c3d14c8STreehugger Robot # Build universal binary on APPLE. 13*7c3d14c8STreehugger Robot add_compiler_rt_runtime(clang_rt.safestack 14*7c3d14c8STreehugger Robot STATIC 15*7c3d14c8STreehugger Robot OS osx 16*7c3d14c8STreehugger Robot ARCHS ${SAFESTACK_SUPPORTED_ARCH} 17*7c3d14c8STreehugger Robot SOURCES ${SAFESTACK_SOURCES} 18*7c3d14c8STreehugger Robot $<TARGET_OBJECTS:RTInterception.osx> 19*7c3d14c8STreehugger Robot $<TARGET_OBJECTS:RTSanitizerCommon.osx> 20*7c3d14c8STreehugger Robot $<TARGET_OBJECTS:RTSanitizerCommonNoLibc.osx> 21*7c3d14c8STreehugger Robot CFLAGS ${SAFESTACK_CFLAGS} 22*7c3d14c8STreehugger Robot PARENT_TARGET safestack) 23*7c3d14c8STreehugger Robotelse() 24*7c3d14c8STreehugger Robot # Otherwise, build separate libraries for each target. 25*7c3d14c8STreehugger Robot foreach(arch ${SAFESTACK_SUPPORTED_ARCH}) 26*7c3d14c8STreehugger Robot add_compiler_rt_runtime(clang_rt.safestack 27*7c3d14c8STreehugger Robot STATIC 28*7c3d14c8STreehugger Robot ARCHS ${arch} 29*7c3d14c8STreehugger Robot SOURCES ${SAFESTACK_SOURCES} 30*7c3d14c8STreehugger Robot $<TARGET_OBJECTS:RTInterception.${arch}> 31*7c3d14c8STreehugger Robot $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> 32*7c3d14c8STreehugger Robot $<TARGET_OBJECTS:RTSanitizerCommonNoLibc.${arch}> 33*7c3d14c8STreehugger Robot CFLAGS ${SAFESTACK_CFLAGS} 34*7c3d14c8STreehugger Robot PARENT_TARGET safestack) 35*7c3d14c8STreehugger Robot endforeach() 36*7c3d14c8STreehugger Robotendif() 37