diff --git a/CMakeLists.txt b/CMakeLists.txt index ed32949873ad..35c10e6717e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -611,7 +611,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() # ================================================================================================== diff --git a/NEW_RELEASE_NOTES.md b/NEW_RELEASE_NOTES.md index 4a1a9c7fa7e4..aa2ee9c76e0d 100644 --- a/NEW_RELEASE_NOTES.md +++ b/NEW_RELEASE_NOTES.md @@ -7,3 +7,4 @@ for next branch cut* header. appropriate header in [RELEASE_NOTES.md](./RELEASE_NOTES.md). ## Release notes for next branch cut +- ios: Add support for Apple Silicon (arm64) simulator diff --git a/build.sh b/build.sh index 56562cc1c6c7..3cb660aa1f95 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" @@ -657,19 +667,39 @@ 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 \ - out/ios-release/filament/lib/x86_64 - rm -rf out/ios-release/filament/lib/arm64 - rm -rf out/ios-release/filament/lib/x86_64 - fi - + -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 + + # 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 + 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 } diff --git a/build/ios/create-xc-frameworks.sh b/build/ios/create-xc-frameworks.sh new file mode 100755 index 000000000000..cf720cb7e4e6 --- /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 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. +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 diff --git a/ios/CocoaPods/Filament.podspec b/ios/CocoaPods/Filament.podspec index 3ed06a44db5b..3ffe16324738 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.2/filament-v1.51.2-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", @@ -23,13 +17,13 @@ Pod::Spec.new do |spec| "include/ibl/*.h", "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" + ss.vendored_frameworks = + "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 @@ -40,11 +34,11 @@ Pod::Spec.new do |spec| "include/filament/MaterialChunkType.h", "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" + ss.vendored_frameworks = + "lib/libfilamat.xcframework", + "lib/libshaders.xcframework", + "lib/libsmol-v.xcframework", + "lib/libfilabridge.xcframework" ss.dependency "Filament/utils" ss.dependency "Filament/math" end @@ -52,11 +46,11 @@ 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 = - "lib/universal/libgltfio_core.a", - "lib/universal/libdracodec.a", - "lib/universal/libuberarchive.a", - "lib/universal/libstb.a" + ss.vendored_frameworks = + "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,23 +58,23 @@ 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_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 = - "lib/universal/libfilameshio.a", - "lib/universal/libmeshoptimizer.a" + ss.vendored_frameworks = + "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_frameworks = "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_frameworks = "lib/libutils.xcframework" ss.dependency "Filament/tsl" end @@ -105,9 +99,9 @@ Pod::Spec.new do |spec| spec.subspec "ktxreader" do |ss| ss.source_files = "include/ktxreader/*.h" ss.header_mappings_dir = "include" - ss.vendored_libraries = - "lib/universal/libktxreader.a", - "lib/universal/libbasis_transcoder.a" + ss.vendored_frameworks = + "lib/libktxreader.xcframework", + "lib/libbasis_transcoder.xcframework" ss.dependency "Filament/image" ss.dependency "Filament/filament" end @@ -115,9 +109,9 @@ Pod::Spec.new do |spec| spec.subspec "viewer" do |ss| ss.source_files = "include/viewer/*.h" ss.header_mappings_dir = "include" - ss.vendored_libraries = - "lib/universal/libviewer.a", - "lib/universal/libcivetweb.a" + ss.vendored_frameworks = + "lib/libviewer.xcframework", + "lib/libcivetweb.xcframework" ss.dependency "Filament/filament" ss.dependency "Filament/gltfio_core" end @@ -125,9 +119,9 @@ Pod::Spec.new do |spec| spec.subspec "uberz" do |ss| ss.source_files = "include/uberz/*.h" ss.header_mappings_dir = "include" - ss.vendored_libraries = - "lib/universal/libuberzlib.a", - "lib/universal/libzstd.a" + ss.vendored_frameworks = + "lib/libuberzlib.xcframework", + "lib/libzstd.xcframework" ss.header_dir = "uberz" ss.dependency "Filament/filamat" ss.dependency "Filament/tsl" 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/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 @@