#!/bin/bash set -e export MVK_DYLIB_NAME="lib${PRODUCT_NAME}.dylib" export MVK_SYS_FWK_DIR="${SDK_DIR}/System/Library/Frameworks" export MVK_USR_LIB_DIR="${SDK_DIR}/usr/lib" mkdir -p "${BUILT_PRODUCTS_DIR}/dynamic" if test x"${ENABLE_BITCODE}" = xYES; then MVK_EMBED_BITCODE="-fembed-bitcode" fi if test x"${ENABLE_THREAD_SANITIZER}" = xYES; then MVK_SAN="-fsanitize=thread" elif test x"${ENABLE_ADDRESS_SANITIZER}" = xYES; then MVK_SAN="-fsanitize=address" fi # Suppress visibility warning spam when linking in Release or Debug mode # and external libraries built in the other mode. MVK_LINK_WARN="-Xlinker -w" clang++ \ -stdlib=${CLANG_CXX_LIBRARY} \ -dynamiclib \ $(printf -- "-arch %s " ${ARCHS}) \ -m${MVK_OS}-version-min=${MVK_MIN_OS_VERSION} \ -compatibility_version 1.0.0 -current_version 1.0.0 \ -install_name "@rpath/${MVK_DYLIB_NAME}" \ -Wno-incompatible-sysroot \ ${MVK_EMBED_BITCODE} \ ${MVK_SAN} \ ${MVK_LINK_WARN} \ -isysroot ${SDK_DIR} \ -iframework ${MVK_SYS_FWK_DIR} \ -framework Metal ${MVK_IOSURFACE_FWK} -framework ${MVK_UX_FWK} -framework QuartzCore -framework IOKit -framework Foundation \ --library-directory ${MVK_USR_LIB_DIR} \ -o "${BUILT_PRODUCTS_DIR}/dynamic/${MVK_DYLIB_NAME}" \ -force_load "${BUILT_PRODUCTS_DIR}/lib${PRODUCT_NAME}.a" if test "$CONFIGURATION" = Debug; then mkdir -p "${BUILT_PRODUCTS_DIR}/dynamic" dsymutil "${BUILT_PRODUCTS_DIR}/dynamic/${MVK_DYLIB_NAME}" \ -o "${BUILT_PRODUCTS_DIR}/dynamic/${MVK_DYLIB_NAME}.dSYM" fi