This repository consists of SaC modules with basic functionality like arithmetic, stdio, etc; which together form the standard library of the SaC language.
To build the system one requires an operational CMake >= 3.20, Flex, and Bison.
The quick and dirty option is just
make -j4
You can also use the cmake build system for more control
mkdir build
cd build
cmake <OPTIONS> ..
make -j4
NOTE: When pulling the latest commit, remember to run git submodule update or you will be missing changes to the cmake-common repository.
When running CMake it is possible to pass the following variables:
-DTARGETS=x;y;z--- build stdlib for targets x, y and z. (Default isseq;mt_pth)-DBUILDGENERIC=ON|OFF--- build stdlib without using architecture specific optimizations. (Useful when creating distributable packages) (Default isOFF)-DSAC2C_EXEC=/path/to/sac2c--- specifysac2cexecutable directly. Otherwise CMake will try to findsac2con your PATH.-DLINKSETSIZE=n--- set-linksetsize nwhen callingsac2c. This option is responsible for the number of C functions that are put in a single C file when compiling a SaC program. The rule of thumb:-
value
0is the fastest time-wise but potentially results in a large memory consumption -
value
1reduces the memory consumption to minimum, but significantly increases compilation time.Default value: 500.
-
-DFULLTYPES=ON|OFF--- add support for further types to the stdlib, such asshortandlonglong(Default isOFF).-DBUILD_EXT=ON|OFF--- build extended stdlib (seecmake/source-core-ext.txtfor details) (Default isON)
We make use of Github Actions for our CI pipeline, building the standard library on different systems anytime there is a pull request. Build will fail if there are any compile-time warnings.
Please look at .github/workflows/ for more exact details on what we do.
This project is OSS, please have a look at LICENSE.md for more details. Contributions are welcome!