why:
on 32bit windows 7, there seems to be a 64k memory ceiling for the gcc
compiler which was exceeded on some test platform.
details:
compiling VM2 for low memory C compiler can be triggered with
"make ENABLE_VM2LOWMEM". this comes with a ~24% longer execution time
of the test suite against old VM and optimised VM2.
* switch to chronos metrics, remove insecure
See https://github.com/status-im/nimbus-eth2/pull/2468
also fixes pcre linking for real, and adds some random build flags that
help nimbus-eth2 stay afloat
* fix help
* don't omit frame pointers on windows
Without `pcre-devel` I get the following error when running `make`:
```
> make
Building: build/premix
Error: execution of an external compiler program 'gcc -c -w -pthread -I/home/oskarth/git/status-im/nimbus/vendor/nim-secp256k1/secp256k1_wrapper -I/home/oskarth/git/status-im/nimbus/vendor/nim-secp256k1/secp256k1_wrapper/secp256k1 -I/home/oskarth/git/status-im/nimbus/vendor/nim-secp256k1/secp256k1_wrapper/secp256k1/src -DHAVE_CONFIG_H -I/home/oskarth/git/status-im/nimbus/vendor/nim-nat-traversal/vendor/miniupnp/miniupnpc -I/home/oskarth/git/status-im/nimbus/vendor/nim-nat-traversal/vendor/libnatpmp -DENABLE_STRNATPMPERR -g3 -Og -O3 -fno-strict-aliasing -I/home/oskarth/git/status-im/nimbus/vendor/nimbus-build-system/vendor/Nim/lib -I/home/oskarth/git/status-im/nimbus/premix -o nimcache/debug/premix/stdlib_re.nim.c.o nimcache/debug/premix/stdlib_re.nim.c' failed with exit code: 1
nimcache/debug/premix/stdlib_re.nim.c:10:10: fatal error: pcre.h: No such file or directory
#include <pcre.h>
^~~~~~~~
compilation terminated.
make: *** [Makefile:48: premix] Error 1
```
Additional changes:
- Makefile verbosity control
- nimble.sh can now run in parallel on the same *.nimble file
- nimble.sh no longer used in the Makefile, in favour of a nimbus.nims
symlink that eliminates race risks in parallel jobs
- nimbus.nimble takes extra params in the command line, with the caveat
that they also apply to nim
- setCommand() replaced with exec(), to avoid splitting param strings
- "vendor/Nim/dist" might not exist
- work around build_all.sh not liking a symbolic link for csources
- submodule rename: asyndispatch2 -> chronos
- allow parallel building of Nim csources
- Windows testing
- go back to detached HEADs for reproducible historical builds
- update submodules
- document workflows
- build all tools using the Makefile and place them in ./build
- add copyright header to Makefile
- premix/readme.md edited to fix some errors, improve descriptions and
document Makefile usage
- link the Premix documentation in the main README.md
- also build `hunter` in the nimble tests
- refactored the file and directory search so all debugging tools can be run
from the top-level dir like this: `./build/<tool> ...`
- write all JSON debugging data in the current directory
- add JSON files generated in the top-level dir to .gitignore
- Nimbus now exits with an exception after dumping debug data and
running `premix` on it
- isolate dependencies (both Git repos and ".nimble" dir) in "vendor"
- ensure that everything is compiled using our version of Nim with
something as simple as "make"
- pull the latest changes with "make update"
- re-create Nimble's package dir and re-build the Nim compiler automatically when needed
- "env.sh" script that can be used to prefix any command that needs to use
"nim" or "nimble" from our Nim repo
- move the top level nim.cfg to nimbus/nim.cfg so it doesn't apply to
deps
- "fetch-dlls" `make` target for Windows to get precompiled Snappy, RocksDB and SQLite DLLs
- dynamically generated copyright year interval
- added the db backend to the header
- documented the db-backend-changing define, made it case insensitive
and ensured wrong values would trigger compilation errors