Compile error, make fail on fresh Ubuntu 16.04 install


#1

Just got a new computer and freshly installed Ubuntu 16.04. Git cloned the repo and ran the:

sudo apt-get install gcc-arm-none-eabi
sudo apt-get install gdb-arm-none-eabi
sudo apt-get install openocd
sudo add-apt-repository ppa:jonathonf/tup && sudo apt-get update && sudo apt-get install tup

Cd’d into Odrve/Firmware and ran make to have it fail all over the place with:
fibre/cpp/include/fibre/protocol.hpp:783:39: error: 'round' is not a member of 'std'

Toolchain version is (running arm-none-eabi-gcc --version):
arm-none-eabi-gcc (15:4.9.3+svn231177-1) 4.9.3 20150529 (prerelease)

Any thoughts? If I need an older version of the toolchain, how do I get one?


#2

It looks like fibre is not getting compiled with C++11 (or C++14).
Can you run the command tup instead of make in the Firmware directory, and then give us the full error printout?
You can use three backticks to get a code block.


#3

That’s a very old version of the arm-none-eabi-gcc toolchain. The newest version was released 2018-06-27


#4

Sorry for the delay. tup has the same result as make. And I’m not sure how to change my version of the toolchain, as this is the one that apt seems to give me.

Here’s (part of) the output of tup from where the errors start (The ouput is too large for a message here):

* 62) arm-none-eabi-g++ -std=c++14 -c MotorControl/low_level.cpp -DHW_VERSION_MAJOR=3 -DHW_VERSION_MINOR=5 -DHW_VERSION_VOLTAGE=48 -DUSB_PROTOCOL_NATIVE -DUART_PROTOCOL_ASCII -D__weak="__attribute__((weak))" -D__packed="__attribute__((__packed__))" -DUSE_HAL_DRIVER -DSTM32F405xx -mthumb -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -Wall -Wfloat-conversion -fdata-sections -ffunction-sections -g -gdwarf-2 -Og -ffast-math -fno-finite-math-only -IDrivers/DRV8301 -IMotorControl -Ifibre/cpp/include -I. -IBoard/v3/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -IBoard/v3/Middlewares/Third_Party/FreeRTOS/Source/include -IBoard/v3/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -IBoard/v3/Middlewares/ST/STM32_USB_Device_Library/Core/Inc -IBoard/v3/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -IBoard/v3/Drivers/STM32F4xx_HAL_Driver/Inc -IBoard/v3/Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -IBoard/v3/Drivers/CMSIS/Device/ST/STM32F4xx/Include -IBoard/v3/Drivers/CMSIS/Include -IBoard/v3/Inc -I. -IDrivers/DRV8301  -o build/MotorControl_low_level.cpp.o
In file included from MotorControl/odrive_main.h:5:0,
                 from MotorControl/low_level.cpp:22:
fibre/cpp/include/fibre/protocol.hpp: In function 'bool conversion::set_from_float_ex(float, T*, int)':
fibre/cpp/include/fibre/protocol.hpp:783:39: error: 'round' is not a member of 'std'
     return *property = static_cast<T>(std::round(value)), true;
                                       ^
fibre/cpp/include/fibre/protocol.hpp:783:39: note: suggested alternative:
In file included from Board/v3/Drivers/CMSIS/Include/arm_math.h:319:0,
                 from MotorControl/low_level.cpp:8:
/usr/include/newlib/math.h:282:15: note:   'round'
 extern double round _PARAMS((double));
               ^
In file included from MotorControl/odrive_main.h:5:0,
                 from MotorControl/low_level.cpp:22:
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >&) [with TObj = Controller; TInputs = {float, float, float}; TOutputs = {}]':
fibre/cpp/include/fibre/protocol.hpp:683:8:   required from here
fibre/cpp/include/fibre/protocol.hpp:989:118: error: cannot convert 'const std::array<const char*, 3u>' to 'const char*' in initialization
         output_properties_(PropertyListFactory<TOutputs...>::template make_property_list<0>(output_names_, out_args_))
                                                                                                                      ^
