Standard C and C++ Library Support for Circle
  • C 55.8%
  • C++ 41.8%
  • Makefile 1.3%
  • Dockerfile 1.1%
Find a file
Stephan Mühlstrasser 145ccd314a
All checks were successful
Smoke Test / host-aarch64-target-aarch64 (push) Successful in 2m48s
Smoke Test / host-aarch64-target-arm (push) Successful in 2m26s
Smoke Test / host-x64-target-arm (push) Successful in 4m15s
Smoke Test / host-x64-target-aarch64 (push) Successful in 7m7s
Labels for smoke test badges
2026-01-15 21:39:42 +01:00
.forgejo/workflows Clean up Forgejo actions 2026-01-15 19:58:43 +01:00
build Ignore newlib build directory. 2017-05-09 23:03:12 +02:00
docker Remove unavailable package 2026-01-12 20:50:01 +01:00
include Update Mbed TLS submodule to v2.28.10 2025-06-19 11:00:05 +02:00
install AArch64 support 2019-03-08 23:32:01 +01:00
libs Update README.md with migration info 2026-01-12 22:58:18 +01:00
samples Fixed restrict compiler warnings 2025-07-28 22:25:48 +02:00
src/circle-mbedtls Update Mbed TLS submodule to v2.28.10 2025-06-19 11:00:05 +02:00
.gitignore Enable checking header file dependencies where applicable 2020-02-07 13:05:25 +01:00
.gitmodules Reference circle-newlib on codeberg.org 2026-01-12 21:52:04 +01:00
CHANGELOG.md Synced with Circle Step 50.0.1 2025-09-21 18:51:49 +02:00
circle-mbedtls.md Update circle-mbedtls.md 2025-06-19 11:08:09 +02:00
configure Workaround for duplicate Circle headers 2025-07-28 21:39:55 +02:00
LICENSE Create LICENSE 2017-05-08 21:45:09 +02:00
Makefile Fix problem with parallel builds 2025-05-26 19:55:19 +02:00
README.md Labels for smoke test badges 2026-01-15 21:39:42 +01:00

circle-stdlib

Status badge for master branch Status badge for develop branch Open issues Closed issues

Project Home

This project moved from GitHub to Codeberg.

Canonical repository: https://codeberg.org/larchcone/circle-stdlib.git

Issues and pull requests need to be submitted on Codeberg.

The GitHub repository https://github.com/smuehlst/circle-stdlib.git is a read-only mirror. Pull requests on GitHub will be closed with a corresponding remark without further action.

For transitioning from GitHub to Codeberg the remote must be switched for the circle-stdlib and circle-newlib repositories:

git remote set-url origin https://codeberg.org/larchcone/circle-stdlib.git
cd libs/circle-newlib
git remote set-url origin https://codeberg.org/larchcone/circle-newlib.git

Overview

The goal of this project is to provide C and C++ standard library support for the Raspberry Pi bare-metal environment Circle.

Newlib is used as the standard C library. The fork circle-newlib contains the changes for building Newlib in combination with Circle.

mbed TLS can optionally be used for TLS connections in Circle (call configure with --opt-tls, see also the README file for circle-mbedtls).

Getting Started

Prerequisites

A toolchain from Arm GNU Toolchain Downloads:

Building the Libraries

Add the toolchain to the path, then:

git clone --recursive https://codeberg.org/larchcone/circle-stdlib.git
cd circle-stdlib
./configure
make

This configures the build for the default 32-bit toolchain with the arm-none-eabi- prefix.

The configure script has the following options:

$ ./configure -h
usage: configure [ <option> ... ]
Configure Circle with newlib standard C library and mbed TLS library.

Options:
  -d, --debug                    build with debug information, without optimizer
  -h, --help                     show usage message
  -n, --no-cpp                   do not support C++ standard library
  -o, --option <name>[=<value>]  additional preprocessor define (optionally with value)
                                 can be repeated
  --opt-tls                      build with mbed TLS support
  -p <string>, --prefix <string> prefix of the toolchain commands (default: arm-none-eabi-)
  --qemu                         build for running under QEMU in semihosting mode
  -r <number>, --raspberrypi <number>
                                 Circle Raspberry Pi model number (1, 2, 3, 4, 5, default: 1)
  --softfp                       use float ABI setting "softfp" instead of "hard"
  -s <path>, --stddefpath <path>
                                 path where stddef.h header is located (only necessary
                                 if script cannot determine it automatically)

To clean the project directory, the following commands can be used:

make clean
make mrproper   # removes the configuration too

Building the Samples

make build-samples

Running and Debugging the Programs

The resulting executables are normal Circle bare-metal applications. Circle's standard installation and debugging instructions apply.

For running the programs under QEMU see Circle's corresponding notes on QEMU.

Release History

See CHANGELOG.md.

License

This project is licensed under the GNU GENERAL PUBLIC LICENSE Version 3 - see the LICENSE file for details

Acknowledgements