
SMA-X is a realtime structured database for information sharing on distributed systems.
This is a meta repository, offering a collection of SMA-X related repositories in one place as git submodules. As such it helps ensure that all components are in a well-defined and compatible state, and it simplifies the build by having dependencies in one place.
Author: Attila Kovacs
Last Updated: 26 September 2024
The core components of SMA-X do not have non-standard dependencies.
However, the smax-postgres
application (built via the services
target) has build and runtime dependencies on the
following software:
- PostgreSQL installation and development files (
libpq.so
andlipq.fe.h
). - Popt development libraries (
libpopt-dev
in Debian, orpopt-devel
in RPM distros) - (optional) TimescaleDB extensions.
- (optional) systemd development files (
libsystemd.so
andsd-daemon.h
).
You can configure the build by defining the relevant environment variables prior to invoking make
. The following
build variables can be configured:
-
PGDIR
: Root directory of a specific PostgreSQL installation to build against (not set by default). -
SYSTEMD
: Sets whether to compile withsystemd
integration (needslibsystemd.so
andsd-daemon.h
). Default is 1 (enabled). -
CC
: The C compiler to use (default:gcc
). -
CPPFLAGS
: C preprocessor flags, such as externally defined compiler constants. -
CFLAGS
: Flags to pass onto the C compiler (default:-Os -Wall -std=c99
). Note,-Iinclude
will be added automatically. -
LDFLAGS
: Extra linker flags (default: not set). Note,-lm -pthread -lsmax -lredisx -lxchange -lpq -lpopt
will be added automatically. -
BUILD_MODE
: You can set it todebug
to enable debugging features: it will initialize the globalxDebug
variable toTRUE
and add-g
toCFLAGS
. -
CHECKEXTRA
: Extra options to pass tocppcheck
for themake check
target
After configuring, you can simply run make
, which will build bin/smax-postgres
, and user documentation. You may
also build other make
target(s). (You can use make help
to get a summary of the available make
targets).
Now you may build it all by:
$ make
Or, you may build selected targets, such as share libraries (shared
), static libraries (static
), executables
(tools
) and/or API documentation (dox
).
Copyright (C) 2024 Attila Kovács