Changes between Initial Version and Version 1 of CMakeDiscussion2015


Ignore:
Timestamp:
Nov 11, 2015 10:35:28 PM (8 years ago)
Author:
Joseph Pecoraro
Comment:

Initial Draft

Legend:

Unmodified
Added
Removed
Modified
  • CMakeDiscussion2015

    v1 v1  
     1CMake:
     2
     3== General Discussion ==
     4
     5    - Intro
     6        - Windows has officially moved over to CMake
     7        - 1 Port to go (Mac), may never officially but can for engineers
     8
     9    - How many have built things on the mac with CMake
     10        - 2 hands (1 just JSC, 1 JSC+WebCore)
     11        - Issue with WebKit is that it isn't testable yet
     12
     13    - JSC - FTL is disabled in CMake builds
     14        - other ports (GTK) have experience, feel likes it is close to turn on again
     15        - for Mac, there is already CMake code for linux to find LLVM builds, would need to customize for Mac
     16
     17    - Make Usable on Mac - Executables need to be generated correctly
     18        - NetworkProcess, WebProcess binaries / executables
     19        - Once they are put in the right place, they should be usable for engineers
     20        - Allow engineers to do things like run layout tests with CMake builds
     21
     22    - Build Speed Comparison
     23        - `build-webkit --cmake` to `build-webkit` not a fair comparison
     24            - no precompiled headers
     25            - different set of projects are built (minibrowser)
     26        - If you generate an Xcode project and build that it is compariable
     27            - 25-30% faster
     28            - potential for cross-compiling / distributed builds
     29   
     30    - Distributed Builds
     31        - Igalia used `icc`, ships the toolchain across the network
     32        - How much of a speedup do we see?
     33            - Hard to say. Depends on your laptop.
     34        - How long is a clean build?
     35            - It spreads, so it depends on users.
     36        - Does it sync SDKs?
     37            - On linux ports, it ships the toolchain.
     38        - rniwa: Tried `distcc` at Google
     39            - Slower than if you had a Mac with 24 cores
     40        - on Mac, linking is a very long task
     41        - Igalia saw some benefits changing linkers
     42            - different linker strategy allowed them to use debug builds
     43            - thin archives does less work upfront
     44
     45    - Pros
     46        - faster incrementable builds
     47        - easier to move files around
     48        - easier to understand inputs/outputs
     49        - no DerivedSources.make duplicate info
     50            - can catch Makefile issues early in build time due to checking dependencies early
     51    - Cons
     52        - possible incompatibilities with future unreleased builds of Xcode
     53            - very unlikely there will be an Xcode project incompatibility change
     54            - may be an invalid concern
     55        - limited to what CMake can do correctly
     56
     57
     58== Feature Flag Discussion ==
     59
     60    - Toggling feature flags happen in many places
     61        - FeatureDefines.h
     62        - webkitpl build flags
     63        - Xcode Configuration files
     64        - Source/CMake/WebKitFeatures.cmake (and platform impls)
     65
     66    - Cleanup
     67        - if everyone uses CMake yes, hopefully we can reduce this to just the CMake ones
     68
     69
     70== Questions ==
     71
     72    - What is the relationship between CMake and distributed builds?
     73        - cannot do distributed builds with Xcode.
     74
     75    - When for Mac?
     76        - when executables get in the right place, should be suitable for engineering builds
     77        - AppKit links WebKit, so we need to generate a WebKit.framework
     78
     79    - Is there good documentation for CMake commands?
     80        - documentation has improved
     81        - `cmake --help --full`
     82        - depends on the versions
     83
     84    - If we got it to the point engineers could use it for tests, would people use it?
     85        - Number of yesses.