mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-28 12:30:58 +00:00
Until I read the doc and find how to limit the retention, otherwise it just eats all my ram and cpu and things start to fall apart. PUBLISHED_FROM=eb33fb44736f07b992270689217aca4af70513ff
55 lines
2.4 KiB
Plaintext
55 lines
2.4 KiB
Plaintext
|
|
== Build Options
|
|
|
|
Mongoose source code ships in a single .c file that contains functionality
|
|
for all supported protocols (modules). Modules can be disabled at compile
|
|
time which reduces executable size. That can be done by setting preprocessor
|
|
flags. Also, some preprocessor flags can be used to tune internal Mongoose
|
|
parameters.
|
|
|
|
To set a preprocessor flag during compile time, use `-D <PREPROCESSOR_FLAG>`
|
|
compiler option. For example, to disable both MQTT and JSON-RPC,
|
|
compile the application `my_app.c` like this (assumed UNIX system):
|
|
|
|
```
|
|
$ cc my_app.c mongoose.c -D MG_DISABLE_MQTT -D MG_DISABLE_JSON_RPC
|
|
```
|
|
|
|
=== Enabling flags
|
|
- `MG_ENABLE_SSL` Enable OpenSSL support
|
|
- `MG_ENABLE_IPV6` Enable IPV6 support
|
|
- `MG_ENABLE_THREADS` enable `mg_start_thread()` API
|
|
- `MG_ENABLE_MQTT_BROKER` enable MQTT broker
|
|
- `MG_ENABLE_DNS_SERVER` enable DNS server
|
|
- `MG_ENABLE_COAP` enable CoAP protocol
|
|
- `MG_ENABLE_GETADDRINFO` enable `getaddrinfo()` in `mg_resolve2()`
|
|
|
|
=== Disabling flags
|
|
|
|
- `MG_DISABLE_HTTP_WEBSOCKET` disable HTTP + Websocket protocol support
|
|
- `MG_DISABLE_HTTP_DIGEST_AUTH` disable HTTP Digest (MD5) authorization support
|
|
- `MG_DISABLE_MQTT` disable MQTT support
|
|
- `MG_DISABLE_SHA1` disable SHA1 support (used by Websocket)
|
|
- `MG_DISABLE_MD5` disable MD5 support (used by HTTP auth)
|
|
- `MG_DISABLE_JSON_RPC` disable JSON-RPC support
|
|
- `MG_DISABLE_SOCKETPAIR` disable `mg_broadcast()` API
|
|
- `MG_DISABLE_HTTP_KEEP_ALIVE` useful for embedded systems to save resources
|
|
|
|
=== Platform specific
|
|
|
|
Mongoose tries to detect the target platform whenever possible, but in some cases you have
|
|
to explicitly declare some peculiarities of your target, such as:
|
|
|
|
- `MG_LWIP`: use LWIP networking stack
|
|
- `MG_CC3200`: enable workarounds for the TI CC3200 target.
|
|
- `MG_ESP8266`: enable workarounds for the ESP8266 target, add `RTOS_SDK` to specify the RTOS SDK flavour.
|
|
|
|
=== Tunables
|
|
- `MG_MALLOC`, `MG_CALLOC`, `MG_REALLOC`, `MG_FREE` allow to use custom
|
|
memory allocator, e.g. `-DMG_MALLOC=my_malloc`
|
|
- `MG_USE_READ_WRITE` when set replaces calls to `recv` with `read` and `send` with `write`,
|
|
thus enabling to add any kind of file descriptor (files, serial devices) to an event manager.
|
|
- `MG_SSL_CRYPTO_MODERN`, `MG_SSL_CRYPTO_OLD` - choose either "Modern" or "Old" ciphers
|
|
instead of the default "Intermediate" setting.
|
|
See [this article](https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_configurations) for details.
|