# Algorithms-c This subproject contains all C Code for the benchmarking. It is built with [ceedling](https://www.throwtheswitch.org/ceedling), a more modern build tool for C projects that also integrates well with the Unity framework. ## Compiler To compile for STM32, you need to crosscompile ``` # apt install binutils-arm-none-eabi gcc-arm-none-eabi ``` Then, use your tool with an `arm-none-eabi-` prefix: `arm-none-eabi-gcc`. This project has been configured to use the compiler specified in `$CC` to compile modules and `$AR` to "link" the object files (this should be `ar` for a static library like this). ```bash # compile for STM32 CC=arm-none-eabi-gcc AR=arm-none-eabi-ar ceedling release # compile for this computer CC=gcc AR=ar ceedling release ``` It is also critically important to define the `-march=ARCH` option when using `arm-none-eabi-gcc`, since the compiler will otherwise just assume a target architecture. In this case, it needs to be set to `armv6-m`, since the MPU is a `cortex-M0+`. This MPU does only support the thumb instructionset, not the ARM32 set.