| 1 | CMake: |
| 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. |