## Installation Addendum #### Additional build options Development builds should follow the same instructions as the standalone section above while taking note of the following `./configure` options: ##### Debug mode ``` --enable-debug ``` Full debug mode. Includes additional code within `#ifdef RB_DEBUG` sections. Optimization level is `-Og`, which is still valgrind-worthy. Debugger support is `-ggdb`. Log level is `DEBUG` (maximum). Assertions are enabled. ##### Release modes (for distribution packages) Options in this section may help distribution maintainers create packages. Users building for themselves (whether standalone or fully installed) probably don't need anything here. ``` --enable-generic ``` Sets `-mtune=generic` as `native` is otherwise the default. ##### Compact mode ``` --enable-compact ``` Create the smallest possible resulting output. This will optimize for size (if optimization is enabled), remove all debugging, strip symbols, and apply any toolchain-feature or #ifdef in code that optimizes the output size. _This feature is experimental. It may not build or execute on all platforms reliably. Please report bugs._ ##### Manually enable assertions ``` --enable-assert ``` Implied by `--enable-debug`. This is useful to specifically enable `assert()` statements when `--enable-debug` is not used. ##### Manually enable optimization ``` --enable-optimize ``` This manually applies full release-mode optimizations even when using `--enable-debug`. Implied when not in debug mode. ##### Logging level ``` --with-log-level= ``` This manually sets the level of logging. All log levels at or below this level will be available. When a log level is not available, all code used to generate its messages will be entirely eliminated via *dead-code-elimination* at compile time. The log levels are (from logger.h): ``` 7 DEBUG Maximum verbosity for developers. 6 DWARNING A warning but only for developers (more frequent than WARNING). 5 DERROR An error but only worthy of developers (more frequent than ERROR). 4 INFO A more frequent message with good news. 3 NOTICE An infrequent important message with neutral or positive news. 2 WARNING Non-impacting undesirable behavior user should know about. 1 ERROR Things that shouldn't happen; user impacted and should know. 0 CRITICAL Catastrophic/unrecoverable; program is in a compromised state. ``` When `--enable-debug` is used `--with-log-level=DEBUG` is implied. Otherwise for release mode `--with-log-level=INFO` is implied. Large deployments with many users may consider lower than `INFO` to maximize optimization and reduce noise.