Changeset 244895 in webkit


Ignore:
Timestamp:
May 2, 2019 4:39:35 PM (5 years ago)
Author:
chris.reid@sony.com
Message:

[CMake] Add support for LTO builds
https://bugs.webkit.org/show_bug.cgi?id=188986

Reviewed by Don Olmstead.

.:

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:

Tools:

Add support to configure --lto-mode with cmake builds.

  • Scripts/build-webkit:
  • Scripts/webkitdirs.pm:

(generateBuildSystemFromCMakeProject):

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r244881 r244895  
     12019-05-02  Christopher Reid  <chris.reid@sony.com>
     2
     3        [CMake] Add support for LTO builds
     4        https://bugs.webkit.org/show_bug.cgi?id=188986
     5
     6        Reviewed by Don Olmstead.
     7
     8        Add LTO_MODE cmake variable to enable flto in clang builds.
     9        Add support to use ld.lld to build with LTO.
     10
     11        * Source/cmake/OptionsCommon.cmake:
     12        * Source/cmake/WebKitCompilerFlags.cmake:
     13
    1142019-05-02  Don Olmstead  <don.olmstead@sony.com>
    215
  • trunk/Source/cmake/OptionsCommon.cmake

    r237922 r244895  
    6060endif ()
    6161
     62# Use ld.lld when building with LTO
     63CMAKE_DEPENDENT_OPTION(USE_LD_LLD "Use LLD linker" ON
     64                       "LTO_MODE;NOT USE_LD_GOLD;NOT WIN32" OFF)
     65if (USE_LD_LLD)
     66    execute_process(COMMAND ${CMAKE_C_COMPILER} -fuse-ld=lld -Wl,--version ERROR_QUIET OUTPUT_VARIABLE LD_VERSION)
     67    if ("${LD_VERSION}" MATCHES "LLD")
     68        set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=lld -Wl,--disable-new-dtags")
     69        set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=lld -Wl,--disable-new-dtags")
     70    else ()
     71        set(USE_LD_LLD OFF)
     72    endif ()
     73endif ()
     74
    6275# Use ld.gold if it is available and isn't disabled explicitly
    6376CMAKE_DEPENDENT_OPTION(USE_LD_GOLD "Use GNU gold linker" ON
    64                        "NOT CXX_ACCEPTS_MFIX_CORTEX_A53_835769;NOT ARM_TRADITIONAL_DETECTED;NOT WIN32;NOT APPLE" OFF)
     77                       "NOT CXX_ACCEPTS_MFIX_CORTEX_A53_835769;NOT ARM_TRADITIONAL_DETECTED;NOT WIN32;NOT APPLE;NOT USE_LD_LLD" OFF)
    6578if (USE_LD_GOLD)
    6679    execute_process(COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version ERROR_QUIET OUTPUT_VARIABLE LD_VERSION)
  • trunk/Source/cmake/WebKitCompilerFlags.cmake

    r244653 r244895  
    165165    # See https://bugs.webkit.org/show_bug.cgi?id=77327
    166166    set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "-Wl,--no-keep-memory ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}")
     167endif ()
     168
     169if (LTO_MODE AND COMPILER_IS_CLANG)
     170    set(CMAKE_C_FLAGS "-flto=${LTO_MODE} ${CMAKE_C_FLAGS}")
     171    set(CMAKE_CXX_FLAGS "-flto=${LTO_MODE} ${CMAKE_CXX_FLAGS}")
     172    set(CMAKE_EXE_LINKER_FLAGS "-flto=${LTO_MODE} ${CMAKE_EXE_LINKER_FLAGS}")
     173    set(CMAKE_SHARED_LINKER_FLAGS "-flto=${LTO_MODE} ${CMAKE_SHARED_LINKER_FLAGS}")
     174    set(CMAKE_MODULE_LINKER_FLAGS "-flto=${LTO_MODE} ${CMAKE_MODULE_LINKER_FLAGS}")
    167175endif ()
    168176
  • trunk/Tools/ChangeLog

    r244884 r244895  
     12019-05-02  Christopher Reid  <chris.reid@sony.com>
     2
     3        [CMake] Add support for LTO builds
     4        https://bugs.webkit.org/show_bug.cgi?id=188986
     5
     6        Reviewed by Don Olmstead.
     7
     8        Add support to configure --lto-mode with cmake builds.
     9
     10        * Scripts/build-webkit:
     11        * Scripts/webkitdirs.pm:
     12        (generateBuildSystemFromCMakeProject):
     13
    1142019-05-02  John Wilander  <wilander@apple.com>
    215
  • trunk/Tools/Scripts/build-webkit

    r244171 r244895  
    115115  --coverage                        Enable code coverage support (Mac only)
    116116  --analyze                         Enable static anaylsis (iOS and Mac only)
    117   --lto-mode=<mode>                 Set Link Time Optimization mode (full, thin, or none) (Xcode only)
     117  --lto-mode=<mode>                 Set Link Time Optimization mode (full, thin, or none) (LLVM only)
    118118
    119119  --gtk                             Build the GTK+ port
  • trunk/Tools/Scripts/webkitdirs.pm

    r244543 r244895  
    21802180    push @args, "-DENABLE_SANITIZERS=address" if asanIsEnabled();
    21812181
     2182    push @args, "-DLTO_MODE=$ltoMode" if ltoMode();
     2183
    21822184    push @args, '-DCMAKE_TOOLCHAIN_FILE=Platform/PlayStation' if isPlayStation();
    21832185
Note: See TracChangeset for help on using the changeset viewer.