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: 30 July 2025
If you use SMA-X for your project, please cite as:
- Kovács, Attila, Grimes, Paul K., Moriarty, Christopher, and Wilson, Robert, Journal of Astronomical Telescopes, Instruments, and Systems, Volume 11, id. 017001 (2025). (DOI: 10.1117/1.JATIS.11.1.017001).
You may also find the citation record on ADS as 2025JATIS..11a7001K.
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.soandlipq.fe.h). - Popt development libraries (
libpopt-devin Debian, orpopt-develin RPM distros) - (optional) TimescaleDB extensions.
- (optional) systemd development files (
libsystemd.soandsd-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 withsystemdintegration (needslibsystemd.soandsd-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,-Iincludewill be added automatically. -
LDFLAGS: Extra linker flags (default: not set). Note,-lm -pthread -lsmax -lredisx -lxchange -lpq -lpoptwill be added automatically. -
BUILD_MODE: You can set it todebugto enable debugging features: it will initialize the globalxDebugvariable toTRUEand add-gtoCFLAGS. -
CHECKEXTRA: Extra options to pass tocppcheckfor themake checktarget
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:
$ makeOr, you may build selected targets, such as share libraries (shared), static libraries (static), executables
(tools) and/or API documentation (dox).
Copyright (C) 2026 Attila Kovács