Chris Bracken c5deaa2747
iOS: extract config_ios_test (#167958)
Creates a config for iOS test targets, which includes framework,
library, and swiftmodule paths for for XCTest and other SDK testing
libraries.

This patch:
* Merges `config_ios` and `config_swift`. `config_swift` was equivalent
to `config_ios` but just with additional `swiftargs`. Since `swiftargs`
is ignored in Obj-C targets, we can just merge the two for simplicity.
* Adds a `config_ios_test` which adds:
* `$ios_platform_path/Developer/Library/Frameworks` to the framework
search path, used for XCTest.framework in Obj-C/Swift builds.
* `$ios_platform_path/Developer/usr/lib` to the include path, use for
XCTest.swiftmodule in Swift builds.
* `$ios_platform_path/Developer/usr/lib` to the lib dirs used by the
linker when building Swift code.

Note that we manually pass the `-F` flag via `cflags` (Obj-C) and
`swiftflags` (Swift) for the framework search path _as well as_ via the
more general `framework_dirs` param. This is because our macOS/iOS
compiler toolchain doesn't correctly translate `framework_dirs` into the
compiler invocation for either Obj-C or Swift builds, _but_ it's
correctly passed to linker invocations in our toolchain.

As a followup, I'll update our toolchain to translate the contents of
`framework_dirs` to the appropriate `-F` flags passed to the compilers.

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
2025-04-28 23:03:15 +00:00
..

Flutter Engine

Setting up the Engine development environment

See here

gclient bootstrap

Flutter engine uses gclient to manage dependencies.

If you've already cloned the flutter repository:

  1. Copy one of the engine/scripts/*.gclient to the root folder as .gclient:
    1. Googlers: copy rbe.gclient to enable faster builds with RBE
    2. Everyone else: copy standard.gclient
  2. run gclient sync from the root folder