mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
21 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
b0ad252b7a
|
Rename apple -> darwin across our buildroot (#168558)
As part of unifying our iOS and macOS build config, toolchain, and scripts, I named some of these `apple_sdk.py`, `toolchain/apple`, etc. for consistency with the chromium toolchain. This renames these `darwin` for consistency with other parts of our build. Issue: https://github.com/flutter/flutter/issues/167592 ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [X] I signed the [CLA]. - [X] I listed at least one issue that this PR fixes in the description above. - [X] I updated/added relevant documentation (doc comments with `///`). - [X] I added new tests to check the change I am making, or this PR is [test-exempt]. - [X] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [X] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md |
||
|
|
f8b544a7ff
|
Update Engine to Android 16 (API 36) (#166796)
Following the directions [here](https://github.com/flutter/flutter/blob/main/docs/platforms/android/Upgrading-Engine's-Android-API-version.md) to update engine to android 16. 1. Uploaded api 36 SDK to CIPD using the script from the above docs 2. Updates in Engine to use api 36 - Updated buildroot - Updated SDK CIPD package in `DEPS` - Updated android build tools - Updated `targetsdk` and `compilesdk` 3. Confirm the engine sucessfully builds. I ran `et build -c android_debug_unopt_arm64` 4. Bumped the gradle version in this PR due to seeing this warning [here](https://github.com/flutter/flutter/blob/master/docs/platforms/android/New-Android-version.md#:~:text=Update%20Gradle/AGP%20support). Note: Post mono-repo merge, we can now update buildroot and `DEPS` in the same PR 🎊 !!! Also, updated the Clang path due to use of a new Clang version in the bumped ndk. Partially Addresses #166950 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md |
||
|
|
02d8c1aceb
|
iOS,macOS: Unify iOS,macOS build configs (#168517)
Merges: * //build/config/ios:compiler * //build/config/mac:compiler Into: * //build/config/apple:compiler Merges: * //flutter/shell/platform/darwin/ios:config_ios * //flutter/shell/platform/darwin/mac:config_macos Into: * //flutter/shell/platform/darwin/common:config Merges: * //flutter/shell/platform/darwin/ios:config_ios_test * //flutter/shell/platform/darwin/mac:config_macos_test Into: * //flutter/shell/platform/darwin/common:test_config This avoids the duplication between iOS and macOS build configs used for building Swift and Objective-C that depends on Swift, and avoids further duplication when we add Swift to //flutter/shell/platform/darwin/common in a followup patch. Issue: https://github.com/flutter/flutter/issues/167592 ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [X] I signed the [CLA]. - [X] I listed at least one issue that this PR fixes in the description above. - [X] I updated/added relevant documentation (doc comments with `///`). - [X] I added new tests to check the change I am making, or this PR is [test-exempt]. - [X] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [X] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md |
||
|
|
e89c3927c2
|
iOS/macOS: Consistent Flutter copyright headers (#168390)
A long time ago, back after the fork from Chromium, we updated all Chromium BSD copyright notices to Flutter. We did this in the engine, but not in the buildroot. After the monorepo merge, we've now got a mix. This corrects Chromium copyright notices for iOS/macOS files only, and adds a missing copyright header. No test changes since this touches only comments, and introduces no functional changes. ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [X] I signed the [CLA]. - [ ] I listed at least one issue that this PR fixes in the description above. - [X] I updated/added relevant documentation (doc comments with `///`). - [ ] I added new tests to check the change I am making, or this PR is [test-exempt]. - [X] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [X] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md |
||
|
|
2ae0dd195d
|
macOS: Support writing Swift in the macOS embedder (#168174)
Enables the `swift` tool in the gn mac toolchain and wires up support for Swift `source_set` targets. Ports `FlutterRunLoop` to Swift. * Adds `//flutter/build/config/mac:compiler` config that sets up `swiftflags` for the `swift` tool in the toolchain for macOS, and adds it to the default configs on `is_mac` builds. * Adds `mac_swift_lib_paths` in `engine/src/build/config/apple/apple_sdk.gni` which holds the path of Swift shared libraries for macOS targets. This is within the appropriate `macosx` SDK directory within Xcode. Finally, this code adds Swift code to the embedder and embedder tests as proof of concept and to prevent regressions. This ports `FlutterRunLoop` to Swift in order to verify Objective-C imports of Swift via the bridging header. Issue: https://github.com/flutter/flutter/issues/144791 ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [X] I signed the [CLA]. - [X] I listed at least one issue that this PR fixes in the description above. - [X] I updated/added relevant documentation (doc comments with `///`). - [X] I added new tests to check the change I am making, or this PR is [test-exempt]. - [X] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [X] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md |
||
|
|
83a94d9055
|
Declare both Mac and iOS build arguments in apple_sdk.gni (#168025)
Without this the Flutter GN wrapper script warns about undeclared variables. |
||
|
|
34f8df3c84
|
iOS,macOS: Merge iOS, macOS config (#167945)
Merges iOS and macOS configuration and SDK finder scripts: * //build/mac/find_sdk.py and //build/ios/config/ios_sdk.py merge to //build/mac/apple_sdk.py. * //build/config/ios/ios_sdk.gni and //build/config/mac/mac_sdk.gni merge to //build/config/apple/apple_sdk.gni. gn args for macOS are available on all builds with `host_os == "mac"`. gn args for iOS are available on builds where `is_ios` is true (in place of the existing conditional import logic). Merging the two allows us to check all Apple SDK-related variable for anything missing and run `apple_sdk.py` a maximum of once across all Apple platforms. * Adds `Platforms` directory to `//flutter/prebuilts`, which contains Apple platform symlinks for `iPhoneOS`, `iPhoneSimulator`, `MacOSX`. Adds `ios_device_platform_path`, `ios_simulator_platform_path`, `mac_platform_path` gn args to hold these paths. Adds logic to `//flutter/tools/gn` to locate these paths and prepopulate these args from them to avoid running the script as part of the build. These are used to link to Swift core libs for each platform where necessary, as well as (for tests) test frameworks and `.swiftmodule`s like XCTest.framework. * Eliminates `Library/Frameworks` symlink from `//flutter/prebuilts`. This path is a subdirectory of each of the platform directories above. It was used to populate `platform_frameworks_path` in `//flutter/shell/platform/darwin/ios/BUILD.gn` using sort of sketchy relative-path logic. Further, the existing logic for greating the link was buggy for runs of `ios_sdk.py` where the `--sdk` option was not specified (i.e. all runs where `--as-gclient-hook` were specified). Without this option, we cycle through both `iphoneos` and `iphonesimulator` SDKs, and since this symlink was written on each iteration through the `SDKs` list, it was always linked to the `Library/Frameworks` directory for the last item in the list: `iPhoneSimulator.platform`. The platform arg for the current build is now resolved to `ios_platform_path` from which we resolve `$ios_platform_path/Developer/Library/Frameworks`. A follow-up patch will refactor the iOS build file to extract an iOS test config that eliminates some of the unnecessary duplication of cc_flags, swiftflags, and ld_flags across targets. Issue: https://github.com/flutter/flutter/issues/167592 ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [X] I signed the [CLA]. - [X] I listed at least one issue that this PR fixes in the description above. - [X] I updated/added relevant documentation (doc comments with `///`). - [X] I added new tests to check the change I am making, or this PR is [test-exempt]. - [X] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [X] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md |
||
|
|
c37156e5cf
|
Forward mnemonics for compiled actions. (#167511)
Previously, mnemonics specified in templates that used compiled_action and compiled_action_foreach would not be forwarded. This made actions like ImpellerC invocation unable to tag themselves. As Ninja builds progressed, only a mysterious ACTION label would be emitted for all ImpellerC edges. Now, the edges tag themselves. |
||
|
|
2ca6284ce3
|
iOS,macOS: delete run_command_with_retry (#167908)
`//build/mac/find_sdk.py` and `//build/config/ios/ios_sdk.py` contain a copy-pasted function to run a given command with a specified number of retries and a timeout. This code was added in https://github.com/flutter/buildroot/pull/876 in response to timeouts on the mac bots in relation to https://github.com/flutter/flutter/issues/157636, and is no longer necessary. This is a pre-factoring patch to reduce the size of the upcoming merge of iOS and macOS SDK config/resolving infrastructure. No tests, since this is a refactor with no change in functionality. Issue: https://github.com/flutter/flutter/issues/167592 ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [X] I signed the [CLA]. - [X] I listed at least one issue that this PR fixes in the description above. - [X] I updated/added relevant documentation (doc comments with `///`). - [X] I added new tests to check the change I am making, or this PR is [test-exempt]. - [X] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [X] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md |
||
|
|
dba788a63b
|
iOS: remove unused ios_sdk.gni import (#167909)
Neither `use_ios_simulator` nor any other variable from ios_sdk.gni is used in //build/toolchain/clang.gni. This is a pre-factoring patch to reduce the size of the upcoming merge of iOS and macOS SDK config/resolving infrastructure. Issue: https://github.com/flutter/flutter/issues/167592 ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [X] I signed the [CLA]. - [X] I listed at least one issue that this PR fixes in the description above. - [X] I updated/added relevant documentation (doc comments with `///`). - [X] I added new tests to check the change I am making, or this PR is [test-exempt]. - [X] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [X] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md |
||
|
|
45e7de58d0
|
macOS: remove unused mac_sdk_min (#167907)
This variable is no longer used in //build/mac/find_sdk.py or in our build. It was removed in flutter/buildroot#912. Previously, we worked out the SDK path from a list of available SDKs, and used mac_sdk_min as a filter. We now use `xcrun --sdk macosx --show-sdk-path` to get the SDK path and no longer need this variable. This is a pre-factoring patch to reduce the size of the upcoming merge of iOS and macOS SDK config/resolving infrastructure. No test changes since this is dead code elimination. Issue: https://github.com/flutter/flutter/issues/167592 ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [X] I signed the [CLA]. - [X] I listed at least one issue that this PR fixes in the description above. - [X] I updated/added relevant documentation (doc comments with `///`). - [X] I added new tests to check the change I am making, or this PR is [test-exempt]. - [X] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [X] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md |
||
|
|
769d6d41b8
|
Support Swift in the iOS embedder (#167530)
Adds a `swift` tool to the gn mac toolchain and wires up support for Swift `source_set` targets. Ports `FlutterUIPressProxy` to Swift. `gn` toolchain modifications include: * Removes `//flutter/third_party/libcxx/include` and `//flutter/third_party/libcxxabi/include` from the default `include_dirs` on all `source_set` targets, and instead adds them via `cflags` and `cflags_cc` so they continue to be picked up by C, C++, Obj-C, Obj-C++ targets. Flutter's custom libc++ library headers should be picked up by C, C++, Objective-C, and Objective-C++ targets, but not Swift targets. Swift code does not use libc++ directly, but many Apple core libraries such as Foundation.framework are implemented in Objective-C/Objective-C++ and directly or indirectly rely on Apple's libc++ implementation in System.framework. Because of this, and because Swift compiles use Clang modules, we should ensure the correct (Apple) libc++ is picked up from Swift targets by ensuring our own libc++ is not. * Adds a default empty list for `swiftflags` to `source_set` targets. This list is used by for Swift `source_set` targets by the `swift` tool in the gn toolchain. * Adds a `//build/config/ios:compiler` config to `engine/src/build/config/ios/BUILD.gn`. This sets default `swiftflags` for iOS targets. This attribute is (only) used by the new `swift` tool in the toolchain. * Adds `-g` to `swiftflags` for debug (unopt) builds in `engine/src/build/config/compiler/BUILD.gn`. * Adds a `swift` tool to the gn toolchain that invokes `swiftc.py` to perform compilation and generate a bridging header. This tool is invoked automatically by gn for Swift `source_set` targets. * Adds `//build/toolchain/apple/swiftc.py`, a wrapper script around `swiftc` in Xcode's Swift toolchain. This script ensures builds are invoked hermetically using a new build cache directory for the emitted swiftmodule, precompiled header, and bridging header, for each compile. The outputs are then copied into the gn output directory. Also adds supporting script `//build/toolchain/apple/get_tool_mtime.py` and data `//build/toolchain/apple/swift_const_gather_protocols.json`, both used by `swiftc.py`. * Adds a `cxx_module` tool to the gn toolchain that supports clang module-based compiles. This is used for libc++ transitively via System.framework and others that rely on it. `gn` variable modifications include: * Adds `apple_host_toolchain_path` variable in `engine/src/build/config/apple/apple_sdk.gni`. This is set using `//build/mac/find_sdk.py` to the path of Xcode's `XcodeDefault.xctoolchain`. This is where Xcode's `swiftc` tool and some Swift libraries are located. This will be used to create a symlink in the `//flutter/prebuilts/SDKs` directory to locate Swift tooling during builds. * Updates `enging/src/tools/gn` to pre-populate that path as we do with other Xcode SDK path symlinks, to improve performance. * Adds `ios_swift_lib_paths` in `engine/src/build/config/ios/ios_sdk.gni` which holds the path of Swift shared libraries for either iOS physical device or simulator targets. This is within the appropriate `iphone` or `iphonesimulator` SDK directory within Xcode. `verify_exported.dart` changes: * Allow exported symbols that match regexp `^_\$s\d+InternalFlutterSwift`. To allow Swift symbols to be exported in an Objective-C bridging header, they must be `public` or `open`. We only ever use these types internally within the framework and never publish these types in a public header. Like `_InternalFlutter` Obj-C symbols, we allow `InternalFlutterSwift` symbols, as they are clearly marked as internal and an end user would need to reverse engineer out their own header to use them. * Allow Obj-C symbols in the `(__DATA,__data)` and `(__DATA_CONST,__const)` in addition to the existing Mach-O sections, so long as it matches the existing criteria. Finally, this patch adds Swift code to the embedder and embedder tests as proof of concept and to prevent regressions. This ports `FlutterUIPressProxy` and its subclass `FakeUIPressProxy` to Swift in order to verify both: * Objective-C imports of Swift via a bridging header * Swift imports of Swift via a bridging header Issue: https://github.com/flutter/flutter/issues/144791 ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [X] I signed the [CLA]. - [X] I listed at least one issue that this PR fixes in the description above. - [X] I updated/added relevant documentation (doc comments with `///`). - [X] I added new tests to check the change I am making, or this PR is [test-exempt]. - [X] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [X] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md |
||
|
|
09d4dabd6d
|
iOS: Update minimum iOS version to 13.0 (#167737)
This updates the Flutter minimum iOS version from 12.0 to 13.0, adds a migrator for existing apps, and updates our own examples, tests, and benchmark apps to 13.0. A follow-up patch will drop iOS 13 `@available` checks in the embedder. This is required in order to use Swift in the embedder and not need to bundle the Swift runtime libs in every app that uses Flutter. Swift stable ABI As of March 2025, usage of iOS is well below 1%, see example public usage data here: https://telemetrydeck.com/survey/apple/iOS/majorSystemVersions/ This patch makes the following changes: 1. Updates ios_deployment_target from 12.0 to 13.0. 2. Changes templates to `IPHONEOS_DEPLOYMENT_TARGET`, `MinimumOSVersion`, and Podfile `platform :ios` to 12.0. 3. Adds migrator for Podfile part to migrate `platform :ios, '11.0'` -> `platform :ios, '12.0'` 4. Compiles with `-miphoneos-version-min=12.0` 5. Runs the migrator on all example apps and integration tests. 6. Updates examples, tests to iOS 13 deployment target It also updates `verify_exported.dart`: * iOS 13 introduces stricter separation of const and non-const global symbols. Previously, these were declared in the Mach-O `__DATA` section which may be mapped read-write, but now they're in a dedicated `__DATA_CONST` section which is mapped read-only. This adds `(__DATA_CONST,__const)` to the allowlist with the same enforcement on exported symbol naming as before. See also (ios_deployment_target): * https://github.com/flutter/buildroot/pull/808 * https://github.com/flutter/buildroot/pull/574 See also (template, migrator): * https://github.com/flutter/flutter/pull/62902 * https://github.com/flutter/flutter/pull/85174 * https://github.com/flutter/flutter/pull/101963 * https://github.com/flutter/flutter/pull/140478 Issue: https://github.com/flutter/flutter/issues/167735 ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [X] I signed the [CLA]. - [X] I listed at least one issue that this PR fixes in the description above. - [X] I updated/added relevant documentation (doc comments with `///`). - [X] I added new tests to check the change I am making, or this PR is [test-exempt]. - [X] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [X] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md |
||
|
|
ca758ac49b
|
Add buildroot compatibility for HWASAN. (#167133)
Needed to roll https://dart-review.googlesource.com/c/sdk/+/421180. |
||
|
|
34ea67bdbf
|
Reland "[skwasm] Dynamic Threading" (#166454)
This is a reland of https://github.com/flutter/flutter/pull/164748, which was reverted here: https://github.com/flutter/flutter/pull/165350 It was reverted due to some issues in the flutter packages roller: https://github.com/flutter/flutter/issues/165347 The unit test in flutter/packages was modified to be more deterministic and less affected by minor timing differences: https://github.com/flutter/packages/pull/8920 So this is basically being relanded without any significant changes, since the downstream tests have been fixed. |
||
|
|
975a677529
|
Make iOS Flutter framework extension-safe (#165346)
Our current [adoption/documentation](https://docs.flutter.dev/platform-integration/ios/app-extensions) for iOS Extensions does not currently work because it's disallowed to nest bundles (see https://github.com/flutter/flutter/issues/142531). As of [Xcode 13](https://developer.apple.com/documentation/xcode-release-notes/xcode-13-release-notes/#:~:text=Linking%20Swift%20packages%20from%20application%20extension%20targets%20or%20watchOS%20applications%20no%20longer%20emits%20unresolvable%20warnings%20about%20linking%20to%20libraries%20not%20safe%20for%20use%20in%20application%20extensions%2E), linking to frameworks that contain non-extension-safe code no longer gives warnings (or blocks from App Store it seems). Therefore, it has become a runtime issue to ensure non-extension-safe code is not used. Previously, we were building and shipping 2 separate Flutter.xcframeworks. One that was extension-safe and one that was not. This PR removes the "extension_safe" framework and instead makes the entire framework extension-safe by annotating non-extension-safe code with `NS_EXTENSION_UNAVAILABLE_IOS` and ensuring that code is not used at runtime if the bundle is for an app extension. This PR also disables wide gamut for app extensions to decrease the chances of crashes (see https://github.com/flutter/flutter/issues/165086). Fixes https://github.com/flutter/flutter/issues/142531. --- For reference: App extensions were first evaluated in https://flutter.dev/go/app-extensions. Here is the reasoning why neither method described there is opportune. Option 1 - I did look into splitting the framework into 2 frameworks (one with all extension-safe code and one with the non-extension-safe code). However, the original idea was to use objc Categories/Extensions - this doesn’t quite fit our needs. Categories/Extensions only allow you to add new methods/properties, not override existing ones. We could hypothetically add new methods, but that would require the user to change their code to use the new methods. I also looked into subclasses which does allow overrides, but it would also require the user to change their code to use the new class. We could do method swizzling, but opinion of that on the internet is that it's not very safe. I’m of the opinion that anything that requires the user to change code isn’t super feasible due to plugins. Option 2 - We could still do the 2 frameworks but rename one to `FlutterExtentionSafe`. This works without users needing to change any code (including imports like `@import Flutter` / `#import <Flutter/Flutter.h>`). I believe the reason this works is because at compile time, it finds the `Flutter` framework on the framework search path and it imports in the headers. Then at link time, `FlutterExtentionSafe` is explicitly linked so it uses that framework first when checking for symbols and since it finds all the symbols in `FlutterExtentionSafe`, it doesn’t need/try to auto-link the `Flutter` framework (despite `Flutter` being the framework imported). This seems precarious to me since we’re relying on Xcode to not auto-link the `Flutter` framework. If for some reason `Flutter` framework did get auto-linked (such as the user using a symbol that’s not in the `FlutterExtensionSafe` framework but is in the `Flutter` framework - this is unlikely though), we’d get name collision issues ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md |
||
|
|
1d954f4e96
|
Revert "[skwasm] Dynamic Threading (#164748)" (#165350)
This reverts commit b2a4a05683b95e9c08efafb3a0f17193915897d5. This has been causing issues when rolling to flutter/packages repo. See https://github.com/flutter/flutter/issues/165347. |
||
|
|
b2a4a05683
|
[skwasm] Dynamic Threading (#164748)
This switches skwasm over from the emscripten pthreads implementation to emscripten's "wasm workers" threading implementation. The pthreads implementation simply will not run at all in a non-crossOriginIsolated context, but the wasm workers implementation only fails if we actually attempt to spawn a thread. This means we can actually choose whether to use a single-threaded or multi-threaded strategy at runtime, which means we don't have to build two variants of skwasm for single- vs multi-threaded. |
||
|
|
6b8ead49f3
|
[canvaskit] Fix debug build for CanvasKit (#162198)
Fixes the debug build for CanvasKit. NOTE: We need to build the debug WASM build with `-O1` because building with `-O0` causes Emscripten to produce a binary that is rejected by Chrome for having functions with too many local variables. Building with `-O1` optimizes those locals out. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md |
||
|
|
bfe31d607c
|
Fix skwasm target in wasm_debug_unopt build. (#162100)
Fixes a couple issues in the skwasm build rules: * `DEMANGLE_SUPPORT` is deprecated in emscripten, so just remove it. * `sSHARED_MEMORY=1` needs to be added to the cflags so that emscripten appends the proper feature flags (`-matomics` and `-mbulk-memory`) when doing the compile so that the flags match the linking step. |
||
|
|
721b47e7e6 |
Merge flutter/engine into framework
Adds files from flutter/flaux which contain modifications for the engine structure. The history for engine/ has been edited. Please see flutter/engine for the original PRs. |