| | 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. |