Remove EXCLUDED_ARCHS from all Xcode projects to allow fat platform libraries to be built. Script copy_lib_to_staging.sh no longer breaks fat libraries into single-architecture libraries, and simply copies fat file to XCFramework staging area. This permits support for arm64 on macOS, and arm64e on iOS and tvOS. Creating a Simulator dylib containing both x86_64 and arm64 (Apple Silicon) architectures is not currently supported by Xcode, so Simulator dylibs are skipped.
60 lines
2.0 KiB
Bash
Executable File
60 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Allow dylib building to be skipped based on bulid setting.
|
|
# For example, skipping the build of a dylib for Simulator builds
|
|
# because Xcode cannot currently handle creating a Simulator dylib
|
|
# containing both x86_64 and arm64 (Apple Silicon) architectures.
|
|
if [ "${MVK_SKIP_DYLIB}" == "YES" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
export MVK_BUILT_PROD_DIR="${BUILT_PRODUCTS_DIR}"
|
|
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 "${MVK_BUILT_PROD_DIR}/dynamic"
|
|
|
|
export MVK_EMBED_BITCODE=""
|
|
if test x"${ENABLE_BITCODE}" == xYES; then
|
|
if test x"${BITCODE_GENERATION_MODE}" == xbitcode; then
|
|
MVK_EMBED_BITCODE="-fembed-bitcode"
|
|
else
|
|
MVK_EMBED_BITCODE="-fembed-bitcode-marker"
|
|
fi
|
|
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_CLANG}-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 CoreGraphics ${MVK_IOKIT_FWK} -framework Foundation \
|
|
--library-directory ${MVK_USR_LIB_DIR} \
|
|
-o "${MVK_BUILT_PROD_DIR}/dynamic/${MVK_DYLIB_NAME}" \
|
|
-force_load "${MVK_BUILT_PROD_DIR}/lib${PRODUCT_NAME}.a"
|
|
|
|
if test "$CONFIGURATION" = Debug; then
|
|
mkdir -p "${MVK_BUILT_PROD_DIR}/dynamic"
|
|
dsymutil "${MVK_BUILT_PROD_DIR}/dynamic/${MVK_DYLIB_NAME}" \
|
|
-o "${MVK_BUILT_PROD_DIR}/dynamic/${MVK_DYLIB_NAME}.dSYM"
|
|
fi
|