#!/bin/sh # # fix address-sanitizer library @rpath references # xsan_setup() { XSAN_DIR="/usr/local/lib/sanitizers" case "${PLATFORM_NAME}" in macosx ) ASAN_DYLIB="clang_rt.asan_osx_dynamic.dylib" TSAN_DYLIB="clang_rt.tsan_osx_dynamic.dylib" ;; iphoneos ) ASAN_DYLIB="clang_rt.asan_ios_dynamic.dylib" TSAN_DYLIB="clang_rt.tsan_ios_dynamic.dylib" ;; iphonesimulator ) ASAN_DYLIB="clang_rt.asan_iossim_dynamic.dylib" TSAN_DYLIB="clang_rt.tsan_iossim_dynamic.dylib" ;; tvos ) ASAN_DYLIB="clang_rt.asan_tvos_dynamic.dylib" TSAN_DYLIB="clang_rt.tsan_tvos_dynamic.dylib" ;; tvsosimulator ) ASAN_DYLIB="clang_rt.asan_tvossim_dynamic.dylib" TSAN_DYLIB="clang_rt.tsan_tvossim_dynamic.dylib" ;; watchos ) ASAN_DYLIB="clang_rt.asan_watchos_dynamic.dylib" TSAN_DYLIB="clang_rt.tsan_watchos_dynamic.dylib" ;; watchsimulator ) ASAN_DYLIB="clang_rt.asan_watchossim_dynamic.dylib" TSAN_DYLIB="clang_rt.tsan_watchossim_dynamic.dylib" ;; * ) ASAN_DYLIB="clang_rt.asan_$(RC_PROJECT_COMPILATION_PLATFORM)_dynamic.dylib" TSAN_DYLIB="clang_rt.tsan_$(RC_PROJECT_COMPILATION_PLATFORM)_dynamic.dylib" ;; esac } xsan_setup=0 for VARIANT in ${BUILD_VARIANTS} do case "${VARIANT}" in "asan" ) # # change address sanitizer @rpath reference # ASAN_FILE="${DSTROOT}${INSTALL_PATH}/" if [ -n "${EXECUTABLE_FOLDER_PATH}" ]; then ASAN_FILE+="${EXECUTABLE_FOLDER_PATH}/" fi ASAN_FILE+="${EXECUTABLE_PREFIX}${PRODUCT_NAME}_asan${EXECUTABLE_SUFFIX}" if [ -x "${ASAN_FILE}" ]; then if [ ${xsan_setup} -eq 0 ]; then xsan_setup xsan_setup=1 fi install_name_tool \ -change \ "@rpath/lib${ASAN_DYLIB}" \ "${XSAN_DIR}/lib${ASAN_DYLIB}" \ "${ASAN_FILE}" if [ $? -ne 0 ]; then echo "install_name_tool failed" printenv | sort exit 1 fi fi ;; "tsan" ) # # change thread sanitizer @rpath reference # TSAN_FILE="${DSTROOT}${INSTALL_PATH}/" if [ -n "${EXECUTABLE_FOLDER_PATH}" ]; then TSAN_FILE+="${EXECUTABLE_FOLDER_PATH}/" fi TSAN_FILE+="${EXECUTABLE_PREFIX}${PRODUCT_NAME}_tsan${EXECUTABLE_SUFFIX}" if [ -x "${TSAN_FILE}" ]; then if [ ${xsan_setup} -eq 0 ]; then xsan_setup xsan_setup=1 fi install_name_tool \ -change \ "@rpath/lib${TSAN_DYLIB}" \ "${XSAN_DIR}/lib${TSAN_DYLIB}" \ "${TSAN_FILE}" if [ $? -ne 0 ]; then echo "install_name_tool failed" printenv | sort exit 1 fi fi ;; * ) ;; esac done