WebKit Bugzilla
Attachment 368700 Details for
Bug 188986
: [CMake] Add support for LTO builds
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
188986.diff (text/plain), 4.92 KB, created by
Christopher Reid
on 2019-05-01 13:40:18 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Christopher Reid
Created:
2019-05-01 13:40:18 PDT
Size:
4.92 KB
patch
obsolete
>diff --git a/ChangeLog b/ChangeLog >index 7548bd91c32..c2bbfc785f2 100644 >--- a/ChangeLog >+++ b/ChangeLog >@@ -1,3 +1,16 @@ >+2019-05-01 Christopher Reid <chris.reid@sony.com> >+ >+ [CMake] Add support for LTO builds >+ https://bugs.webkit.org/show_bug.cgi?id=188986 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add LTO_MODE cmake variable to enable flto in clang builds. >+ Add support to use ld.lld to build with LTO. >+ >+ * Source/cmake/OptionsCommon.cmake: >+ * Source/cmake/WebKitCompilerFlags.cmake: >+ > 2019-04-29 Don Olmstead <don.olmstead@sony.com> > > [CMake] Add WEBKIT_EXECUTABLE macro >diff --git a/Source/cmake/OptionsCommon.cmake b/Source/cmake/OptionsCommon.cmake >index 3a43f5ab2fc..89efab5b4cc 100644 >--- a/Source/cmake/OptionsCommon.cmake >+++ b/Source/cmake/OptionsCommon.cmake >@@ -59,9 +59,22 @@ if (WTF_CPU_ARM) > endif () > endif () > >+# Use ld.lld when building with LTO >+CMAKE_DEPENDENT_OPTION(USE_LD_LLD "Use LLD linker" ON >+ "LTO_MODE;NOT USE_LD_GOLD;NOT WIN32" OFF) >+if (USE_LD_LLD) >+ execute_process(COMMAND ${CMAKE_C_COMPILER} -fuse-ld=lld -Wl,--version ERROR_QUIET OUTPUT_VARIABLE LD_VERSION) >+ if ("${LD_VERSION}" MATCHES "LLD") >+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=lld -Wl,--disable-new-dtags") >+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=lld -Wl,--disable-new-dtags") >+ else () >+ set(USE_LD_LLD OFF) >+ endif () >+endif () >+ > # Use ld.gold if it is available and isn't disabled explicitly > CMAKE_DEPENDENT_OPTION(USE_LD_GOLD "Use GNU gold linker" ON >- "NOT CXX_ACCEPTS_MFIX_CORTEX_A53_835769;NOT ARM_TRADITIONAL_DETECTED;NOT WIN32;NOT APPLE" OFF) >+ "NOT CXX_ACCEPTS_MFIX_CORTEX_A53_835769;NOT ARM_TRADITIONAL_DETECTED;NOT WIN32;NOT APPLE;NOT USE_LD_LLD" OFF) > if (USE_LD_GOLD) > execute_process(COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version ERROR_QUIET OUTPUT_VARIABLE LD_VERSION) > if ("${LD_VERSION}" MATCHES "GNU gold") >diff --git a/Source/cmake/WebKitCompilerFlags.cmake b/Source/cmake/WebKitCompilerFlags.cmake >index e47c91915b6..f56a47bbe4b 100644 >--- a/Source/cmake/WebKitCompilerFlags.cmake >+++ b/Source/cmake/WebKitCompilerFlags.cmake >@@ -166,6 +166,14 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND NOT "${LOWERCASE_CMAKE_HOST_SY > set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "-Wl,--no-keep-memory ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}") > endif () > >+if (LTO_MODE AND COMPILER_IS_CLANG) >+ set(CMAKE_C_FLAGS "-flto=${LTO_MODE} ${CMAKE_C_FLAGS}") >+ set(CMAKE_CXX_FLAGS "-flto=${LTO_MODE} ${CMAKE_CXX_FLAGS}") >+ set(CMAKE_EXE_LINKER_FLAGS "-flto=${LTO_MODE} ${CMAKE_EXE_LINKER_FLAGS}") >+ set(CMAKE_SHARED_LINKER_FLAGS "-flto=${LTO_MODE} ${CMAKE_SHARED_LINKER_FLAGS}") >+ set(CMAKE_MODULE_LINKER_FLAGS "-flto=${LTO_MODE} ${CMAKE_MODULE_LINKER_FLAGS}") >+endif () >+ > if (COMPILER_IS_GCC_OR_CLANG) > # Careful: this needs to be above where ENABLED_COMPILER_SANITIZERS is set. > # Also, it's not possible to use the normal prepend/append macros for >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index bbc48064775..427f011954d 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,16 @@ >+2019-05-01 Christopher Reid <chris.reid@sony.com> >+ >+ [CMake] Add support for LTO builds >+ https://bugs.webkit.org/show_bug.cgi?id=188986 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add support to configure --lto-mode with cmake builds. >+ >+ * Scripts/build-webkit: >+ * Scripts/webkitdirs.pm: >+ (generateBuildSystemFromCMakeProject): >+ > 2019-04-29 Alex Christensen <achristensen@webkit.org> > > <rdar://problem/50299396> Fix internal High Sierra build >diff --git a/Tools/Scripts/build-webkit b/Tools/Scripts/build-webkit >index 9ecc41d2d1f..659a867f815 100755 >--- a/Tools/Scripts/build-webkit >+++ b/Tools/Scripts/build-webkit >@@ -114,7 +114,7 @@ Usage: $programName [options] [options to pass to build system] > --simulator DEPRECATED alias of --ios-simulator > --coverage Enable code coverage support (Mac only) > --analyze Enable static anaylsis (iOS and Mac only) >- --lto-mode=<mode> Set Link Time Optimization mode (full, thin, or none) (Xcode only) >+ --lto-mode=<mode> Set Link Time Optimization mode (full, thin, or none) (LLVM only) > > --gtk Build the GTK+ port > --wpe Build the WPE port >diff --git a/Tools/Scripts/webkitdirs.pm b/Tools/Scripts/webkitdirs.pm >index 500339f17c3..b1168fe55bf 100755 >--- a/Tools/Scripts/webkitdirs.pm >+++ b/Tools/Scripts/webkitdirs.pm >@@ -2179,6 +2179,8 @@ sub generateBuildSystemFromCMakeProject > > push @args, "-DENABLE_SANITIZERS=address" if asanIsEnabled(); > >+ push @args, "-DLTO_MODE=$ltoMode" if ltoMode(); >+ > push @args, '-DCMAKE_TOOLCHAIN_FILE=Platform/PlayStation' if isPlayStation(); > > if ($willUseNinja) {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 188986
: 368700 |
368788