Apple's iOS App Store does not permit an app to link to naked dylibs. Instead, these must be placed in frameworks, which are embedded in a dynamic version of MoltenVK.xcframework. - Use Xcode to directly generate a MoltenVK.framework for each platform, and remove create_dylib*.sh scripts. - Move static XCFramework, containing libMoltenVK.a static libraries, to Package/Latest/MoltenVK/static/MoltenVK.xcframework. - Generate dynamic XCFramework, containing MoltenVK.framework dynamic libraries, in Package/Latest/MoltenVK/dynamic/MoltenVK.xcframework. - Add macro MVK_VERSION_STRING to create version string at compile time, use it to validate the CURRENT_PROJECT_VERSION build setting at compile time, and use it at runtime instead of mvkGetMoltenVKVersionString() function. - Add -w to OTHER_LDFLAGS to dynamic framework builds to suppress spurious linker warnings of the type "ld: warning: no platform load command found in '...', assuming: iOS" issued from the new linker introduced in Xcode 15. - Add MoltenVK-MacCat Xcode target and MoltenVK Package (MacCat only) Xcode scheme to avoid building dynamic MoltenVK.framework for the Mac Catalyst platform, because Xcode does not support doing so. - Always run MoltenVK build scripts, to ensure all components are added to the XCFrameworks, and MoltenVK/Package is always refreshed, even if code compilation is not required. - Cube demo link to dynamic MoltenVK.framework through dynamic/MoltenVK.xcframework, instead of to naked libMoltenVK.dylib. - Update the version of Volk used by the Cube demo, to support loading MoltenVK from dynamic frameworks inside Volk. - Update README.md and MoltenVK_Runtime_UserGuide.md documents. - Update MVK_PRIVATE_API_VERSION to 40. - Fix make install to install /usr/local/lib/libMoltenVK.dylib on macOS (unrelated). - Remove unused MTLAttributeStrideStatic declaration prior to Xcode 15 (unrelated).
23 lines
845 B
Bash
Executable File
23 lines
845 B
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ "${SKIP_PACKAGING}" = "Y" ]; then exit 0; fi
|
|
|
|
. "${PROJECT_DIR}/Scripts/create_xcframework_func.sh"
|
|
|
|
export MVK_EXT_DIR="${PROJECT_DIR}/External"
|
|
export MVK_XCFWK_STAGING_DIR="${MVK_EXT_DIR}/build/Intermediates/XCFrameworkStaging"
|
|
export MVK_XCFWK_DEST_DIR="${MVK_EXT_DIR}/build/${CONFIGURATION}"
|
|
|
|
# Assemble the headers for the external libraries
|
|
abs_ext_dir=`cd "${MVK_EXT_DIR}"; pwd; cd - > /dev/null`
|
|
hdr_dir="${MVK_XCFWK_STAGING_DIR}/Headers"
|
|
rm -rf "${hdr_dir}"
|
|
mkdir -p "${hdr_dir}"
|
|
ln -sfn "${abs_ext_dir}/SPIRV-Cross" "${hdr_dir}/SPIRVCross"
|
|
ln -sfn "${abs_ext_dir}/glslang/External/spirv-tools/include/spirv-tools" "${hdr_dir}/SPIRVTools"
|
|
ln -sfn "${abs_ext_dir}/glslang" "${hdr_dir}/glslang"
|
|
|
|
create_xcframework "SPIRVCross" "library"
|
|
create_xcframework "SPIRVTools" "library"
|
|
create_xcframework "glslang" "library"
|