fibre/cpp/include/fibre/protocol.hpp:989:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >&) [with TObj = Controller; TInputs = {float, float}; TOutputs = {}]':
fibre/cpp/include/fibre/protocol.hpp:683:8:   required from here
fibre/cpp/include/fibre/protocol.hpp:989:118: error: cannot convert 'const std::array<const char*, 2u>' to 'const char*' in initialization
fibre/cpp/include/fibre/protocol.hpp:989:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >&) [with TObj = Controller; TInputs = {float}; TOutputs = {}]':
fibre/cpp/include/fibre/protocol.hpp:683:8:   required from here
fibre/cpp/include/fibre/protocol.hpp:989:118: error: cannot convert 'const std::array<const char*, 1u>' to 'const char*' in initialization
fibre/cpp/include/fibre/protocol.hpp:989:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >&) [with TObj = Controller; TInputs = {}; TOutputs = {}]':
fibre/cpp/include/fibre/protocol.hpp:683:8:   required from here
fibre/cpp/include/fibre/protocol.hpp:989:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp:989:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >&) [with TObj = Motor; TInputs = {float}; TOutputs = {}]':
fibre/cpp/include/fibre/protocol.hpp:683:8:   required from here
fibre/cpp/include/fibre/protocol.hpp:989:118: error: cannot convert 'const std::array<const char*, 1u>' to 'const char*' in initialization
fibre/cpp/include/fibre/protocol.hpp:989:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >&) [with TObj = Axis; TInputs = {}; TOutputs = {float}]':
fibre/cpp/include/fibre/protocol.hpp:683:8:   required from here
fibre/cpp/include/fibre/protocol.hpp:989:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp:989:118: error: cannot convert 'const std::array<const char*, 1u>' to 'const char*' in initialization
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const char*, TObj&, ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet (TObj::*)(TInputs ...), std::array<const char*, sizeof... (TAllProperties)>, std::array<const char*, sizeof... (TOutputs)>) [with TObj = Controller; TInputs = {float, float, float}; TOutputs = {}; ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet = void]':
fibre/cpp/include/fibre/protocol.hpp:1063:106:   required from 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<> > make_protocol_function(const char*, TObj&, void (TObj::*)(TArgs ...), TNames ...) [with TObj = Controller; TArgs = {float, float, float}; TNames = {const char*, const char*, const char*}; <template-parameter-1-4> = void]'
MotorControl/controller.hpp:91:39:   required from here
fibre/cpp/include/fibre/protocol.hpp:977:118: error: cannot convert 'std::array<const char*, 3u>' to 'const char*' in initialization
         output_properties_(PropertyListFactory<TOutputs...>::template make_property_list<0>(output_names_, out_args_))
                                                                                                                      ^
fibre/cpp/include/fibre/protocol.hpp:977:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const char*, TObj&, ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet (TObj::*)(TInputs ...), std::array<const char*, sizeof... (TAllProperties)>, std::array<const char*, sizeof... (TOutputs)>) [with TObj = Controller; TInputs = {float, float}; TOutputs = {}; ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet = void]':
fibre/cpp/include/fibre/protocol.hpp:1063:106:   required from 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<> > make_protocol_function(const char*, TObj&, void (TObj::*)(TArgs ...), TNames ...) [with TObj = Controller; TArgs = {float, float}; TNames = {const char*, const char*}; <template-parameter-1-4> = void]'
MotorControl/controller.hpp:94:39:   required from here
fibre/cpp/include/fibre/protocol.hpp:977:118: error: cannot convert 'std::array<const char*, 2u>' to 'const char*' in initialization
fibre/cpp/include/fibre/protocol.hpp:977:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const char*, TObj&, ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet (TObj::*)(TInputs ...), std::array<const char*, sizeof... (TAllProperties)>, std::array<const char*, sizeof... (TOutputs)>) [with TObj = Controller; TInputs = {float}; TOutputs = {}; ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet = void]':
fibre/cpp/include/fibre/protocol.hpp:1063:106:   required from 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<> > make_protocol_function(const char*, TObj&, void (TObj::*)(TArgs ...), TNames ...) [with TObj = Controller; TArgs = {float}; TNames = {const char*}; <template-parameter-1-4> = void]'
MotorControl/controller.hpp:96:35:   required from here
fibre/cpp/include/fibre/protocol.hpp:977:118: error: cannot convert 'std::array<const char*, 1u>' to 'const char*' in initialization
fibre/cpp/include/fibre/protocol.hpp:977:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const char*, TObj&, ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet (TObj::*)(TInputs ...), std::array<const char*, sizeof... (TAllProperties)>, std::array<const char*, sizeof... (TOutputs)>) [with TObj = Controller; TInputs = {}; TOutputs = {}; ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet = void]':
fibre/cpp/include/fibre/protocol.hpp:1063:106:   required from 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<> > make_protocol_function(const char*, TObj&, void (TObj::*)(TArgs ...), TNames ...) [with TObj = Controller; TArgs = {}; TNames = {}; <template-parameter-1-4> = void]'
MotorControl/controller.hpp:97:118:   required from here
fibre/cpp/include/fibre/protocol.hpp:977:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp:977:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const char*, TObj&, ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet (TObj::*)(TInputs ...), std::array<const char*, sizeof... (TAllProperties)>, std::array<const char*, sizeof... (TOutputs)>) [with TObj = Motor; TInputs = {float}; TOutputs = {}; ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet = void]':
fibre/cpp/include/fibre/protocol.hpp:1063:106:   required from 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<> > make_protocol_function(const char*, TObj&, void (TObj::*)(TArgs ...), TNames ...) [with TObj = Motor; TArgs = {float}; TNames = {const char*}; <template-parameter-1-4> = void]'
MotorControl/motor.hpp:218:44:   required from here
fibre/cpp/include/fibre/protocol.hpp:977:118: error: cannot convert 'std::array<const char*, 1u>' to 'const char*' in initialization
fibre/cpp/include/fibre/protocol.hpp:977:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const char*, TObj&, ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet (TObj::*)(TInputs ...), std::array<const char*, sizeof... (TAllProperties)>, std::array<const char*, sizeof... (TOutputs)>) [with TObj = Axis; TInputs = {}; TOutputs = {float}; ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet = float]':
fibre/cpp/include/fibre/protocol.hpp:1069:118:   required from 'ProtocolFunction<TObj, std::tuple<_Tail ...>, std::tuple<TRet> > make_protocol_function(const char*, TObj&, TRet (TObj::*)(TArgs ...), TNames ...) [with TObj = Axis; TRet = float; TArgs = {}; TNames = {}; <template-parameter-1-5> = void]'
MotorControl/axis.hpp:182:70:   required from here
fibre/cpp/include/fibre/protocol.hpp:977:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp:977:118: error: cannot convert 'std::array<const char*, 1u>' to 'const char*' in initialization
 *** tup errors ***
 *** Command ID=502 failed with return value 1
