SaC standard library
This repository consists of SaC modules with basic functionality like arithmetic, stdio, etc; which together form the standard library of the SaC language.
An example on how to build the library:
$ cd Stdlib $ git submodule init $ git submodule update $ mkdir build $ cd build $ cmake .. $ make -j4 #you should have roughly 2GB per thread :-)
If you like you can also install the stdlib into
make install, but this is unnecessary as
sac2c will be able to find your stdlib
NOTE: When pulling the latest commit, remember to run
git submodule update or you will be missing changes to the
Variables that can be passed to CMake
When running CMake it is possible to pass the following variables:
-DTARGETS=x;y;z--- build stdlib for targets x, y and z. (Defaults to
-DBUILDGENERIC=ON|OFF--- build stdlib without using architecture specific optimisations (useful when creating distributable packages). (Default is
sac2cexecutable directly. Otherwise CMake will try to find
sac2con yout PATH.
-linksetsize nwhen calling
sac2c. 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:
0is the fastest time-wise but potentially results in a large memory consumption
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 as
-DBUILD_EXT=ON|OFF--- build extended stdlib (see
cmake/source-core-ext.txtfor details) (Default is
We make use of Github Actions for our CI pipeline, building the standard library on different systems anytime there is a pull request.
Currently we build on the following systems:
Please look at
.github/workflows/ for more exact details on what we do.
This project is open-source, contributions are welcome! Note that no warranty is given.
Please look at
LICENSE.txt for further details.