Commit graph

7 commits

Author SHA1 Message Date
Calin Culianu
70137451f3
Added automatic endian detection to Fulcrum.pro
Relies on some config tests the ultimately rely on clang or gcc compiler
macros.
2022-02-03 17:12:39 -06:00
Axel Gembe
d02eb3859f
Build: Reject system rocksdb if not compiled with RTTI
This makes `config.tests/rocksdb` check if the library was compiled with
USE_RTTI=1 by creating an instance of an `AssociativeMergeOperator`
derived class. When rocksdb was compiled without RTTI this should
produce

```
undefined reference to `typeinfo for rocksdb::AssociativeMergeOperator'
```

when running `qmake` in `config.log` and use the static library instead.
2021-10-28 20:30:26 +07:00
Calin Culianu
cf3baf91b8
config.tests: Added tests for __builtin_clzl and __builtin_clzll
This is not even used hardly except for by the bitcoin tests, but we
added this config.tests for completeness.
2021-02-12 17:22:17 +02:00
Calin Culianu
e00c03171c
Added zmq support to the app, plus building zmq static in docker
- New class: ZmqSubNotifier which only does something if libzmq was
  enabled at compile-time
- Fulcrum.pro now tries to auto-detect libzmq using pkg-config (on
  unix). One can override this auto-detection with `LIBS=-L/path/to/zmqlibdir -lzmq`
- App now compiles-in the commit hash used to build it (Unix only).
  Auto-detected on unix only. On Windows the commit hash must be
  specified as a DEFINE.
- Added -v/--version CLI arg to print extended information about which
  libs the app was built against, including Fulcrum's own commit hash.
- Updated static docker builds to link-in a statically built libzmq
- App now prints what libs it contains / is using at startup to the log.
2021-02-07 01:07:28 +02:00
Axel Gembe
ad437af1f9
Build: Fix rocksdb test, c++17 has to be explicitly enabled 2020-08-26 20:49:30 +07:00
Axel Gembe
dd5dc4a242
Build: Add test for jemalloc and link it if found
Jemalloc is better suited for the memory usage pattern of Fulcrum,
which is allocating/freeing lots of random sized buffers from multiple
threads, resulting in lots of fragmentation.

Jemalloc is a general purpose malloc(3) implementation that emphasizes
fragmentation avoidance and scalable concurrency support.
2020-08-26 18:01:59 +07:00
Axel Gembe
c5b9144f1f
Build: Add test for rocksdb availability and minimum version
This will use the system rocksdb if it is available and meets the
minimum version requirement, otherwise it will use the prebuilt
static library.
2020-08-26 17:56:55 +07:00