tup error: Expected to write to file 'build/MotorControl_low_level.cpp.o' from cmd 502 but didn't
 *** Additionally, command 502 failed to process input dependencies. These should probably be fixed before addressing the command failure.
* 63) arm-none-eabi-g++ -std=c++14 -c MotorControl/axis.cpp -DHW_VERSION_MAJOR=3 -DHW_VERSION_MINOR=5 -DHW_VERSION_VOLTAGE=48 -DUSB_PROTOCOL_NATIVE -DUART_PROTOCOL_ASCII -D__weak="__attribute__((weak))" -D__packed="__attribute__((__packed__))" -DUSE_HAL_DRIVER -DSTM32F405xx -mthumb -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -Wall -Wfloat-conversion -fdata-sections -ffunction-sections -g -gdwarf-2 -Og -ffast-math -fno-finite-math-only -IDrivers/DRV8301 -IMotorControl -Ifibre/cpp/include -I. -IBoard/v3/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -IBoard/v3/Middlewares/Third_Party/FreeRTOS/Source/include -IBoard/v3/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -IBoard/v3/Middlewares/ST/STM32_USB_Device_Library/Core/Inc -IBoard/v3/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -IBoard/v3/Drivers/STM32F4xx_HAL_Driver/Inc -IBoard/v3/Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -IBoard/v3/Drivers/CMSIS/Device/ST/STM32F4xx/Include -IBoard/v3/Drivers/CMSIS/Include -IBoard/v3/Inc -I. -IDrivers/DRV8301  -o build/MotorControl_axis.cpp.o
In file included from MotorControl/odrive_main.h:5:0,
                 from MotorControl/axis.cpp:7:
fibre/cpp/include/fibre/protocol.hpp: In function 'bool conversion::set_from_float_ex(float, T*, int)':
fibre/cpp/include/fibre/protocol.hpp:783:39: error: 'round' is not a member of 'std'
     return *property = static_cast<T>(std::round(value)), true;
                                       ^
fibre/cpp/include/fibre/protocol.hpp:783:39: note: suggested alternative:
In file included from MotorControl/utils.h:10:0,
                 from MotorControl/axis.cpp:6:
/usr/include/newlib/math.h:282:15: note:   'round'
 extern double round _PARAMS((double));
               ^
