Enable ThinLTO support in Production builds
authorkrollin@apple.com <krollin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 22 Mar 2019 18:56:41 +0000 (18:56 +0000)
committerkrollin@apple.com <krollin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 22 Mar 2019 18:56:41 +0000 (18:56 +0000)
commit2630e5b47df57c8e142ca97c09c41d91ba3f56e7
treead681e3974ab41d8b1950652bb175fef1a10bb34
parent92481317c9b0831e3e0e1bff287f9b86821fee8a
Enable ThinLTO support in Production builds
https://bugs.webkit.org/show_bug.cgi?id=190758
<rdar://problem/45413233>

Reviewed by Daniel Bates.

Source/bmalloc:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

* Configurations/Base.xcconfig:

Source/JavaScriptCore:

Tweak JavaScriptCore's Base.xcconfig to be more in-line with other
.xcconfig files with regards to LTO settings. However, don't actually
enable LTO for JavaScriptCore. LTO is not enabled for JavaScriptCore
due to <rdar://problem/24543547>.

* Configurations/Base.xcconfig:

Source/ThirdParty/ANGLE:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

* Configurations/Base.xcconfig:

Source/ThirdParty/libwebrtc:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

* Configurations/Base.xcconfig:

Source/WebCore:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

Removed the conditionals that disabled LTO on 32-bit systems since we
no longer build for those.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

No new tests since there should be no observable behavior difference.

* Configurations/Base.xcconfig:

Source/WebCore/PAL:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

Removed the conditionals that disabled LTO on 32-bit systems since we
no longer build for those.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

* Configurations/Base.xcconfig:

Source/WebInspectorUI:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

* Configurations/Base.xcconfig:

Source/WebKit:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

* Configurations/Base.xcconfig:

Source/WebKitLegacy/mac:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

* Configurations/Base.xcconfig:

Source/WTF:

Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.

LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.

To change the LTO setting when building locally:

- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
  command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
  on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
  command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
  top level of your repository directory (if needed) and define
  WK_LTO_MODE to full, thin, or none.

* Configurations/Base.xcconfig:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@243396 268f45cc-cd09-0410-ab3c-d52691b4dbfc
20 files changed:
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/Configurations/Base.xcconfig
Source/ThirdParty/ANGLE/ChangeLog
Source/ThirdParty/ANGLE/Configurations/Base.xcconfig
Source/ThirdParty/libwebrtc/ChangeLog
Source/ThirdParty/libwebrtc/Configurations/Base.xcconfig
Source/WTF/ChangeLog
Source/WTF/Configurations/Base.xcconfig
Source/WebCore/ChangeLog
Source/WebCore/Configurations/Base.xcconfig
Source/WebCore/PAL/ChangeLog
Source/WebCore/PAL/Configurations/Base.xcconfig
Source/WebInspectorUI/ChangeLog
Source/WebInspectorUI/Configurations/Base.xcconfig
Source/WebKit/ChangeLog
Source/WebKit/Configurations/Base.xcconfig
Source/WebKitLegacy/mac/ChangeLog
Source/WebKitLegacy/mac/Configurations/Base.xcconfig
Source/bmalloc/ChangeLog
Source/bmalloc/Configurations/Base.xcconfig