From da3b23471b1f9c6aba12e06b0582d32c6711844e Mon Sep 17 00:00:00 2001 From: chrfalch Date: Mon, 25 Mar 2024 15:35:39 +0100 Subject: [PATCH 01/11] Feature: Add support for iOS Silicon Simulator: Build.sh - Added target platform to directory name generation - Added simulator build steps for both arm64 and x86_64 - Added building frameworks when BUILD_UNIVERSAL_LIBRARIES is set. --- build.sh | 52 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/build.sh b/build.sh index 56562cc1c6c7..e4b26a99d85b 100755 --- a/build.sh +++ b/build.sh @@ -581,9 +581,9 @@ function build_ios_target { local platform=$3 echo "Building iOS ${lc_target} (${arch}) for ${platform}..." - mkdir -p "out/cmake-ios-${lc_target}-${arch}" + mkdir -p "out/cmake-ios-${lc_target}-${arch}-${platform}" - pushd "out/cmake-ios-${lc_target}-${arch}" > /dev/null + pushd "out/cmake-ios-${lc_target}-${arch}-${platform}" > /dev/null if [[ ! -d "CMakeFiles" ]] || [[ "${ISSUE_CMAKE_ALWAYS}" == "true" ]]; then cmake \ @@ -598,14 +598,14 @@ function build_ios_target { ${MATDBG_OPTION} \ ${MATOPT_OPTION} \ ../.. - ln -sf "out/cmake-ios-${lc_target}-${arch}/compile_commands.json" \ + ln -sf "out/cmake-ios-${lc_target}-${arch}-${platform}/compile_commands.json" \ ../../compile_commands.json fi ${BUILD_COMMAND} if [[ "${INSTALL_COMMAND}" ]]; then - echo "Installing ${lc_target} in out/${lc_target}/filament..." + echo "Installing ${lc_target}-${arch}-${platform} in out/${lc_target}/filament..." ${BUILD_COMMAND} ${INSTALL_COMMAND} fi @@ -640,16 +640,26 @@ function build_ios { if [[ "${ISSUE_DEBUG_BUILD}" == "true" ]]; then build_ios_target "Debug" "arm64" "iphoneos" if [[ "${IOS_BUILD_SIMULATOR}" == "true" ]]; then + build_ios_target "Debug" "arm64" "iphonesimulator" build_ios_target "Debug" "x86_64" "iphonesimulator" fi - + if [[ "${BUILD_UNIVERSAL_LIBRARIES}" == "true" ]]; then build/ios/create-universal-libs.sh \ - -o out/ios-debug/filament/lib/universal \ - out/ios-debug/filament/lib/arm64 \ - out/ios-debug/filament/lib/x86_64 - rm -rf out/ios-debug/filament/lib/arm64 - rm -rf out/ios-debug/filament/lib/x86_64 + -o ./out/ios-debug/filament/lib/universal \ + ./out/ios-debug/filament/lib/arm64-iphonesimulator \ + ./out/ios-debug/filament/lib/x86_64-iphonesimulator + + rm -rf out/ios-debug/filament/lib/x86_64-iphonesimulator + rm -rf out/ios-debug/filament/lib/arm64-iphonesimulator + + build/ios/create-xc-frameworks.sh \ + -o out/ios-debug/filament/lib \ + out/ios-debug/filament/lib/arm64-iphoneos \ + out/ios-debug/filament/lib/universal + + rm -rf out/ios-debug/filament/lib/universal + rm -rf out/ios-debug/filament/lib/arm64-iphoneos fi archive_ios "Debug" @@ -658,16 +668,26 @@ function build_ios { if [[ "${ISSUE_RELEASE_BUILD}" == "true" ]]; then build_ios_target "Release" "arm64" "iphoneos" if [[ "${IOS_BUILD_SIMULATOR}" == "true" ]]; then + build_ios_target "Release" "arm64" "iphonesimulator" build_ios_target "Release" "x86_64" "iphonesimulator" fi - + if [[ "${BUILD_UNIVERSAL_LIBRARIES}" == "true" ]]; then build/ios/create-universal-libs.sh \ - -o out/ios-release/filament/lib/universal \ - out/ios-release/filament/lib/arm64 \ - out/ios-release/filament/lib/x86_64 - rm -rf out/ios-release/filament/lib/arm64 - rm -rf out/ios-release/filament/lib/x86_64 + -o ./out/ios-release/filament/lib/universal \ + ./out/ios-release/filament/lib/arm64-iphonesimulator \ + ./out/ios-release/filament/lib/x86_64-iphonesimulator + + rm -rf out/ios-release/filament/lib/x86_64-iphonesimulator + rm -rf out/ios-release/filament/lib/arm64-iphonesimulator + + build/ios/create-xc-frameworks.sh \ + -o out/ios-release/filament/lib \ + out/ios-release/filament/lib/arm64-iphoneos \ + out/ios-release/filament/lib/universal + + rm -rf out/ios-release/filament/lib/universal + rm -rf out/ios-release/filament/lib/arm64-iphoneos fi archive_ios "Release" From f504dfc23ea98d74877f493dade5a5bb350765f5 Mon Sep 17 00:00:00 2001 From: chrfalch Date: Mon, 25 Mar 2024 15:36:15 +0100 Subject: [PATCH 02/11] Feature: Add support for iOS Silicon Simulator: CmakeLists.txt Added platform name as part of destination directory if PLATFORM_NAME is set. --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b18c4a5b4ed6..e032ccb20bdb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -604,7 +604,11 @@ endif() string(TOLOWER "${DIST_ARCH}" DIST_ARCH) string(REPLACE "amd64" "x86_64" DIST_ARCH "${DIST_ARCH}") if (NOT DIST_DIR) - set(DIST_DIR "${DIST_ARCH}") + if(PLATFORM_NAME) + set(DIST_DIR "${DIST_ARCH}-${PLATFORM_NAME}") + else() + set(DIST_DIR "${DIST_ARCH}") + endif() endif() # ================================================================================================== From 595b9717dbe32358b0d82c759ea0a633b204d4fb Mon Sep 17 00:00:00 2001 From: chrfalch Date: Mon, 25 Mar 2024 15:36:38 +0100 Subject: [PATCH 03/11] Feature: Add support for iOS Silicon Simulator: XC Frameworks Added script with support for building XC.Frameworks --- build/ios/create-xc-frameworks.sh | 107 ++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100755 build/ios/create-xc-frameworks.sh diff --git a/build/ios/create-xc-frameworks.sh b/build/ios/create-xc-frameworks.sh new file mode 100755 index 000000000000..d8981ec9c368 --- /dev/null +++ b/build/ios/create-xc-frameworks.sh @@ -0,0 +1,107 @@ +#!/usr/bin/env bash + +set -e + +function print_help { + local SELF_NAME + SELF_NAME=$(basename "$0") + echo "$SELF_NAME. Combine multiple single-architecture or universal libraries into xc-frameworks." + echo "" + echo "Usage:" + echo " $SELF_NAME [options] ..." + echo "" + echo "Options:" + echo " -h" + echo " Print this help message." + echo " -o" + echo " Output directory to store the xcframeworks libraries." + echo "" + echo "Example:" + echo " Given the follow directories:" + echo " ├── universal/" + echo " │ └── libfoo.a <- universal library - ensure they share the same platform (iphone/simulator)" + echo " └── arm64-iphoneos/" + echo " └── libfoo.a <- arm64 iphoneos platform" + echo "" + echo " $SELF_NAME -o frameworks/ arm64-iphoneos/ universal/" + echo "" + echo " Each library is combined into an xc-framework:" + echo " └── frameworks/" + echo " └── libfoo.xcframework" + echo "" + echo "Each should contain one or more single or universal-architecture static libraries." + echo "All s should contain the same number of libraries, with the same names." +} + +OUTPUT_DIR="" +while getopts "ho:" opt; do + case ${opt} in + h) + print_help + exit 1 + ;; + o) + OUTPUT_DIR="${OPTARG}" + ;; + *) + print_help + exit 1 + ;; + esac +done + +shift $((OPTIND - 1)) + +PATHS=("$@") + +if [[ ! "${PATHS[*]}" ]]; then + echo "One or more paths required." + print_help + exit 1 +fi + +if [[ ! "${OUTPUT_DIR}" ]]; then + echo "Output directory required." + print_help + exit 1 +fi + +# Create the output directory, if it doesn't exist already. +mkdir -p "${OUTPUT_DIR}" + +# Use the first path as the "leader" path. All paths should contain the same number of files with +# the same names, so it doesn't matter which we chose. +LEADER_PATH="${PATHS[0]}" + +echo "Creating universal libraries from path: ${LEADER_PATH}..." + +# Loop through each file in the leader path. For each library we find, we'll collect additional +# architectures in the other paths and combine them all into a universal library. +for FILE in "${LEADER_PATH}"/*.a; do + [ -f "${FILE}" ] || continue + + # The static library file name, like "libfilament.a" + LIBRARY_NAME="${FILE##*/}" + + INPUT_FILES=("-library ${LEADER_PATH}/${LIBRARY_NAME}") + for ARCH_PATH in "${PATHS[@]:1}"; do + THIS_FILE="${ARCH_PATH}/${LIBRARY_NAME}" + if [[ -f "${THIS_FILE}" ]]; then + INPUT_FILES+=("-library ${THIS_FILE}") + else + echo "Error: ${THIS_FILE} does not exist." + exit 1 + fi + done + + # Remove the .a extension + LIBRARY_NAME="${LIBRARY_NAME%.a}" + + OUTPUT="${OUTPUT_DIR}/${LIBRARY_NAME}.xcframework" + # Delete previous xcframework + rm -rf $OUTPUT + + # Create the xcframework command and execute it + CMD="xcodebuild -create-xcframework ${INPUT_FILES[@]} -output ${OUTPUT}" + eval $CMD +done From b7c6b7921f1e0e8d90403bae27acd5c5b364d558 Mon Sep 17 00:00:00 2001 From: chrfalch Date: Mon, 25 Mar 2024 15:37:42 +0100 Subject: [PATCH 04/11] Feature: Add support for iOS Silicon Simulator: iOS.cmake Appended -target parameter for the iOS parameters when building for simulator to ensure the emitted libraries are targetting the simulator. --- third_party/clang/iOS.cmake | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/third_party/clang/iOS.cmake b/third_party/clang/iOS.cmake index a5619558834a..6153cf8641e3 100644 --- a/third_party/clang/iOS.cmake +++ b/third_party/clang/iOS.cmake @@ -103,7 +103,12 @@ IF (NOT DEFINED IOS_MIN_TARGET) OUTPUT_STRIP_TRAILING_WHITESPACE) ENDIF() -SET(IOS_COMMON_FLAGS "-m${PLATFORM_FLAG_NAME}-version-min=${IOS_MIN_TARGET}") +if(PLATFORM_NAME STREQUAL "iphonesimulator") + # Ensure that the simulator is built with the correct target + SET(IOS_COMMON_FLAGS "-m${PLATFORM_FLAG_NAME}-version-min=${IOS_MIN_TARGET} -target ${IOS_ARCH}-apple-ios-simulator") +else() + SET(IOS_COMMON_FLAGS "-m${PLATFORM_FLAG_NAME}-version-min=${IOS_MIN_TARGET}") +endif() SET(CMAKE_C_FLAGS_INIT "${IOS_COMMON_FLAGS}") SET(CMAKE_CXX_FLAGS_INIT "${IOS_COMMON_FLAGS}") From 09bf65f532a61bcad84a82734ebcc500371e8ee1 Mon Sep 17 00:00:00 2001 From: chrfalch Date: Mon, 25 Mar 2024 15:38:33 +0100 Subject: [PATCH 05/11] Feature: Add support for iOS Silicon Simulator: Podspec - Removed fix for XCode 12 linking error - Updated podspec to include XCFrameworks instead of .a files directly to support multiple archs and platforms. --- ios/CocoaPods/Filament.podspec | 56 +++++++++++++++------------------- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/ios/CocoaPods/Filament.podspec b/ios/CocoaPods/Filament.podspec index 513d6c197520..c3a9640f855a 100644 --- a/ios/CocoaPods/Filament.podspec +++ b/ios/CocoaPods/Filament.podspec @@ -8,12 +8,6 @@ Pod::Spec.new do |spec| spec.platform = :ios, "11.0" spec.source = { :http => "https://github.com/google/filament/releases/download/v1.51.0/filament-v1.51.0-ios.tgz" } - # Fix linking error with Xcode 12; we do not yet support the simulator on Apple silicon. - spec.pod_target_xcconfig = { - 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' - } - spec.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } - spec.subspec "filament" do |ss| ss.source_files = "include/filament/*.h", @@ -24,12 +18,12 @@ Pod::Spec.new do |spec| "include/geometry/*.h" ss.header_mappings_dir = "include" ss.vendored_libraries = - "lib/universal/libfilament.a", - "lib/universal/libbackend.a", - "lib/universal/libfilabridge.a", - "lib/universal/libfilaflat.a", - "lib/universal/libibl.a", - "lib/universal/libgeometry.a" + "lib/libfilament.xcframework", + "lib/libbackend.xcframework", + "lib/libfilabridge.xcframework", + "lib/libfilaflat.xcframework", + "lib/libibl.xcframework", + "lib/libgeometry.xcframework" ss.dependency "Filament/utils" ss.dependency "Filament/math" end @@ -41,10 +35,10 @@ Pod::Spec.new do |spec| "include/filament/MaterialEnums.h" ss.header_mappings_dir = "include" ss.vendored_libraries = - "lib/universal/libfilamat.a", - "lib/universal/libshaders.a", - "lib/universal/libsmol-v.a", - "lib/universal/libfilabridge.a" + "lib/libfilamat.xcframework", + "lib/libshaders.xcframework", + "lib/libsmol-v.xcframework", + "lib/libfilabridge.xcframework" ss.dependency "Filament/utils" ss.dependency "Filament/math" end @@ -53,10 +47,10 @@ Pod::Spec.new do |spec| ss.source_files = "include/gltfio/**/*.h" ss.header_mappings_dir = "include" ss.vendored_libraries = - "lib/universal/libgltfio_core.a", - "lib/universal/libdracodec.a", - "lib/universal/libuberarchive.a", - "lib/universal/libstb.a" + "lib/libgltfio_core.xcframework", + "lib/libdracodec.xcframework", + "lib/libuberarchive.xcframework", + "lib/libstb.xcframework" ss.dependency "Filament/filament" ss.dependency "Filament/ktxreader" ss.dependency "Filament/uberz" @@ -64,7 +58,7 @@ Pod::Spec.new do |spec| spec.subspec "camutils" do |ss| ss.source_files = "include/camutils/*.h" - ss.vendored_libraries = "lib/universal/libcamutils.a" + ss.vendored_libraries = "lib/libcamutils.xcframework" ss.header_dir = "camutils" ss.dependency "Filament/math" end @@ -72,15 +66,15 @@ Pod::Spec.new do |spec| spec.subspec "filameshio" do |ss| ss.source_files = "include/filameshio/*.h" ss.vendored_libraries = - "lib/universal/libfilameshio.a", - "lib/universal/libmeshoptimizer.a" + "lib/libfilameshio.xcframework", + "lib/libmeshoptimizer.xcframework" ss.header_dir = "filameshio" ss.dependency "Filament/filament" end spec.subspec "image" do |ss| ss.source_files = "include/image/*.h" - ss.vendored_libraries = "lib/universal/libimage.a" + ss.vendored_libraries = "lib/libimage.xcframework" ss.header_dir = "image" ss.dependency "Filament/filament" end @@ -88,7 +82,7 @@ Pod::Spec.new do |spec| spec.subspec "utils" do |ss| ss.source_files = "include/utils/**/*.h" ss.header_mappings_dir = "include" - ss.vendored_libraries = "lib/universal/libutils.a" + ss.vendored_libraries = "lib/libutils.xcframework" ss.dependency "Filament/tsl" end @@ -106,8 +100,8 @@ Pod::Spec.new do |spec| ss.source_files = "include/ktxreader/*.h" ss.header_mappings_dir = "include" ss.vendored_libraries = - "lib/universal/libktxreader.a", - "lib/universal/libbasis_transcoder.a" + "lib/libktxreader.xcframework", + "lib/libbasis_transcoder.xcframework" ss.dependency "Filament/image" ss.dependency "Filament/filament" end @@ -116,8 +110,8 @@ Pod::Spec.new do |spec| ss.source_files = "include/viewer/*.h" ss.header_mappings_dir = "include" ss.vendored_libraries = - "lib/universal/libviewer.a", - "lib/universal/libcivetweb.a" + "lib/libviewer.xcframework", + "lib/libcivetweb.xcframework" ss.dependency "Filament/filament" ss.dependency "Filament/gltfio_core" end @@ -126,8 +120,8 @@ Pod::Spec.new do |spec| ss.source_files = "include/uberz/*.h" ss.header_mappings_dir = "include" ss.vendored_libraries = - "lib/universal/libuberzlib.a", - "lib/universal/libzstd.a" + "lib/libuberzlib.xcframework", + "lib/libzstd.xcframework" ss.header_dir = "uberz" ss.dependency "Filament/filamat" ss.dependency "Filament/tsl" From 4e7dbb9c63c8c3c039f738979f50dc17ae49e9b9 Mon Sep 17 00:00:00 2001 From: chrfalch Date: Mon, 25 Mar 2024 16:53:31 +0100 Subject: [PATCH 06/11] Renamed vendored_libraries -> vendored_frameworks in the podspec file --- ios/CocoaPods/Filament.podspec | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ios/CocoaPods/Filament.podspec b/ios/CocoaPods/Filament.podspec index c3a9640f855a..d93a1ed1abdc 100644 --- a/ios/CocoaPods/Filament.podspec +++ b/ios/CocoaPods/Filament.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |spec| "include/ibl/*.h", "include/geometry/*.h" ss.header_mappings_dir = "include" - ss.vendored_libraries = + ss.vendored_frameworks = "lib/libfilament.xcframework", "lib/libbackend.xcframework", "lib/libfilabridge.xcframework", @@ -34,7 +34,7 @@ Pod::Spec.new do |spec| "include/filament/MaterialChunkType.h", "include/filament/MaterialEnums.h" ss.header_mappings_dir = "include" - ss.vendored_libraries = + ss.vendored_frameworks = "lib/libfilamat.xcframework", "lib/libshaders.xcframework", "lib/libsmol-v.xcframework", @@ -46,7 +46,7 @@ Pod::Spec.new do |spec| spec.subspec "gltfio_core" do |ss| ss.source_files = "include/gltfio/**/*.h" ss.header_mappings_dir = "include" - ss.vendored_libraries = + ss.vendored_frameworks = "lib/libgltfio_core.xcframework", "lib/libdracodec.xcframework", "lib/libuberarchive.xcframework", @@ -58,14 +58,14 @@ Pod::Spec.new do |spec| spec.subspec "camutils" do |ss| ss.source_files = "include/camutils/*.h" - ss.vendored_libraries = "lib/libcamutils.xcframework" + ss.vendored_frameworks = "lib/libcamutils.xcframework" ss.header_dir = "camutils" ss.dependency "Filament/math" end spec.subspec "filameshio" do |ss| ss.source_files = "include/filameshio/*.h" - ss.vendored_libraries = + ss.vendored_frameworks = "lib/libfilameshio.xcframework", "lib/libmeshoptimizer.xcframework" ss.header_dir = "filameshio" @@ -74,7 +74,7 @@ Pod::Spec.new do |spec| spec.subspec "image" do |ss| ss.source_files = "include/image/*.h" - ss.vendored_libraries = "lib/libimage.xcframework" + ss.vendored_frameworks = "lib/libimage.xcframework" ss.header_dir = "image" ss.dependency "Filament/filament" end @@ -82,7 +82,7 @@ Pod::Spec.new do |spec| spec.subspec "utils" do |ss| ss.source_files = "include/utils/**/*.h" ss.header_mappings_dir = "include" - ss.vendored_libraries = "lib/libutils.xcframework" + ss.vendored_frameworks = "lib/libutils.xcframework" ss.dependency "Filament/tsl" end @@ -99,7 +99,7 @@ Pod::Spec.new do |spec| spec.subspec "ktxreader" do |ss| ss.source_files = "include/ktxreader/*.h" ss.header_mappings_dir = "include" - ss.vendored_libraries = + ss.vendored_frameworks = "lib/libktxreader.xcframework", "lib/libbasis_transcoder.xcframework" ss.dependency "Filament/image" @@ -109,7 +109,7 @@ Pod::Spec.new do |spec| spec.subspec "viewer" do |ss| ss.source_files = "include/viewer/*.h" ss.header_mappings_dir = "include" - ss.vendored_libraries = + ss.vendored_frameworks = "lib/libviewer.xcframework", "lib/libcivetweb.xcframework" ss.dependency "Filament/filament" @@ -119,7 +119,7 @@ Pod::Spec.new do |spec| spec.subspec "uberz" do |ss| ss.source_files = "include/uberz/*.h" ss.header_mappings_dir = "include" - ss.vendored_libraries = + ss.vendored_frameworks = "lib/libuberzlib.xcframework", "lib/libzstd.xcframework" ss.header_dir = "uberz" From c7abaa112a3df9b5c9f2a83c5aa0ee894a015027 Mon Sep 17 00:00:00 2001 From: chrfalch Date: Tue, 26 Mar 2024 10:38:01 +0100 Subject: [PATCH 07/11] Added line to release notes --- NEW_RELEASE_NOTES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEW_RELEASE_NOTES.md b/NEW_RELEASE_NOTES.md index 77a7acc5f466..1b54bc05218c 100644 --- a/NEW_RELEASE_NOTES.md +++ b/NEW_RELEASE_NOTES.md @@ -9,3 +9,4 @@ appropriate header in [RELEASE_NOTES.md](./RELEASE_NOTES.md). ## Release notes for next branch cut - engine: Add experimental APIs `Engine::builder::paused()` and `Engine::setPaused()` +- ios: Add support for Apple Silicon (arm64) simulator \ No newline at end of file From 3c3780fc3bc5d6355465bcacd71832826f8aa08b Mon Sep 17 00:00:00 2001 From: chrfalch Date: Tue, 26 Mar 2024 11:51:37 +0100 Subject: [PATCH 08/11] Updated example projects to use xcframeworks It is not possible to have different xcframeworks depending on build type (release/debug) so release frameworks have been added. --- ios/samples/README.md | 2 +- ios/samples/app-template.yml | 22 ++++++++++++---------- ios/samples/backend-test/project.yml | 5 ++++- ios/samples/gltf-viewer/project.yml | 19 ++++++++++++++----- ios/samples/hello-ar/project.yml | 8 ++++---- ios/samples/hello-gltf/project.yml | 14 ++++++++++---- ios/samples/hello-pbr/project.yml | 7 ++++--- 7 files changed, 49 insertions(+), 28 deletions(-) diff --git a/ios/samples/README.md b/ios/samples/README.md index 4c132849ee45..6c9c165eabba 100644 --- a/ios/samples/README.md +++ b/ios/samples/README.md @@ -47,7 +47,7 @@ build Filament in Release mode, replace `debug` with `release` in the above `bui If you also want to be able to run on the iOS simulator, add the `-s` flag to the `build.sh` command. For example, the following command will build for both devices (ARM64) and the simulator -(x86_64) in Debug mode: +(x86_64/ARM64) in Debug mode: ``` $ ./build.sh -s -p ios -i debug diff --git a/ios/samples/app-template.yml b/ios/samples/app-template.yml index e8e14c507153..9c407448d165 100644 --- a/ios/samples/app-template.yml +++ b/ios/samples/app-template.yml @@ -17,25 +17,27 @@ targetTemplates: configVariants: - Metal - OpenGL + dependencies: + - framework: "../../out/ios-release/filament/lib/libbackend.xcframework" + - framework: "../../out/ios-release/filament/lib/libfilament.xcframework" + - framework: "../../out/ios-release/filament/lib/libfilaflat.xcframework" + - framework: "../../out/ios-release/filament/lib/libktxreader.xcframework" + - framework: "../../out/ios-release/filament/lib/libfilabridge.xcframework" + - framework: "../../out/ios-release/filament/lib/libutils.xcframework" + - framework: "../../out/ios-release/filament/lib/libsmol-v.xcframework" + - framework: "../../out/ios-release/filament/lib/libgeometry.xcframework" + - framework: "../../out/ios-release/filament/lib/libibl.xcframework" settings: base: - OTHER_LDFLAGS: ["-lfilament", "-lbackend", "-lfilaflat", "-lktxreader", - "-lfilabridge", "-lutils", "-lsmol-v", "-lgeometry", "-libl"] ENABLE_BITCODE: NO CLANG_CXX_LANGUAGE_STANDARD: gnu++17 # This allows users to not have to specify a unique bundle ID when building the sample apps. SAMPLE_CODE_DISAMBIGUATOR: ${DEVELOPMENT_TEAM} configs: debug: - HEADER_SEARCH_PATHS: ["../../../out/ios-debug/filament/include", "generated"] - LIBRARY_SEARCH_PATHS: - - "../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)" - - "../../../out/ios-debug/filament/lib/universal" + HEADER_SEARCH_PATHS: ["../../../out/ios-debug/filament/include", "generated"] release: - HEADER_SEARCH_PATHS: ["../../../out/ios-release/filament/include", "generated"] - LIBRARY_SEARCH_PATHS: - - "../../../out/ios-release/filament/lib/$(CURRENT_ARCH)" - - "../../../out/ios-release/filament/lib/universal" + HEADER_SEARCH_PATHS: ["../../../out/ios-release/filament/include", "generated"] metal: GCC_PREPROCESSOR_DEFINITIONS: ["FILAMENT_APP_USE_METAL=1", "$(inherited)"] opengl: diff --git a/ios/samples/backend-test/project.yml b/ios/samples/backend-test/project.yml index 37c28b099feb..75c41abdccbb 100644 --- a/ios/samples/backend-test/project.yml +++ b/ios/samples/backend-test/project.yml @@ -6,8 +6,11 @@ targets: backend-test: templates: - FilamentApp + dependencies: + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libbackend_test.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libfilamat.xcframework settings: base: # Because each test case is a separate file, the -force_load flag is necessary to prevent the # linker from removing "unused" symbols. - OTHER_LDFLAGS: ["-lfilamat", "-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a"] + OTHER_LDFLAGS: ["-force_load ../../../out/ios-release/filament/lib/arm64/libbackend_test.xcframework"] diff --git a/ios/samples/gltf-viewer/project.yml b/ios/samples/gltf-viewer/project.yml index 1f850dd45a0e..9f1377396e15 100644 --- a/ios/samples/gltf-viewer/project.yml +++ b/ios/samples/gltf-viewer/project.yml @@ -17,11 +17,20 @@ targets: optional: true templates: - FilamentApp - settings: - base: - OTHER_LDFLAGS: ["-lgltfio_core", "-luberarchive", "-limage", "-lstb", "-lbasis_transcoder", - "-lzstd", "-lcamutils", "-ldracodec", "-lmeshoptimizer", "-lviewer", "-lcivetweb", - "-luberzlib"] + dependencies: + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libgltfio_core.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libuberarchive.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libimage.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libstb.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libbasis_transcoder.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libzstd.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libcamutils.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libdracodec.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libmeshoptimizer.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libviewer.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libcivetweb.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libuberzlib.xcframework + preBuildScripts: - path: build-resources.sh name: Build Resources diff --git a/ios/samples/hello-ar/project.yml b/ios/samples/hello-ar/project.yml index 483e824a2531..a62612d7681b 100644 --- a/ios/samples/hello-ar/project.yml +++ b/ios/samples/hello-ar/project.yml @@ -7,10 +7,10 @@ targets: templates: - FilamentApp dependencies: - - sdk: ARKit.framework - settings: - base: - OTHER_LDFLAGS: ["-lfilameshio", "-lmeshoptimizer", "-limage"] + - sdk: ARKit.framework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libfilameshio.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libmeshoptimizer.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libimage.xcframework preBuildScripts: - path: build-resources.sh name: Build Resources diff --git a/ios/samples/hello-gltf/project.yml b/ios/samples/hello-gltf/project.yml index 377578053d3d..adfa2896ed64 100644 --- a/ios/samples/hello-gltf/project.yml +++ b/ios/samples/hello-gltf/project.yml @@ -10,10 +10,16 @@ targets: buildPhase: resources templates: - FilamentApp - settings: - base: - OTHER_LDFLAGS: ["-lgltfio_core", "-luberarchive", "-limage", "-ldracodec", "-lmeshoptimizer", - "-lbasis_transcoder", "-lstb", "-lzstd", "-luberzlib"] + dependencies: + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libgltfio_core.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libuberarchive.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libimage.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libstb.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libbasis_transcoder.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libzstd.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libdracodec.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libmeshoptimizer.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libuberzlib.xcframework preBuildScripts: - path: build-resources.sh name: Build Resources diff --git a/ios/samples/hello-pbr/project.yml b/ios/samples/hello-pbr/project.yml index 36a6fd26a3ec..f7daeac3e48b 100644 --- a/ios/samples/hello-pbr/project.yml +++ b/ios/samples/hello-pbr/project.yml @@ -6,9 +6,10 @@ targets: hello-pbr: templates: - FilamentApp - settings: - base: - OTHER_LDFLAGS: ["-lfilameshio", "-lmeshoptimizer", "-limage"] + dependencies: + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libfilameshio.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libmeshoptimizer.xcframework + - framework: $(SRCROOT)/../../../out/ios-release/filament/lib/libimage.xcframework preBuildScripts: - path: build-resources.sh name: Build Resources From dbc7a58bf3eb6dfc63dd86b182941b42e336d32b Mon Sep 17 00:00:00 2001 From: chrfalch Date: Tue, 26 Mar 2024 22:18:16 +0100 Subject: [PATCH 09/11] Updated samples by running ios/samples/generate-samples.sh Looks like CI is building without running generate - so then we need to check in and submit changes to these projects as well. --- .../backend-test.xcodeproj/project.pbxproj | 190 +++++++---- .../xcschemes/backend-test Metal.xcscheme | 2 +- .../xcschemes/backend-test OpenGL.xcscheme | 2 +- .../gltf-viewer.xcodeproj/project.pbxproj | 302 +++++++++++------- .../xcschemes/gltf-viewer Metal.xcscheme | 2 +- .../xcschemes/gltf-viewer OpenGL.xcscheme | 2 +- .../hello-ar.xcodeproj/project.pbxproj | 197 +++++++----- .../xcschemes/hello-ar Metal.xcscheme | 2 +- .../xcschemes/hello-ar OpenGL.xcscheme | 2 +- .../hello-gltf.xcodeproj/project.pbxproj | 272 ++++++++++------ .../xcschemes/hello-gltf Metal.xcscheme | 2 +- .../xcschemes/hello-gltf OpenGL.xcscheme | 2 +- .../hello-pbr.xcodeproj/project.pbxproj | 212 +++++++----- .../xcschemes/hello-pbr Metal.xcscheme | 2 +- .../xcschemes/hello-pbr OpenGL.xcscheme | 2 +- .../hello-triangle.xcodeproj/project.pbxproj | 170 ++++++---- .../xcschemes/hello-triangle Metal.xcscheme | 2 +- .../xcschemes/hello-triangle OpenGL.xcscheme | 2 +- .../project.pbxproj | 170 ++++++---- .../transparent-rendering Metal.xcscheme | 2 +- .../transparent-rendering OpenGL.xcscheme | 2 +- 21 files changed, 964 insertions(+), 577 deletions(-) diff --git a/ios/samples/backend-test/backend-test.xcodeproj/project.pbxproj b/ios/samples/backend-test/backend-test.xcodeproj/project.pbxproj index b47f4c00e364..ea4c11fe0465 100644 --- a/ios/samples/backend-test/backend-test.xcodeproj/project.pbxproj +++ b/ios/samples/backend-test/backend-test.xcodeproj/project.pbxproj @@ -3,34 +3,112 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ + 0DE5DD77BF1B9049D63B76D0 /* libutils.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 7C969D515221A7739C68F3AC /* libutils.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 20863805FC626BF952BA3275 /* ViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 33D80A4472074C601C57C773 /* ViewController.mm */; }; + 2AABB2C1262EBA9553666078 /* libsmol-v.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8F108854ADC54BBAA29C2055 /* libsmol-v.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 32AC9F2183DD11F130D4A91D /* libfilament.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 912652335565C18B252345DE /* libfilament.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 376F63E72973F07BF618082D /* FilamentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = B54DFEB4DB6ACC0289FA3046 /* FilamentView.mm */; }; + 3D73E90782CC3A2124DF046F /* libfilaflat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E8375B927AFDFD1069016D1 /* libfilaflat.xcframework */; }; 477A2A67D32B7A3AF2E7B2F4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EB0A767D257F3D05BE9F0960 /* LaunchScreen.storyboard */; }; + 66014C413BCBF00E8E6DAF76 /* libgeometry.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB3F32D8D3D7310FA3A0C1A1 /* libgeometry.xcframework */; }; + 6A5D5E984CA862B943742745 /* libgeometry.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DB3F32D8D3D7310FA3A0C1A1 /* libgeometry.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 7D8D3494388D7BF4D9FE4FCE /* libfilamat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C4BDDF85AADA2069C0F9FBAE /* libfilamat.xcframework */; }; + 7E671E777FDB5F34AAA13D5A /* libutils.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C969D515221A7739C68F3AC /* libutils.xcframework */; }; + 8095A6D37F6F1C9C13BBFEA8 /* libfilamat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C4BDDF85AADA2069C0F9FBAE /* libfilamat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8402B2AC6D081D1E8E065552 /* libbackend.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8632D4625CFCBD32A46772B5 /* libbackend.xcframework */; }; + 88C039F10343B8598FD5FF7F /* libfilabridge.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = B2A3753419FC4A7D4C039868 /* libfilabridge.xcframework */; }; 91CCBA3BA96DC289D0E8E975 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = AE6C78F32A0494087B0CEF32 /* main.mm */; }; + AA5AB498C5A6117057B06824 /* libfilaflat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9E8375B927AFDFD1069016D1 /* libfilaflat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + AE63AFEA7E7D507BB677C158 /* libbackend.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8632D4625CFCBD32A46772B5 /* libbackend.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B3684DB18E82C867020294F1 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FDB89AD408A508D6CB74C32 /* AppDelegate.m */; }; + B73B15843FCEEEB637C636F4 /* libbackend_test.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 01B66093324E8D661CBEBB0F /* libbackend_test.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + BFE92829375EE1DBA1E4A689 /* libfilabridge.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B2A3753419FC4A7D4C039868 /* libfilabridge.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; C74DDEF71B6F3C060BB56189 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B63A6E45E40F58037ABD8F84 /* Main.storyboard */; }; + C8C8BF3416B9B37003F1031E /* libktxreader.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 19CBBB6C426E8D038BDAC97B /* libktxreader.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D0E54C592A378E549C96A54D /* libibl.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D1E30700B368B5F84196FD97 /* libibl.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + D472EB54D462394FE99DCE2B /* libibl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1E30700B368B5F84196FD97 /* libibl.xcframework */; }; + D5B2F0A85F7C6F352AA99DF1 /* libsmol-v.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F108854ADC54BBAA29C2055 /* libsmol-v.xcframework */; }; + F571BE7CBFBADBDF42C7C23F /* libbackend_test.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 01B66093324E8D661CBEBB0F /* libbackend_test.xcframework */; }; + F5E844BFD77174F770543A87 /* libfilament.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 912652335565C18B252345DE /* libfilament.xcframework */; }; + FB393C813D7A30404A2DEF23 /* libktxreader.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 19CBBB6C426E8D038BDAC97B /* libktxreader.xcframework */; }; FC9D623AC5CF31BA9FB0C47B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 93394D7D4A78C56A2BD31A7D /* Assets.xcassets */; }; /* End PBXBuildFile section */ +/* Begin PBXCopyFilesBuildPhase section */ + 0ABB76F2D4011A4AF5186FCA /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + AE63AFEA7E7D507BB677C158 /* libbackend.xcframework in Embed Frameworks */, + 32AC9F2183DD11F130D4A91D /* libfilament.xcframework in Embed Frameworks */, + AA5AB498C5A6117057B06824 /* libfilaflat.xcframework in Embed Frameworks */, + C8C8BF3416B9B37003F1031E /* libktxreader.xcframework in Embed Frameworks */, + BFE92829375EE1DBA1E4A689 /* libfilabridge.xcframework in Embed Frameworks */, + 0DE5DD77BF1B9049D63B76D0 /* libutils.xcframework in Embed Frameworks */, + 2AABB2C1262EBA9553666078 /* libsmol-v.xcframework in Embed Frameworks */, + 6A5D5E984CA862B943742745 /* libgeometry.xcframework in Embed Frameworks */, + D0E54C592A378E549C96A54D /* libibl.xcframework in Embed Frameworks */, + B73B15843FCEEEB637C636F4 /* libbackend_test.xcframework in Embed Frameworks */, + 8095A6D37F6F1C9C13BBFEA8 /* libfilamat.xcframework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ + 01B66093324E8D661CBEBB0F /* libbackend_test.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbackend_test.xcframework; path = "$(SRCROOT)/../../../out/ios-release/filament/lib/libbackend_test.xcframework"; sourceTree = ""; }; 056C16E7805E8D33D4C8F7B4 /* FilamentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentView.h; sourceTree = ""; }; 13DDE7723EC1A6EFCA4D2D58 /* backend-test.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "backend-test.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 17364ECD407006EEBDC06024 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 19CBBB6C426E8D038BDAC97B /* libktxreader.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libktxreader.xcframework; path = "../../../out/ios-release/filament/lib/libktxreader.xcframework"; sourceTree = ""; }; 276A0ADD5B521719BBB1DA21 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; 33D80A4472074C601C57C773 /* ViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ViewController.mm; sourceTree = ""; }; 5FDB89AD408A508D6CB74C32 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 603475CEE63507AA04A9B21A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 7C969D515221A7739C68F3AC /* libutils.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libutils.xcframework; path = "../../../out/ios-release/filament/lib/libutils.xcframework"; sourceTree = ""; }; + 8632D4625CFCBD32A46772B5 /* libbackend.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbackend.xcframework; path = "../../../out/ios-release/filament/lib/libbackend.xcframework"; sourceTree = ""; }; + 8F108854ADC54BBAA29C2055 /* libsmol-v.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libsmol-v.xcframework"; path = "../../../out/ios-release/filament/lib/libsmol-v.xcframework"; sourceTree = ""; }; + 912652335565C18B252345DE /* libfilament.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilament.xcframework; path = "../../../out/ios-release/filament/lib/libfilament.xcframework"; sourceTree = ""; }; 93394D7D4A78C56A2BD31A7D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 9E8375B927AFDFD1069016D1 /* libfilaflat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilaflat.xcframework; path = "../../../out/ios-release/filament/lib/libfilaflat.xcframework"; sourceTree = ""; }; A283B2D6DB365368855E2D7A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; AE6C78F32A0494087B0CEF32 /* main.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = ""; }; + B2A3753419FC4A7D4C039868 /* libfilabridge.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilabridge.xcframework; path = "../../../out/ios-release/filament/lib/libfilabridge.xcframework"; sourceTree = ""; }; B54DFEB4DB6ACC0289FA3046 /* FilamentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FilamentView.mm; sourceTree = ""; }; + C4BDDF85AADA2069C0F9FBAE /* libfilamat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilamat.xcframework; path = "$(SRCROOT)/../../../out/ios-release/filament/lib/libfilamat.xcframework"; sourceTree = ""; }; C76230D48038E8109EC121B0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + D1E30700B368B5F84196FD97 /* libibl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libibl.xcframework; path = "../../../out/ios-release/filament/lib/libibl.xcframework"; sourceTree = ""; }; + DB3F32D8D3D7310FA3A0C1A1 /* libgeometry.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgeometry.xcframework; path = "../../../out/ios-release/filament/lib/libgeometry.xcframework"; sourceTree = ""; }; /* End PBXFileReference section */ +/* Begin PBXFrameworksBuildPhase section */ + 5E31B50ED1338E6ADE1FA49A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8402B2AC6D081D1E8E065552 /* libbackend.xcframework in Frameworks */, + F5E844BFD77174F770543A87 /* libfilament.xcframework in Frameworks */, + 3D73E90782CC3A2124DF046F /* libfilaflat.xcframework in Frameworks */, + FB393C813D7A30404A2DEF23 /* libktxreader.xcframework in Frameworks */, + 88C039F10343B8598FD5FF7F /* libfilabridge.xcframework in Frameworks */, + 7E671E777FDB5F34AAA13D5A /* libutils.xcframework in Frameworks */, + D5B2F0A85F7C6F352AA99DF1 /* libsmol-v.xcframework in Frameworks */, + 66014C413BCBF00E8E6DAF76 /* libgeometry.xcframework in Frameworks */, + D472EB54D462394FE99DCE2B /* libibl.xcframework in Frameworks */, + F571BE7CBFBADBDF42C7C23F /* libbackend_test.xcframework in Frameworks */, + 7D8D3494388D7BF4D9FE4FCE /* libfilamat.xcframework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + /* Begin PBXGroup section */ 05CA69F10D830E40A8FB561D /* Products */ = { isa = PBXGroup; @@ -44,10 +122,29 @@ isa = PBXGroup; children = ( FE198F0E1EF047534F8F3128 /* backend-test */, + 81BF22C13654E58F622E6BEC /* Frameworks */, 05CA69F10D830E40A8FB561D /* Products */, ); sourceTree = ""; }; + 81BF22C13654E58F622E6BEC /* Frameworks */ = { + isa = PBXGroup; + children = ( + 01B66093324E8D661CBEBB0F /* libbackend_test.xcframework */, + 8632D4625CFCBD32A46772B5 /* libbackend.xcframework */, + B2A3753419FC4A7D4C039868 /* libfilabridge.xcframework */, + 9E8375B927AFDFD1069016D1 /* libfilaflat.xcframework */, + C4BDDF85AADA2069C0F9FBAE /* libfilamat.xcframework */, + 912652335565C18B252345DE /* libfilament.xcframework */, + DB3F32D8D3D7310FA3A0C1A1 /* libgeometry.xcframework */, + D1E30700B368B5F84196FD97 /* libibl.xcframework */, + 19CBBB6C426E8D038BDAC97B /* libktxreader.xcframework */, + 8F108854ADC54BBAA29C2055 /* libsmol-v.xcframework */, + 7C969D515221A7739C68F3AC /* libutils.xcframework */, + ); + name = Frameworks; + sourceTree = ""; + }; FE198F0E1EF047534F8F3128 /* backend-test */ = { isa = PBXGroup; children = ( @@ -75,6 +172,8 @@ buildPhases = ( 445863ED54C294354A388281 /* Sources */, BD71575ED7ED3237FEFD94C7 /* Resources */, + 5E31B50ED1338E6ADE1FA49A /* Frameworks */, + 0ABB76F2D4011A4AF5186FCA /* Embed Frameworks */, ); buildRules = ( ); @@ -91,12 +190,13 @@ 8A7A83D59A7827D3335343C2 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1200; + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1430; TargetAttributes = { }; }; buildConfigurationList = E89E1EEA671E49DBAC9D5A9C /* Build configuration list for PBXProject "backend-test" */; - compatibilityVersion = "Xcode 11.0"; + compatibilityVersion = "Xcode 14.0"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( @@ -221,6 +321,11 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_IDENTITY = "iPhone Developer"; ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../../../out/ios-release/filament/lib\"", + "\"../../../out/ios-release/filament/lib\"", + ); GCC_PREPROCESSOR_DEFINITIONS = ( "FILAMENT_APP_USE_OPENGL=1", "$(inherited)", @@ -235,22 +340,8 @@ "$(inherited)", "@executable_path/Frameworks", ); - LIBRARY_SEARCH_PATHS = ( - "../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)", - "../../../out/ios-debug/filament/lib/universal", - ); OTHER_LDFLAGS = ( - "-lfilament", - "-lbackend", - "-lfilaflat", - "-lktxreader", - "-lfilabridge", - "-lutils", - "-lsmol-v", - "-lgeometry", - "-libl", - "-lfilamat", - "-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a", + "-force_load ../../../out/ios-release/filament/lib/arm64/libbackend_test.xcframework", ); PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.backend-test"; SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}"; @@ -328,6 +419,11 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_IDENTITY = "iPhone Developer"; ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../../../out/ios-release/filament/lib\"", + "\"../../../out/ios-release/filament/lib\"", + ); GCC_PREPROCESSOR_DEFINITIONS = ( "FILAMENT_APP_USE_OPENGL=1", "$(inherited)", @@ -342,22 +438,8 @@ "$(inherited)", "@executable_path/Frameworks", ); - LIBRARY_SEARCH_PATHS = ( - "../../../out/ios-release/filament/lib/$(CURRENT_ARCH)", - "../../../out/ios-release/filament/lib/universal", - ); OTHER_LDFLAGS = ( - "-lfilament", - "-lbackend", - "-lfilaflat", - "-lktxreader", - "-lfilabridge", - "-lutils", - "-lsmol-v", - "-lgeometry", - "-libl", - "-lfilamat", - "-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a", + "-force_load ../../../out/ios-release/filament/lib/arm64/libbackend_test.xcframework", ); PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.backend-test"; SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}"; @@ -428,6 +510,11 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_IDENTITY = "iPhone Developer"; ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../../../out/ios-release/filament/lib\"", + "\"../../../out/ios-release/filament/lib\"", + ); GCC_PREPROCESSOR_DEFINITIONS = ( "FILAMENT_APP_USE_METAL=1", "$(inherited)", @@ -442,22 +529,8 @@ "$(inherited)", "@executable_path/Frameworks", ); - LIBRARY_SEARCH_PATHS = ( - "../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)", - "../../../out/ios-debug/filament/lib/universal", - ); OTHER_LDFLAGS = ( - "-lfilament", - "-lbackend", - "-lfilaflat", - "-lktxreader", - "-lfilabridge", - "-lutils", - "-lsmol-v", - "-lgeometry", - "-libl", - "-lfilamat", - "-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a", + "-force_load ../../../out/ios-release/filament/lib/arm64/libbackend_test.xcframework", ); PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.backend-test"; SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}"; @@ -473,6 +546,11 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_IDENTITY = "iPhone Developer"; ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../../../out/ios-release/filament/lib\"", + "\"../../../out/ios-release/filament/lib\"", + ); GCC_PREPROCESSOR_DEFINITIONS = ( "FILAMENT_APP_USE_METAL=1", "$(inherited)", @@ -487,22 +565,8 @@ "$(inherited)", "@executable_path/Frameworks", ); - LIBRARY_SEARCH_PATHS = ( - "../../../out/ios-release/filament/lib/$(CURRENT_ARCH)", - "../../../out/ios-release/filament/lib/universal", - ); OTHER_LDFLAGS = ( - "-lfilament", - "-lbackend", - "-lfilaflat", - "-lktxreader", - "-lfilabridge", - "-lutils", - "-lsmol-v", - "-lgeometry", - "-libl", - "-lfilamat", - "-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a", + "-force_load ../../../out/ios-release/filament/lib/arm64/libbackend_test.xcframework", ); PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.backend-test"; SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}"; diff --git a/ios/samples/backend-test/backend-test.xcodeproj/xcshareddata/xcschemes/backend-test Metal.xcscheme b/ios/samples/backend-test/backend-test.xcodeproj/xcshareddata/xcschemes/backend-test Metal.xcscheme index f4026437bcd7..d6462758330a 100644 --- a/ios/samples/backend-test/backend-test.xcodeproj/xcshareddata/xcschemes/backend-test Metal.xcscheme +++ b/ios/samples/backend-test/backend-test.xcodeproj/xcshareddata/xcschemes/backend-test Metal.xcscheme @@ -1,6 +1,6 @@ Date: Sun, 7 Apr 2024 15:39:50 +0200 Subject: [PATCH 10/11] fix: Fixed typo in output text --- build/ios/create-xc-frameworks.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/ios/create-xc-frameworks.sh b/build/ios/create-xc-frameworks.sh index d8981ec9c368..cf720cb7e4e6 100755 --- a/build/ios/create-xc-frameworks.sh +++ b/build/ios/create-xc-frameworks.sh @@ -73,7 +73,7 @@ mkdir -p "${OUTPUT_DIR}" # the same names, so it doesn't matter which we chose. LEADER_PATH="${PATHS[0]}" -echo "Creating universal libraries from path: ${LEADER_PATH}..." +echo "Creating XC-Frameworks from path: ${LEADER_PATH}..." # Loop through each file in the leader path. For each library we find, we'll collect additional # architectures in the other paths and combine them all into a universal library. From b198b85eccb6a2af6fbd347658074af21f90ba92 Mon Sep 17 00:00:00 2001 From: chrfalch Date: Sun, 7 Apr 2024 16:19:50 +0200 Subject: [PATCH 11/11] fix: Changed so that -i always creates universal libs. Since samples, pods etc. are now using XC Frameworks, we need to build them when building release modes, not just when asking if we should build simulator builds. This fixes this and makes sure we build universal libs and xc frameworks correctly when building in release mode. --- build.sh | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/build.sh b/build.sh index e4b26a99d85b..3cb660aa1f95 100755 --- a/build.sh +++ b/build.sh @@ -667,12 +667,13 @@ function build_ios { if [[ "${ISSUE_RELEASE_BUILD}" == "true" ]]; then build_ios_target "Release" "arm64" "iphoneos" + if [[ "${IOS_BUILD_SIMULATOR}" == "true" ]]; then build_ios_target "Release" "arm64" "iphonesimulator" build_ios_target "Release" "x86_64" "iphonesimulator" - fi - - if [[ "${BUILD_UNIVERSAL_LIBRARIES}" == "true" ]]; then + + # Create universal libraries - since simulator and iphone is both arm64 + # we can create a universal library containing both platforms build/ios/create-universal-libs.sh \ -o ./out/ios-release/filament/lib/universal \ ./out/ios-release/filament/lib/arm64-iphonesimulator \ @@ -680,16 +681,25 @@ function build_ios { rm -rf out/ios-release/filament/lib/x86_64-iphonesimulator rm -rf out/ios-release/filament/lib/arm64-iphonesimulator - + + # Create XC Frameworks build/ios/create-xc-frameworks.sh \ -o out/ios-release/filament/lib \ out/ios-release/filament/lib/arm64-iphoneos \ out/ios-release/filament/lib/universal - + rm -rf out/ios-release/filament/lib/universal rm -rf out/ios-release/filament/lib/arm64-iphoneos - fi + else + # Create XC Frameworks for arm64 only - no need to create + # universal libraries + build/ios/create-xc-frameworks.sh \ + -o out/ios-release/filament/lib \ + out/ios-release/filament/lib/arm64-iphoneos + rm -rf out/ios-release/filament/lib/arm64-iphoneos + fi + archive_ios "Release" fi }