# Libraries: C++17 boost (spirit, program option, unit_test_framework) libedit / readline # Machine Resources - Building Hisqry: FreeBSD 13.0-RELEASE i386 with 2GB RAM - peak memory usage at ~1.5GB with clang10 FreeBSD 12.2-RELEASE amd64 with 2GB RAM - peak memory usage at ~2GB with clang10 NetBSD 9.1 i386 with 3GB RAM - peak memory usage at ~1.5GB with clang10 - peak memory usage at ~2.3GB with gcc10 Linux Ubuntu 21.04 amd64 with 4GB RAM - peak memory usage at ~3GB with gcc10 src/single - BSD Make / GNU Makefile: Single build allows to compile and link all source files. This only requires ~100 MB of disk space. % cd src/single % make % ./hisqry.pm CMake CMake builds hisqry and unittest. This uses shared libraries and loading of unittest cases seems linker dependent. llvm's ld runs test cases okay but not GNU ld. Object files are large and require ~5GB disk space. % mkdir build % cd build % cmake .. % cmake --build . -j 5 % ./src/hisqry/hisqry.pm BSD Make The other Makefiles are BSD Makefiles. These are use for primary development and have extra debug and sanity check flags are enabled. These use static libraries. There are extra debug helper programs and targets for debugging and testing. Top level Makefile is used most often as a trigger. This builds hisqry and unittest. % make # Machine Resources - Building Unit Tests: Machine Resources: FreeBSD 12.2/13.0-RELEASE i386 with 4GB memory with 2GB Memory + 2GB swap for unittests - peak memory usage at ~3GB with clang10 BSD Make: BSD Make is one of the primary development tool used. % cd src/hisqry % make -j 5 CMake Same as above. % cd build % cmake .. % cmake --build . -j 5 % ./test/boost/hisqry.pm Directory Hierarchy src/single - hisqry program with a single compilation command src/hisqry - hisqry program with modules - same as above src/type - hisqry base types and exceptions src/db - an implementation of database - 'type' is the only dependency src/opr - an abstraction layer of SQL commands into C++ classes src/sql - SQL parser that generates opr classes src/eng - engine that ties sql parser, opr classes, and db implementation test/boost - unit test cases with Boost Test Framework