In file included from MotorControl/odrive_main.h:5:0,
                 from MotorControl/axis.cpp:7:
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >&) [with TObj = Controller; TInputs = {float, float, float}; TOutputs = {}]':
fibre/cpp/include/fibre/protocol.hpp:683:8:   required from here
fibre/cpp/include/fibre/protocol.hpp:989:118: error: cannot convert 'const std::array<const char*, 3u>' to 'const char*' in initialization
         output_properties_(PropertyListFactory<TOutputs...>::template make_property_list<0>(output_names_, out_args_))
                                                                                                                      ^
fibre/cpp/include/fibre/protocol.hpp:989:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >&) [with TObj = Controller; TInputs = {float, float}; TOutputs = {}]':
fibre/cpp/include/fibre/protocol.hpp:683:8:   required from here
fibre/cpp/include/fibre/protocol.hpp:989:118: error: cannot convert 'const std::array<const char*, 2u>' to 'const char*' in initialization
fibre/cpp/include/fibre/protocol.hpp:989:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >&) [with TObj = Controller; TInputs = {float}; TOutputs = {}]':
fibre/cpp/include/fibre/protocol.hpp:683:8:   required from here
fibre/cpp/include/fibre/protocol.hpp:989:118: error: cannot convert 'const std::array<const char*, 1u>' to 'const char*' in initialization
fibre/cpp/include/fibre/protocol.hpp:989:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >&) [with TObj = Controller; TInputs = {}; TOutputs = {}]':
fibre/cpp/include/fibre/protocol.hpp:683:8:   required from here
fibre/cpp/include/fibre/protocol.hpp:989:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp:989:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >&) [with TObj = Motor; TInputs = {float}; TOutputs = {}]':
fibre/cpp/include/fibre/protocol.hpp:683:8:   required from here
fibre/cpp/include/fibre/protocol.hpp:989:118: error: cannot convert 'const std::array<const char*, 1u>' to 'const char*' in initialization
fibre/cpp/include/fibre/protocol.hpp:989:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >&) [with TObj = Axis; TInputs = {}; TOutputs = {float}]':
fibre/cpp/include/fibre/protocol.hpp:683:8:   required from here
fibre/cpp/include/fibre/protocol.hpp:989:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp:989:118: error: cannot convert 'const std::array<const char*, 1u>' to 'const char*' in initialization
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const char*, TObj&, ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet (TObj::*)(TInputs ...), std::array<const char*, sizeof... (TAllProperties)>, std::array<const char*, sizeof... (TOutputs)>) [with TObj = Controller; TInputs = {float, float, float}; TOutputs = {}; ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet = void]':
fibre/cpp/include/fibre/protocol.hpp:1063:106:   required from 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<> > make_protocol_function(const char*, TObj&, void (TObj::*)(TArgs ...), TNames ...) [with TObj = Controller; TArgs = {float, float, float}; TNames = {const char*, const char*, const char*}; <template-parameter-1-4> = void]'
MotorControl/controller.hpp:91:39:   required from here
fibre/cpp/include/fibre/protocol.hpp:977:118: error: cannot convert 'std::array<const char*, 3u>' to 'const char*' in initialization
         output_properties_(PropertyListFactory<TOutputs...>::template make_property_list<0>(output_names_, out_args_))
                                                                                                                      ^
