Skip to content

Commit cef5dad

Browse files
committed
Document features of the Wuild
1 parent fdb75ec commit cef5dad

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,25 @@ Wuild (derived from "wild build") is a distributed compilation system, inspired
66

77
Wuild is written in C++, using Ninja (<https://github.com/ninja-build>) as main frontend. WuildNinja aims to be drop-in replacement for ninja, without need to change your project.
88

9+
# Wuild features
10+
What's Wuild good for?
11+
- It provides drop-in support for ninja tool - for the best case it's just one line in your build scripts with CMake parameter;
12+
- It supports fast incremental build same way ninja does - you don't need to switch to WuildNinja when you need to build whole project and back to ninja when you need to compile 2 files;
13+
- It supports distributed builds and crosscompilation for clang, msvc and gcc (gcc is not highly tested though);
14+
- Crosscompilation support means you can use same server for msvc and clang, for example;
15+
- Support for macOS, Windows and Linux hosts;
16+
- It does not require installation on clients - you can place WuilNinja and Wuild.ini in conan package and automatically provide setup for clients;
17+
- Main approach is to replace build system, not the compiler binary - so you don't need to provide -j 100 to your build system and then die in linker phase.
18+
19+
So, as you can see why you can use it as distcc replacement; it more like Incredibuild approach overall.
20+
It has drawbacks too:
21+
- It does not have any auto installer or auto configuration - you need to setup your servers by hand and configure each compiler in ini file;
22+
- It does not have fancy IDE integration - you almost need to have ninja support in first place. Wuild provides two workarounds you can use for MSVC/XCode, you can read about them in "Advanced usage";
23+
- Meson support is possible and may be working, but is not tested now - main focus is on CMake ninja generator;
24+
- No gui tools for configuring or diagnostics - however it has plenty of commandline tools;
25+
- You need to manually ensure you have equal version of tools at server and client (though Wuild provides error message for diverge and ability to supress it);
26+
If you ok with drawbacks (I am trying to reveal everything here), then project will fit you well.
27+
928
# Code structure and terminology
1029
Platform directory contains platform core primitives to base on: sockets, threads, file utilities.
1130
CompilerInterface declares CompilerInvocation and LocalExecutorTask.
@@ -182,6 +201,7 @@ Let's now talk about ini config file location. It tries to load these locations
182201
- ```~/.Wuild/Wuild.ini``` (for Windows ~ is %USERPROFILE%);
183202
- (Windows only) ```~/Wuild.ini```;
184203
- Final attempt, it will try to load ```Wuild.ini``` in the same directory with main executable (e.g. WuildNinja).
204+
185205
If first two was not set and search is ended, then Wuild is set to "unconfigured mode". For WuildNinja it means it will fallback to plain ninja.
186206

187207
# Advanced usage

0 commit comments

Comments
 (0)