PlatformIO Community

STM32F1 build failing with "duplicate 'inline'" errors


For the last few days all our Travis CI builds for STM32F1 have been failing with the following errors:

In file included from /home/travis/.platformio/packages/toolchain-gccarmnoneeabi/arm-none-eabi/include/stdlib.h:19,
from /home/travis/.platformio/packages/toolchain-gccarmnoneeabi/arm-none-eabi/include/c++/8.2.1/cstdlib:75,
from /home/travis/.platformio/packages/toolchain-gccarmnoneeabi/arm-none-eabi/include/c++/8.2.1/stdlib.h:36,
from /home/travis/.platformio/packages/framework-arduinoststm32@2.1.180219/STM32F1/cores/maple/wirish.h:41,
from /home/travis/.platformio/packages/framework-arduinoststm32@2.1.180219/STM32F1/cores/maple/Arduino.h:30,
from Marlin/src/HAL/HAL_STM32F1/HAL.h:41,
from Marlin/src/HAL/HAL_STM32F1/HAL.cpp:34:
/home/travis/.platformio/packages/framework-arduinoststm32@2.1.180219/STM32F1/system/libmaple/stm32f1/include/series/gpio.h:487:15: error: duplicate 'inline'
static inline __always_inline void afio_exti_select(exti_num exti, exti_cfg port) {
/home/travis/.platformio/packages/framework-arduinoststm32@2.1.180219/STM32F1/system/libmaple/include/libmaple/nvic.h:112:15: error: duplicate 'inline'
static inline __always_inline void nvic_globalirq_enable() {
/home/travis/.platformio/packages/framework-arduinoststm32@2.1.180219/STM32F1/system/libmaple/include/libmaple/nvic.h:119:15: error: duplicate 'inline'
static inline __always_inline void nvic_globalirq_disable() {
/home/travis/.platformio/packages/framework-arduinoststm32@2.1.180219/STM32F1/cores/maple/ext_interrupts.h:109:15: error: duplicate 'inline'
static inline __always_inline void interrupts() {
/home/travis/.platformio/packages/framework-arduinoststm32@2.1.180219/STM32F1/cores/maple/ext_interrupts.h:123:15: error: duplicate 'inline'
static inline __always_inline void noInterrupts() {
compilation terminated due to -fmax-errors=5.
*** [.pioenvs/STM32F1/src/src/HAL/HAL_STM32F1/HAL.cpp.o] Error 1

For example:

This appears to be a problem with the arduinoststm32 framework itself. Is there any way we can revert to an earlier version of the framework to get our tests passing again?

Blue Pill + USB Serial

Seems to be a problem with the order of our includes. We’ll sort out the dependency spaghetti and figure out what’s (probably) defining __always_inline as inline ahead of the problem include.


I also have this problem. Have you solved it?


Further testing has narrowed it down to the platform. It doesn’t appear to be framework-arduinoststm32@2.1.180219 because earlier builds (last week) which were passing were apparently also using 2.1.180219. I re-started some Travis CI builds from last week which had already passed, and they also now fail with the duplicate inline error.

So, maybe one of the other frameworks or libraries was updated, or maybe the default build flags were changed. In any case, we can’t find the exact cause, and it is out of our hands. We have simply disabled STM32F1 build testing for now. Hopefully this will be narrowed down to a specific change among the platforms and get patched soon.

My project no longer compiles after updating, I'm using stm32f103c8, framework arduino

I solved the problem can try to install the platform from [the development branch],
like this :

platform =

;platform = ststm32

framework = arduino

board = genericSTM32F103ZE


Fixed in upstream version

Blue Pill + USB Serial

Has this been resolved? I am still hitting it.


has this been resolved for Marlin builds?


All is well now with Marlin’s STM32 Travis CI builds. Thanks!


platform = ststm32@<4.4.0

still gives me duplicate inline errors.

What does Travis use?