fibre/cpp/include/fibre/protocol.hpp:977:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const char*, TObj&, ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet (TObj::*)(TInputs ...), std::array<const char*, sizeof... (TAllProperties)>, std::array<const char*, sizeof... (TOutputs)>) [with TObj = Controller; TInputs = {float, float}; TOutputs = {}; ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet = void]':
fibre/cpp/include/fibre/protocol.hpp:1063:106:   required from 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<> > make_protocol_function(const char*, TObj&, void (TObj::*)(TArgs ...), TNames ...) [with TObj = Controller; TArgs = {float, float}; TNames = {const char*, const char*}; <template-parameter-1-4> = void]'
MotorControl/controller.hpp:94:39:   required from here
fibre/cpp/include/fibre/protocol.hpp:977:118: error: cannot convert 'std::array<const char*, 2u>' to 'const char*' in initialization
fibre/cpp/include/fibre/protocol.hpp:977:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const char*, TObj&, ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet (TObj::*)(TInputs ...), std::array<const char*, sizeof... (TAllProperties)>, std::array<const char*, sizeof... (TOutputs)>) [with TObj = Controller; TInputs = {float}; TOutputs = {}; ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet = void]':
fibre/cpp/include/fibre/protocol.hpp:1063:106:   required from 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<> > make_protocol_function(const char*, TObj&, void (TObj::*)(TArgs ...), TNames ...) [with TObj = Controller; TArgs = {float}; TNames = {const char*}; <template-parameter-1-4> = void]'
MotorControl/controller.hpp:96:35:   required from here
fibre/cpp/include/fibre/protocol.hpp:977:118: error: cannot convert 'std::array<const char*, 1u>' to 'const char*' in initialization
fibre/cpp/include/fibre/protocol.hpp:977:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const char*, TObj&, ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet (TObj::*)(TInputs ...), std::array<const char*, sizeof... (TAllProperties)>, std::array<const char*, sizeof... (TOutputs)>) [with TObj = Controller; TInputs = {}; TOutputs = {}; ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet = void]':
fibre/cpp/include/fibre/protocol.hpp:1063:106:   required from 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<> > make_protocol_function(const char*, TObj&, void (TObj::*)(TArgs ...), TNames ...) [with TObj = Controller; TArgs = {}; TNames = {}; <template-parameter-1-4> = void]'
MotorControl/controller.hpp:97:118:   required from here
fibre/cpp/include/fibre/protocol.hpp:977:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp:977:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const char*, TObj&, ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet (TObj::*)(TInputs ...), std::array<const char*, sizeof... (TAllProperties)>, std::array<const char*, sizeof... (TOutputs)>) [with TObj = Motor; TInputs = {float}; TOutputs = {}; ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet = void]':
fibre/cpp/include/fibre/protocol.hpp:1063:106:   required from 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<> > make_protocol_function(const char*, TObj&, void (TObj::*)(TArgs ...), TNames ...) [with TObj = Motor; TArgs = {float}; TNames = {const char*}; <template-parameter-1-4> = void]'
MotorControl/motor.hpp:218:44:   required from here
fibre/cpp/include/fibre/protocol.hpp:977:118: error: cannot convert 'std::array<const char*, 1u>' to 'const char*' in initialization
fibre/cpp/include/fibre/protocol.hpp:977:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp: In instantiation of 'ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::ProtocolFunction(const char*, TObj&, ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet (TObj::*)(TInputs ...), std::array<const char*, sizeof... (TAllProperties)>, std::array<const char*, sizeof... (TOutputs)>) [with TObj = Axis; TInputs = {}; TOutputs = {float}; ProtocolFunction<TObj, std::tuple<_Elements ...>, std::tuple<_Tail ...> >::TRet = float]':
fibre/cpp/include/fibre/protocol.hpp:1069:118:   required from 'ProtocolFunction<TObj, std::tuple<_Tail ...>, std::tuple<TRet> > make_protocol_function(const char*, TObj&, TRet (TObj::*)(TArgs ...), TNames ...) [with TObj = Axis; TRet = float; TArgs = {}; TNames = {}; <template-parameter-1-5> = void]'
MotorControl/axis.hpp:182:70:   required from here
fibre/cpp/include/fibre/protocol.hpp:977:118: error: initializer for 'std::__array_traits<const char*, 0u>::_Type' must be brace-enclosed
fibre/cpp/include/fibre/protocol.hpp:977:118: error: cannot convert 'std::array<const char*, 1u>' to 'const char*' in initialization
 *** tup errors ***
 *** Command ID=506 failed with return value 1
tup error: Expected to write to file 'build/MotorControl_axis.cpp.o' from cmd 506 but didn't
 *** Additionally, command 506 failed to process input dependencies. These should probably be fixed before addressing the command failure.

#5

For me the same. First brake of compilation begins at git 3bf6aaef29a91003b0a4ed55224e208fc147b449
APR6 Merge branch ‘devel’ into sam_refactoring

Looking in to the change to see what is going on. Try with ubuntu 18 but no support for tup.
Which os are you guys using to build

In file included from MotorControl/protocol.cpp:5:0:
MotorControl/protocol.hpp: In member function ‘void ProtocolProperty::write_json(size_t, StreamSink*)’:
MotorControl/protocol.hpp:576:50: error: there are no arguments to ‘snprintf’ that depend on a template parameter, so a declaration of ‘snprintf’ must be available [-fpermissive]
snprintf(id_buf, sizeof(id_buf), “%u”, id); // TODO: get rid of printf


#6

Fixed all compilation problem.
Just remove all the arm-none-eabi
do apt-get list --installed | grep eabi
and for each to apt-get remove

and install the latest version of the toolchain

sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
sudo apt-get update
sudo apt-get install gcc-arm-embedded