PlatformIO Community

Libmill on ARM targets?


I would like to use libmill for coroutines on an ARM-based platform (eg. Teensy, Circuit Python Express). I seem to have correctly placed libmill into the “libs” folder of a Core project, and

platform run

attempts to build the library. However, it chokes with

In file included from lib/libmill/chan.c:32:0:
lib/libmill/cr.h:88:5: error: unknown type name 'sigjmp_buf'
sigjmp_buf ctx;

My best guesses at the moment are that either 1) setjmp.h is not available for this platform, or 2) there’s something going on with my attempt to include a C library in a C++ project.

I’m going to spend more time with the PlatformIO documentation, but in the event that someone can give me a nudge in the right direction, I thought I’d ask here in case someone can save me time by either saying “Oh, this might be your problem…,” or point out why this simply won’t work.

Many thanks.


From the libmill docs:

Libmill runs in following environments:

Microarchitecture: x86, x86_64, ARM
Compiler: gcc, clang
Operating system: Linux, OSX, FreeBSD, OpenBSD, NetBSD, DragonFlyBSD

Those are all full-fledged OS environments. The Teensy and other ARM chips usually targeted by PlatformIO are “ARM Cortex” chips, for embedded use, without OS support. There are RTOS cores which somewhat bridge the gap, but it’s a long way from supporting a Linux/Posix-style operating system.

Concepts such as “signals” do not exist in that context, at least not as far as I’m aware of.



I failed to read that as an AND in terms of platforms. It runs on ARM, but it needs the OS under it.

Of course. I should have known better.

Many thanks.

And… to think, I had my question answered by JeeLabs!