The Mini Library for Asynchronous Programming in C is a C low-level concurrency library for asynchronous functions. For more information, see pmem.io.
Requirements:
- C compiler
- cmake >= 3.3
- pkg_config
First, you have to create a build
directory.
From there you have to prepare the compilation using CMake.
The final build step is just a make
command.
$ mkdir build && cd build
$ cmake ..
$ make -j
List of options provided by CMake:
Name | Description | Values | Default |
---|---|---|---|
BUILD_EXAMPLES | Build the examples | ON/OFF | ON |
BUILD_TESTS | Build the tests | ON/OFF | ON |
COVERAGE | Run coverage test | ON/OFF | OFF |
DEVELOPER_MODE | Enable developer checks | ON/OFF | OFF |
CHECK_CSTYLE | Check code style of C sources | ON/OFF | OFF |
TRACE_TESTS | More verbose test outputs | ON/OFF | OFF |
USE_ASAN | Enable AddressSanitizer | ON/OFF | OFF |
USE_UBSAN | Enable UndefinedBehaviorSanitizer | ON/OFF | OFF |
TESTS_USE_VALGRIND | Enable tests with valgrind | ON/OFF | ON |
TEST_DIR | Working directory for tests | dir path | ./build/tests |
CMAKE_BUILD_TYPE | Choose the type of build | None/Debug/Release/RelWithDebInfo | Debug |
COMPILE_DML | Compile DML implementation of miniasync | ON/OFF | OFF |
The miniasync library can be found in the build/src
directory.
You can also run the examples from the build/examples
directory.
After completing the building step, you can run tests by invoking:
make test -j
or ctest
.
To get more verbose output on failure, you can invoke:
ctest --output-on-failure
.
Tests using Valgrind are switched on by default. To switch them off use:
cmake -DTESTS_USE_VALGRIND=OFF ..
.
The option necessary to run tests BUILD_TESTS
is set to ON
by default.
In order to build 'rpm' or 'deb' packages you should issue the following commands:
$ mkdir build && cd build
$ cmake .. -DCPACK_GENERATOR="$GEN" -DCMAKE_INSTALL_PREFIX=/usr
$ make package
where $GEN is a type of package generator: RPM or DEB.
CMAKE_INSTALL_PREFIX must be set to a destination where packages will be installed.
For more information on this library, contact Piotr Balcer ([email protected]), Google group.