diff --git a/README.md b/README.md index d3f75b9..35f6f1a 100644 --- a/README.md +++ b/README.md @@ -41,31 +41,40 @@ To install the binaries system-wide, run as root: # make install -Build options: - -| Option | Default | Description | -|:------------------------ |:---------:|:----------- | -| `USE_ARC4` | `ON` | Build ARC4 decryption support. -| `USE_LZMA` | `ON` | Use `liblzma`. -| `WITH_CONV` | *not set* | The charset conversion library to use. Valid values are `iconv`, `win32` and `builtin`^1. If not set, a library appropriate for the target platform will be chosen. -| `CMAKE_BUILD_TYPE` | `Release` | Set to `Debug` to enable debug output. -| `DEBUG` | `OFF`^2 | Enable debug output and runtime checks. -| `DEBUG_EXTRA` | `OFF` | Expensive debug options. -| `SET_WARNING_FLAGS` | `ON` | Adjust compiler warning flags. This should not affect the produced binaries but is useful to catch potential problems. -| `SET_OPTIMIZATION_FLAGS` | `ON` | Adjust compiler optimization flags. For non-debug builds the only thing this does is instruct the linker to only link against libraries that are actually needed. -| `CXX_STD_VERSION` | `2017` | Maximum C++ standard version to enable. -| `USE_DYNAMIC_UTIMENSAT` | `OFF` | Dynamically load utimensat(2) if not available at compile time -| `USE_STATIC_LIBS` | `OFF`^3 | Turns on static linking for all libraries, including `-static-libgcc` and `-static-libstdc++`. You can also use the individual options below: -| `LZMA_USE_STATIC_LIBS` | `OFF`^4 | Statically link `liblzma`. -| `Boost_USE_STATIC_LIBS` | `OFF`^4 | Statically link Boost. See also `FindBoost.cmake` -| `ZLIB_USE_STATIC_LIBS` | `OFF`^4 | Statically link `libz`. (used via Boost) -| `BZip2_USE_STATIC_LIBS` | `OFF`^4 | Statically link `libbz2`. (used via Boost) -| `iconv_USE_STATIC_LIBS` | `OFF`^4 | Statically link `libiconv`. -| `STRICT_USE` | `OFF` | Abort if there are missing optional dependencies +The default build settings are tuned for users - if you plan to make changes to Arx Libertatis you should append the `-DDEVELOPER=1` option to the `cmake` command to enable debug output and fast incremental builds. + +### Build options: + +| Option | Default | Description | +|:------------------------- |:---------:|:----------- | +| `USE_ARC4` | `ON` | Build ARC4 decryption support. +| `USE_LZMA` | `ON` | Use `liblzma`. +| `WITH_CONV` | *not set* | The charset conversion library to use. Valid values are `iconv`, `win32` and `builtin`¹. If not set, a library appropriate for the target platform will be chosen. +| `CMAKE_BUILD_TYPE` | `Release` | Set to `Debug` to enable debug output. +| `DEBUG` | `OFF`² | Enable debug output and runtime checks. +| `DEBUG_EXTRA` | `OFF` | Expensive debug options. +| `SET_WARNING_FLAGS` | `ON` | Adjust compiler warning flags. This should not affect the produced binaries but is useful to catch potential problems. +| `SET_NOISY_WARNING_FLAGS` | `OFF` | Enable warnings with false positives many cases that still need to be fixed. +| `SET_OPTIMIZATION_FLAGS` | `ON` | Adjust compiler optimization flags. +| `CXX_STD_VERSION` | `2017` | Maximum C++ standard version to enable. +| `USE_DYNAMIC_UTIMENSAT` | `OFF` | Dynamically load utimensat(2) if not available at compile time. +| `USE_STATIC_LIBS` | `OFF`³ | Turns on static linking for all libraries, including `-static-libgcc` and `-static-libstdc++`. You can also use the individual options below: +| `LZMA_USE_STATIC_LIBS` | `OFF`⁴ | Statically link `liblzma`. +| `Boost_USE_STATIC_LIBS` | `OFF`⁴ | Statically link Boost. See also `FindBoost.cmake`. +| `ZLIB_USE_STATIC_LIBS` | `OFF`⁴ | Statically link `libz`. (used via Boost) +| `BZip2_USE_STATIC_LIBS` | `OFF`⁴ | Statically link `libbz2`. (used via Boost) +| `iconv_USE_STATIC_LIBS` | `OFF`⁴ | Statically link `libiconv`. +| `STRICT_USE` | `OFF` | Abort if there are missing optional dependencies. +| `DEVELOPER` | `OFF` | Enable build options suitable for developers⁵. +| `FASTLINK` | `OFF`⁶ | Optimize for link speed. +| `USE_LTO` | `ON`² | Use link-time code generation. 1. The builtin charset conversion only supports Windows-1252 and UTF-16LE. This is normally enough for filenames, but custom message strings (which can be included in filenames) may use arbitrary encodings. 2. Enabled automatically if `CMAKE_BUILD_TYPE` is set to `Debug`. 3. Under Windows, the default is `ON`. 4. Default is `ON` if `USE_STATIC_LIBS` is enabled. +5. Currently this and enables `DEBUG` and `FASTLINK` for faster incremental builds and improved debug output, unless those options have been explicitly specified by the user. +6. Enabled automatically if `DEVELOPER` is enabled. +7. Disabled automatically if `SET_OPTIMIZATION_FLAGS` is disabled or `FASTLINK` is enabled. Install options: