Skip to content

[docs] GettingStarted.md: Recommend building the --release variant of --xcode #62156

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 18, 2022

Conversation

AnthonyLatsis
Copy link
Collaborator

@AnthonyLatsis AnthonyLatsis commented Nov 17, 2022

The --release variant takes up 4 times less space than the default --debug variant (0.45GB vs. 1.8GB) and is also faster.

…of `--xcode`

The `--release` variant takes up 4 times less space than the default `--debug`
variant (0.45GB vs 1.8GB).
@AnthonyLatsis
Copy link
Collaborator Author

@swift-ci please smoke test

@@ -350,7 +350,7 @@ while retaining the option of building with Ninja on the command line.

Assuming that you have already [built the toolchain via Ninja](#the-actual-build),
several more steps are necessary to set up this environment:
* Generate Xcode projects with `utils/build-script --xcode --swift-darwin-supported-archs "$(uname -m)"`.
* Generate Xcode projects with `utils/build-script --release --swift-darwin-supported-archs "$(uname -m)" --xcode`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn’t release be harder to debug though due to inlining etc.?

Copy link
Collaborator Author

@AnthonyLatsis AnthonyLatsis Nov 17, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

--xcode doesn’t build anything anymore, aside from a subset of LLVM that for some reason is required to configure the Xcode projects. The resulting build artifacts are not used for anything else in this workflow, so there’s nothing to run and potentially debug. That is all done via the Ninja build through manually configured targets and schemes. Or am I perhaps misinterpreting your point?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In that case - great!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does that somehow affect indexing of sources? May it has nothing to do with it, but I did had that impression when I tried. Or maybe was just an impression... Did you experienced something like this?

Copy link
Collaborator Author

@AnthonyLatsis AnthonyLatsis Nov 18, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Frankly, I have not tried the release variant yet, this just came to my mind spontaneously. Mine’s a RelWithDebInfoAssert (I used to just borrow the build-script arguments that I pass for Ninja), and the only indexing issue I’ve faced so far is the one described in the tutorial — when you round-trip Xcode through a distant branch with non-trivial differences in the project structure. I am convinced this is an Xcode caching issue though, since you can fix it by deleting the cache. Indexing is based on type-checked ASTs, so the state of the optimization switch shouldn’t matter.

@xedin
Copy link
Contributor

xedin commented Nov 17, 2022

@swift-ci please test macOS platform

@AnthonyLatsis
Copy link
Collaborator Author

@swift-ci please smoke test macOS

@LucianoPAlmeida
Copy link
Contributor

@swift-ci please test macOS platform

@AnthonyLatsis AnthonyLatsis merged commit c40a98a into swiftlang:main Nov 18, 2022
@AnthonyLatsis AnthonyLatsis deleted the xcode-release branch November 18, 2022 16:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants