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
782 B
Bash
Executable File
23 lines
782 B
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
. "${PROJECT_DIR}/Scripts/create_xcframework_func.sh"
|
|
|
|
prod_name="MoltenVKShaderConverter"
|
|
export MVK_XCFWK_STAGING_DIR="${BUILD_DIR}/XCFrameworkStaging"
|
|
export MVK_XCFWK_DEST_DIR="${PROJECT_DIR}/Package/${CONFIGURATION}/${prod_name}"
|
|
|
|
# Assemble the headers for the shader frameworks
|
|
hdr_dir="${MVK_XCFWK_STAGING_DIR}/Headers"
|
|
mkdir -p "${hdr_dir}"
|
|
rm -rf "${hdr_dir}/${prod_name}"
|
|
cp -pRL "${PROJECT_DIR}/${prod_name}/include/${prod_name}" "${hdr_dir}"
|
|
|
|
# Also copy headers to an include directory in the package.
|
|
# This will not be needed once the XCFramework can be created with a Headers directory.
|
|
mkdir -p "${MVK_XCFWK_DEST_DIR}"
|
|
cp -pRL "${PROJECT_DIR}/${prod_name}/include/" "${MVK_XCFWK_DEST_DIR}/include"
|
|
|
|
create_xcframework "${prod_name}" "library"
|