A C++ template library for embedded applications
Designed and maintained by
Aster Consulting Ltd
MIT licensed
Join the ETL community

Compilers


The library is intended to be used on multiple platforms and devices. Not every single combination of
compiler/IDE/device/library template have been, or can realistically be,  checked. A set of profiles have been created
for the most popular setups.
If you have issues porting the library to your platform then contact me, and I will do my best to resolve any
incompatibilities.

If you have no issues, or have solved it by yourself then please let me know so that I may add information about it to
this page.

I can be contacted here.

Visual Studio

Has been compiled under VS2015 & VS2017.
No known issues.

GCC

Has been compiled under GNU GCC  on Windows & Linux.
No known issues, apart from early versions of GCC that may need to define the macro __STDC_LIMIT_MACROS in the
project properties.

Keil uVision

ARM

Define the macro __STDC_LIMIT_MACROS in the project properties.
Compiled with version 5 & 6 ARM compilers.
No known issues.

TI Code Composer

MPS430

Define the macro __STDC_LIMIT_MACROS in the project properties.
No known issues.

IAR Embedded Workbench

ARM

Define the macro __STDC_LIMIT_MACROS in the project properties.
No known issues.

Segger Embedded Studio

ARM

If using STLPort then the macro ETL_STLPORT must be defined in the profile..

Arduino

Arduino IDE


Visual Studio with Visual Micro extension

The Arduino programming platform is not supplied with an implementation of the STL. The ETL requires some parts
of the STL to compile and therefore  either one must be acquired or the project is compiled with ETL_NO_STL
defined.
A suitable STL implementation may be downloaded from the Arduino library resource; It is called ArduinoSTL.
Add #include <ArduinoSTL.h> to the start of every file that uses the ETL.
Remember to add the directory to the include path.

Partially tested for Zero, Uno, Yún, Mega, Industrial 101 and Leonardo boards using test_embedded_compile.cpp

Issues

Zero
<algorithm> must be edited to move the template function iter_swap before the declaration of swap_ranges.
The template class variant will not currently compile unless the header file is renamed. Why?!


Due
Fails to find ArduinoSTL.h even though it is present.
If ArduinoSTL.h is removed, then fails with printf has not been declared.

General
It may be necessary to add the following lines to the beginning of the file.
#undef min
#undef max