From 536d6cf0d4ec9bf08b5a4366b1ec073a304d0e61 Mon Sep 17 00:00:00 2001 From: Bill Hollings Date: Thu, 27 Aug 2020 23:43:06 -0400 Subject: [PATCH] Add MoltenVK XCFramework. Add package_moltenvk_xcframework.sh. Rename package_shader_converter.sh to package_shader_converter_xcframework.sh. --- MoltenVK/MoltenVK.xcodeproj/project.pbxproj | 57 +++++++++++++++++++ MoltenVKPackaging.xcodeproj/project.pbxproj | 6 +- Scripts/create_xcframework_func.sh | 6 +- Scripts/package_all.sh | 3 +- Scripts/package_moltenvk_xcframework.sh | 17 ++++++ Scripts/package_one_os.sh | 3 +- ...> package_shader_converter_xcframework.sh} | 7 ++- 7 files changed, 91 insertions(+), 8 deletions(-) create mode 100755 Scripts/package_moltenvk_xcframework.sh rename Scripts/{package_shader_converter.sh => package_shader_converter_xcframework.sh} (70%) diff --git a/MoltenVK/MoltenVK.xcodeproj/project.pbxproj b/MoltenVK/MoltenVK.xcodeproj/project.pbxproj index 83c489de..ce251672 100644 --- a/MoltenVK/MoltenVK.xcodeproj/project.pbxproj +++ b/MoltenVK/MoltenVK.xcodeproj/project.pbxproj @@ -1043,6 +1043,7 @@ 2FEA0AB524902F9F00EEF3AD /* Create Dynamic Library */, A9FC5F6D249D39F3003CB086 /* Create Fat Libraries */, 2FEA0AB624902F9F00EEF3AD /* Create Framework */, + A9CBBFF124F89F79006D41EF /* Copy to Staging */, ); buildRules = ( ); @@ -1065,6 +1066,7 @@ A9731FAD1EDDAE39006B7298 /* Create Dynamic Library */, A9EE084F249BD4AE00E523A2 /* Create Fat Libraries */, A92EF79721854B3300C8B91B /* Create Framework */, + A9CBBFEF24F89F5F006D41EF /* Copy to Staging */, ); buildRules = ( ); @@ -1086,6 +1088,7 @@ A9CBEDCE1B6299D800E45FDC /* Sources */, A93F47C91D7E389E002AF700 /* Create Dynamic Library */, A92EF78D21852B2400C8B91B /* Create Framework */, + A9CBBFF224F89F87006D41EF /* Copy to Staging */, ); buildRules = ( ); @@ -1345,6 +1348,60 @@ shellPath = /bin/sh; shellScript = "\"${SRCROOT}/../Scripts/gen_moltenvk_rev_hdr.sh\"\n"; }; + A9CBBFEF24F89F5F006D41EF /* Copy to Staging */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Copy to Staging"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = ". \"${SRCROOT}/../Scripts/copy_lib_to_staging.sh\"\n"; + }; + A9CBBFF124F89F79006D41EF /* Copy to Staging */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Copy to Staging"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = ". \"${SRCROOT}/../Scripts/copy_lib_to_staging.sh\"\n"; + }; + A9CBBFF224F89F87006D41EF /* Copy to Staging */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Copy to Staging"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = ". \"${SRCROOT}/../Scripts/copy_lib_to_staging.sh\"\n\n"; + }; A9EE084F249BD4AE00E523A2 /* Create Fat Libraries */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/MoltenVKPackaging.xcodeproj/project.pbxproj b/MoltenVKPackaging.xcodeproj/project.pbxproj index 6ac39b24..62f8485d 100644 --- a/MoltenVKPackaging.xcodeproj/project.pbxproj +++ b/MoltenVKPackaging.xcodeproj/project.pbxproj @@ -219,7 +219,7 @@ A92EF7C721856EA200C8B91B /* package_shader_converter_tool.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_shader_converter_tool.sh; sourceTree = ""; }; A92EF7C921856EA200C8B91B /* package_docs.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_docs.sh; sourceTree = ""; }; A92EF7CA21856EA200C8B91B /* package_update_latest.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_update_latest.sh; sourceTree = ""; }; - A92EF7CB21856EA300C8B91B /* package_shader_converter.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_shader_converter.sh; sourceTree = ""; }; + A92EF7CB21856EA300C8B91B /* package_shader_converter_xcframework.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_shader_converter_xcframework.sh; sourceTree = ""; }; A92EF7DE2186451700C8B91B /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; name = Makefile; path = ../Makefile; sourceTree = ""; }; A93ED4DE24F59CDB00FEB018 /* copy_to_staging.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = copy_to_staging.sh; sourceTree = ""; }; A93ED4E324F59CDB00FEB018 /* copy_lib_to_staging.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = copy_lib_to_staging.sh; sourceTree = ""; }; @@ -233,6 +233,7 @@ A9B1008924F84EC800EADC6E /* package_one_os.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_one_os.sh; sourceTree = ""; }; A9C70F41221B04C800FBA31A /* create_dylib_macos.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = create_dylib_macos.sh; sourceTree = ""; }; A9C70F45221B04C800FBA31A /* create_dylib_ios.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = create_dylib_ios.sh; sourceTree = ""; }; + A9CBBFF924F8A1EB006D41EF /* package_moltenvk_xcframework.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_moltenvk_xcframework.sh; sourceTree = ""; }; A9DA8340218A198C002AA662 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = .travis.yml; sourceTree = ""; }; A9DA8341218A198C002AA662 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; A9EE084A249BD49200E523A2 /* create_fat_lib_func.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = create_fat_lib_func.sh; sourceTree = ""; }; @@ -298,10 +299,11 @@ A980A25F24C628F3007A8F6F /* gen_moltenvk_rev_hdr.sh */, A9FC5F60249D2ED3003CB086 /* package_all.sh */, A92EF7C921856EA200C8B91B /* package_docs.sh */, + A9CBBFF924F8A1EB006D41EF /* package_moltenvk_xcframework.sh */, A92EF7C621856EA200C8B91B /* package_moltenvk.sh */, A9B1008924F84EC800EADC6E /* package_one_os.sh */, A92EF7C721856EA200C8B91B /* package_shader_converter_tool.sh */, - A92EF7CB21856EA300C8B91B /* package_shader_converter.sh */, + A92EF7CB21856EA300C8B91B /* package_shader_converter_xcframework.sh */, A92EF7CA21856EA200C8B91B /* package_update_latest.sh */, A92EF7DE2186451700C8B91B /* Makefile */, ); diff --git a/Scripts/create_xcframework_func.sh b/Scripts/create_xcframework_func.sh index 5da7cac6..088ce7ce 100755 --- a/Scripts/create_xcframework_func.sh +++ b/Scripts/create_xcframework_func.sh @@ -16,8 +16,10 @@ function create_xcframework() { for prod_staging_dir in "${MVK_XCFWK_STAGING_DIR}/${CONFIGURATION}"/*; do prod_lib_path="${prod_staging_dir}/lib${prod_name}.a" - xcfwk_cmd+=" -library \"${prod_lib_path}\"" -# xcfwk_cmd+=" -headers \"${hdr_path}\"" # Headers currently break build during usage due to Xcode 12 bug: https://developer.apple.com/forums/thread/651043?answerId=628400022#628400022 + if test -e "${prod_lib_path}"; then + xcfwk_cmd+=" -library \"${prod_lib_path}\"" +# xcfwk_cmd+=" -headers \"${hdr_path}\"" # Headers currently break build during usage due to Xcode 12 bug: https://developer.apple.com/forums/thread/651043?answerId=628400022#628400022 + fi done rm -rf "${xcfwk_path}" diff --git a/Scripts/package_all.sh b/Scripts/package_all.sh index dceb62a7..2603ecf1 100755 --- a/Scripts/package_all.sh +++ b/Scripts/package_all.sh @@ -11,7 +11,8 @@ export MVK_OS="tvOS" export MVK_OS="macOS" . "${SRCROOT}/Scripts/package_moltenvk.sh" -. "${SRCROOT}/Scripts/package_shader_converter.sh" +. "${SRCROOT}/Scripts/package_moltenvk_xcframework.sh" +. "${SRCROOT}/Scripts/package_shader_converter_xcframework.sh" . "${SRCROOT}/Scripts/package_shader_converter_tool.sh" . "${SRCROOT}/Scripts/package_docs.sh" . "${SRCROOT}/Scripts/package_update_latest.sh" diff --git a/Scripts/package_moltenvk_xcframework.sh b/Scripts/package_moltenvk_xcframework.sh new file mode 100755 index 00000000..adbf8833 --- /dev/null +++ b/Scripts/package_moltenvk_xcframework.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +set -e + +. "${PROJECT_DIR}/Scripts/create_xcframework_func.sh" + +export MVK_PROD_BASE_NAME="MoltenVK" +export MVK_XCFWK_STAGING_DIR="${BUILD_DIR}/XCFrameworkStaging" +export MVK_XCFWK_DEST_DIR="${PROJECT_DIR}/Package/${CONFIGURATION}/${MVK_PROD_BASE_NAME}" + +# Assemble the headers +hdr_dir="${MVK_XCFWK_STAGING_DIR}/Headers" +mkdir -p "${hdr_dir}" +rm -rf "${hdr_dir}/${MVK_PROD_BASE_NAME}" +cp -pRL "${PROJECT_DIR}/${MVK_PROD_BASE_NAME}/include/${MVK_PROD_BASE_NAME}" "${hdr_dir}" + +create_xcframework "MoltenVK" diff --git a/Scripts/package_one_os.sh b/Scripts/package_one_os.sh index 2a6c0ef5..e8b65c26 100755 --- a/Scripts/package_one_os.sh +++ b/Scripts/package_one_os.sh @@ -1,7 +1,8 @@ #!/bin/bash . "${SRCROOT}/Scripts/package_moltenvk.sh" -. "${SRCROOT}/Scripts/package_shader_converter.sh" +. "${SRCROOT}/Scripts/package_moltenvk_xcframework.sh" +. "${SRCROOT}/Scripts/package_shader_converter_xcframework.sh" . "${SRCROOT}/Scripts/package_docs.sh" . "${SRCROOT}/Scripts/package_update_latest.sh" diff --git a/Scripts/package_shader_converter.sh b/Scripts/package_shader_converter_xcframework.sh similarity index 70% rename from Scripts/package_shader_converter.sh rename to Scripts/package_shader_converter_xcframework.sh index e354ddd5..abb930a9 100755 --- a/Scripts/package_shader_converter.sh +++ b/Scripts/package_shader_converter_xcframework.sh @@ -10,8 +10,11 @@ export MVK_XCFWK_DEST_DIR="${PROJECT_DIR}/Package/${CONFIGURATION}/${MVK_PROD_BA # Assemble the headers for the shader frameworks hdr_dir="${MVK_XCFWK_STAGING_DIR}/Headers" -rm -rf "${hdr_dir}" -cp -pRL "${PROJECT_DIR}/${MVK_PROD_BASE_NAME}/include/" "${hdr_dir}" +mkdir -p "${hdr_dir}" +rm -rf "${hdr_dir}/MoltenVKSPIRVToMSLConverter" +cp -pRL "${PROJECT_DIR}/${MVK_PROD_BASE_NAME}/include/MoltenVKSPIRVToMSLConverter" "${hdr_dir}" +rm -rf "${hdr_dir}/MoltenVKGLSLToSPIRVConverter" +cp -pRL "${PROJECT_DIR}/${MVK_PROD_BASE_NAME}/include/MoltenVKGLSLToSPIRVConverter" "${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.