Skip to content
This repository was archived by the owner on Apr 17, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
184 commits
Select commit Hold shift + click to select a range
76fa447
Added initial Arduino-Toolchain file with a basic example to prove it…
MrPointer May 26, 2018
6bea83a
Added cmake script to find mandatory avr/Arduino tools in the SDK.
MrPointer May 26, 2018
b13cf31
Added scripts to set default avr compiler and linker flags.
MrPointer May 26, 2018
6e41b69
Added script to set default flags for some avr-tools.
MrPointer May 26, 2018
c74b641
Added function to create Arduino "Executables".
MrPointer May 27, 2018
2293200
Added function to upload Arduino executable-targets using a bootloader.
MrPointer May 27, 2018
b7f3b9c
Added script to set default platform and another script to find its e…
MrPointer May 28, 2018
c4755c8
Added function (and script) to read properties from a platform's prop…
MrPointer May 28, 2018
0a134d3
Added feature to resolve known entry links in properties' values.
MrPointer May 29, 2018
2be07d0
Improved 'read_properties' function by filtering list of properties r…
MrPointer May 29, 2018
7b854eb
Finish platform-init
MrPointer May 29, 2018
dc34b4c
Added feature to get all platform's boards names while reading boards…
MrPointer May 29, 2018
3b15bcd
Added feature to store platform's specific cores and variants in cache.
MrPointer May 29, 2018
c0f7fa3
Added a `BoardManager` script to retrieve board IDs and board propert…
MrPointer May 30, 2018
2d6cea3
Finish board-properties
MrPointer May 30, 2018
df83412
Added list of platform cores and a default core to the cache.
MrPointer Jun 1, 2018
24baf4d
Prepended all platform cache-variables with the 'ARDUINO_CMAKE' string.
MrPointer Jun 1, 2018
c6d92dd
Finish platform-core-selection
MrPointer Jun 1, 2018
261c06e
Added function to setup bootloader arguments for uploading firmwares …
MrPointer Jun 1, 2018
e0dfc70
Fixed bug in 'get_board_id' function where '_board_cpu' argument was …
MrPointer Jun 2, 2018
fc83433
Fixed another bug in the 'get_board_id' function.
MrPointer Jun 2, 2018
3ee18f7
Added platform's core dir as an include dir to the created executable…
MrPointer Jun 2, 2018
9c6976d
Applied the concept of default platform core to variants as well.
MrPointer Jun 2, 2018
b0cef42
Fixed some bugs in the 'UploadTarget' module, mostly caused by wrongl…
MrPointer Jun 2, 2018
142bdd8
Added the original 'Blink' example to the 'blink.cpp' file.
MrPointer Jun 2, 2018
61de16a
Finish target-creation
MrPointer Jun 2, 2018
ce5695e
Renamed 'Initialization' directory-module to 'System' as it's a bette…
MrPointer Jun 2, 2018
711002e
Removed custom-set compiler, linker and platform flags.
MrPointer Jun 2, 2018
4e206ea
Moved inner 'Platform' directory to upper 'System' directory as nesti…
MrPointer Jun 2, 2018
87cf559
Extracted property functionality to 2 new modules, `PropertyValueReso…
MrPointer Jun 3, 2018
e9b23e6
Added 'try_get_board_property' function that simply returns nothing i…
MrPointer Jun 3, 2018
8295fc2
Fixed some more bugs in the `PropertyValueResolver` module.
MrPointer Jun 3, 2018
2ad7240
Added module to parse platform recipes such as the compile patterns.
MrPointer Jun 3, 2018
cfbdb74
Refactored project structure by moving property readers under 'Other'…
MrPointer Jun 4, 2018
e9298a6
Modified compiler-recipe function to filter list with unwanted patter…
MrPointer Jun 4, 2018
35165a2
Added support for all languages in compiler-recipe retriever.
MrPointer Jun 4, 2018
94b629e
Added feature to resolve inner-list values.
MrPointer Jun 5, 2018
66e3eaf
Adjusted `RecipeParser` module to account for early-resolvers.
MrPointer Jun 5, 2018
f6cdee5
Added module to detect Arduino SDK's version.
MrPointer Jun 7, 2018
7767301
Added cache variable to store platform's architecture (compiler recipe).
MrPointer Jun 7, 2018
32abc4c
Added feature to parse upload recipes entirely.
MrPointer Jun 7, 2018
ad95f48
Refactored upload flags setting in the `UploadTarget` module to be ma…
MrPointer Jun 7, 2018
6f9345d
Fixed many bugs where 'board_id' variable has always been treated as …
MrPointer Jun 7, 2018
0810082
Finish target-flags
MrPointer Jun 7, 2018
aaa6881
Modified 'board-id' to be a string separated by '.' instead of a list.
MrPointer Jun 7, 2018
612ae7f
Small refactorings and unnecessary print removals.
MrPointer Jun 7, 2018
61f342a
Finish board-id
MrPointer Jun 7, 2018
b05f4af
Added support for avr-size script in custom format.
MrPointer Jun 8, 2018
99cdb08
Finish avr-tools
MrPointer Jun 9, 2018
e90ede4
Added feature to build and link Arduino's Core Library to the executa…
MrPointer Jun 10, 2018
c736f4e
Added partial support for setting linker flags on executable target.
MrPointer Jun 10, 2018
c36c15a
Provided custom AR and RANLIB programs to allow linking 'lto' targets.
MrPointer Jun 10, 2018
248eab2
Added support for language-specific compile flags using generator exp…
MrPointer Jun 12, 2018
caed008
Added conversions to matching language names when needed.
MrPointer Jun 12, 2018
65ce2c9
Added even more language conversion usage.
MrPointer Jun 12, 2018
9872527
Modified toolchain file to use 'find_program' to find compilers inste…
MrPointer Jun 12, 2018
b7152cf
Added support for "custom" ar-flags defined by the platform file.
MrPointer Jun 12, 2018
41f910c
Added support for linker flags as parsed from platform's recipe.
MrPointer Jun 13, 2018
3dd7309
Fixed size script not displaying the percentage (%) char where needed.
MrPointer Jun 14, 2018
a2681cb
Finish core-lib
MrPointer Jun 14, 2018
9b5321f
Added module to find Arduino SDK on all possible host systems.
MrPointer Jun 22, 2018
9c2d827
Wrapped all program-findings required by the Toolchain in a function.
MrPointer Jun 22, 2018
eda088a
Refactored the 'System' module by wrapping everything functions.
MrPointer Jun 24, 2018
ba54cf5
Refactored the 'Core-Lib' target module - Splitting to functions, etc.
MrPointer Jun 25, 2018
bdc1cbf
Little fix to a potential bug in the refactored version of 'Core-Lib'.
MrPointer Jun 25, 2018
bf6dbfe
Documented functions in `TargetFlagsManager` module.
MrPointer Jun 25, 2018
7b7b033
Documented `Target` modules.
MrPointer Jun 25, 2018
e76f4b9
Fixed 'find_source_files' function to use 'cmake_parse_arguments' fun…
MrPointer Jun 25, 2018
f984f2e
Documented all utility modules.
MrPointer Jun 26, 2018
6202d27
Re-documented `BoardManager` module.
MrPointer Jun 28, 2018
77378ad
Removed duplicate code from 'PropertyReader' modules.
MrPointer Jun 29, 2018
24fa63b
Refactored 'read_boards_properties' function into several smaller fun…
MrPointer Jun 29, 2018
2bf5009
Fixed critical bug in `PropertiesReader` module causing Cache to be p…
MrPointer Jun 29, 2018
3cd11db
Fixed regex matching in 'PropertyResolve' module and documented its' …
MrPointer Jun 29, 2018
3b10d4e
Finish code-cleanup
MrPointer Jun 29, 2018
38e8ffe
Added module to detect Linux distribution.
MrPointer Jun 29, 2018
708fbb5
Added support for archlinux's platform path if the option to use buil…
MrPointer Jun 29, 2018
04e2e0b
Fixed bug regarding archlinux support.
MrPointer Jun 29, 2018
6e19816
Added initial support for Arduino libraries (Part of the SDK).
MrPointer Jun 29, 2018
659fce4
Added support for "linking" core lib to Arduino library, thus linking…
MrPointer Jun 29, 2018
7133f04
Added utility function to create a target name for a board's core lib.
MrPointer Jun 29, 2018
ac3483b
Added support for setting compiler and linker flags on Arduino librar…
MrPointer Jun 29, 2018
182f94f
Added support for finding headers files in a path as well as source f…
MrPointer Jun 30, 2018
e690553
Added basic support for Arduino libraries with more than one header a…
MrPointer Jun 30, 2018
30243e2
Added recursive sources lookup for Arduino libraries.
MrPointer Jun 30, 2018
1426eb8
Added support for Arduino libraries that are architecture-specific.
MrPointer Jun 30, 2018
ac3a4d9
Improved architecture-specific library support.
MrPointer Jun 30, 2018
f19154e
Removed small code duplicate.
MrPointer Jul 2, 2018
3a0cc02
Added ability to get includes of a source file and find any dependent…
MrPointer Jul 4, 2018
ab7cb1d
Refactored 'find_dependent_platform_libraries' function into separate…
MrPointer Jul 4, 2018
47b8a9c
Refactored Arduino library's target creation to a separate function.
MrPointer Jul 8, 2018
a528a0e
Added feature to include/link dependent platform libraries of Arduino…
MrPointer Jul 8, 2018
6d4761c
Documented all functions related to Arduino and Platform libraries.
MrPointer Jul 10, 2018
f7f1460
Finish platform-libs
MrPointer Jul 10, 2018
0e2208e
Fixed bug linking existing Core Lib to target without a defined scope.
MrPointer Jul 13, 2018
4992778
Separated examples into 2 projects - One for basic Arduino program an…
MrPointer Jul 13, 2018
14058d1
Fixed bug where a library's architecture hasn't been defined correctly.
MrPointer Jul 13, 2018
574ec25
Added code to link Core Lib to an Arduino library.
MrPointer Jul 13, 2018
2b51650
Finish arduino-libs
MrPointer Jul 13, 2018
4e139ab
Fixed bug where wrong Core-Lib target was used for libraries of the s…
MrPointer Jul 14, 2018
585e349
Updated examples naming and structure, also required by last bug fix.
MrPointer Jul 14, 2018
a018b99
Fixed bug where wrong Core-Lib target was used for libraries of the s…
MrPointer Jul 14, 2018
d126036
Merge branch 'core-lib-fix' into develop
MrPointer Jul 14, 2018
d3e508c
Added support for Arduino sketch file - *.ino and *.pde extensions.
MrPointer Jul 20, 2018
517c65c
Refactored sketch-conversion function by separating to multiple funct…
MrPointer Jul 20, 2018
eeb63d2
Added full support for Arduino Example targets.
MrPointer Jul 23, 2018
6b335c8
Finish arduino-examples
MrPointer Jul 23, 2018
dc9111f
Added API for Arduino library examples - Feature is not yet complete!
MrPointer Aug 5, 2018
6443b31
Improved sketch-to-source conversion function.
MrPointer Aug 5, 2018
4da1a42
Optimized sketch conversion's header-pattern regex.
MrPointer Aug 5, 2018
c329a85
Completed support for Arduino library examples by documenting.
MrPointer Aug 8, 2018
bc0e824
Updated '.gitignore' to ignore examples' converted sketches explicitly.
MrPointer Aug 9, 2018
ce7643b
Finish arduino-library-examples
MrPointer Aug 9, 2018
6e0c386
Modified increment/decrement logic to be simpler and optimized in all…
MrPointer Aug 9, 2018
271dc2d
Modified 'list_replace' function to be a macro.
MrPointer Aug 9, 2018
4c0d173
Merge branch 'feature/code-cleanup' into develop
MrPointer Aug 9, 2018
30e8c63
Added support for finding platform's main header file.
MrPointer Aug 10, 2018
60aea4a
Documented function finding platform's main header.
MrPointer Aug 10, 2018
2b973d6
Finish platform-header
MrPointer Aug 10, 2018
69f8ca6
Updated Readme to match new project.
MrPointer Aug 10, 2018
51f6852
Updated example in Readme file to match new API.
MrPointer Aug 11, 2018
02fe42e
Updated changelog to match all changes of the new framework.
MrPointer Aug 11, 2018
9319286
Added wiki-docs from old project, modifying some of them to match new…
MrPointer Aug 12, 2018
93d96e1
Updated `Generating CMake` to be more accurate and professional.
MrPointer Aug 14, 2018
7bbc41b
Modified 'Building Project' section to match updated framework.
MrPointer Aug 17, 2018
d1d03c8
Added option to control custom platform header supply.
MrPointer Aug 17, 2018
bf35094
Removed unnecessary print message.
MrPointer Aug 17, 2018
e386f29
Finish platform-header-fix
MrPointer Aug 17, 2018
6ee638d
Added support for sketch targets to the API.
MrPointer Aug 17, 2018
90a0a0d
Finish sketch
MrPointer Aug 17, 2018
e40e0bd
Updated changelog to include v0.4.1 changes.
MrPointer Aug 17, 2018
618305e
Updated 'Creating Program' to match new framework.
MrPointer Aug 18, 2018
ceaff1a
Updated 'Upload' section to match new framework.
MrPointer Aug 19, 2018
9619310
Removed doc sections relevant only to the old framework since they're…
MrPointer Aug 19, 2018
47cfd8e
Updated 'Libraries' section to match new framework.
MrPointer Aug 19, 2018
1f5d72a
Partially updated 'Sketches' section to match new framework.
MrPointer Aug 21, 2018
0fbb0c2
Created submodule explicitly for sketches, moving existing cmake modu…
MrPointer Aug 22, 2018
bd21fe5
Added function to add sketch to target.
MrPointer Aug 24, 2018
9a03605
Separated default setting to several functions, left only 1 main func…
MrPointer Aug 25, 2018
e65c2fb
Modified `add_sketch_to_target` function to operate on headers (as in…
MrPointer Aug 25, 2018
729fe95
Refactored header-resolving logic from `add_sketch_to_target` to sepa…
MrPointer Aug 26, 2018
40965fe
Modified sketch target API to be more similar to CMake's targets API.
MrPointer Aug 26, 2018
1c4b035
Added option to forcefully convert sketch to source even if source fi…
MrPointer Aug 26, 2018
982e8b9
Finish sketch-libs
MrPointer Aug 26, 2018
aa0ee69
Updated changelog to match new v0.5 version.
MrPointer Aug 26, 2018
a424400
Completed `Sketches` section to match updated API.
MrPointer Aug 27, 2018
aae5282
Refactored any property-related modules, moving the under `Properties…
MrPointer Aug 27, 2018
d71fff1
Refactored source-related modules by moving the under the `Sources` d…
MrPointer Aug 27, 2018
46e496a
Fixed bug in 'Header Include' regex pattern.
MrPointer Aug 27, 2018
8ffc3d6
Added utility function to get name symbol from string without file ex…
MrPointer Aug 27, 2018
a0e20bd
Fixed bug in latest utility function as well as `get_source_file_incl…
MrPointer Aug 28, 2018
9058ed6
Fixed bug in sketch header resolving where Arduino libraries couldn't…
MrPointer Aug 30, 2018
4cb527d
Optimized target sketch-addition feature by avoiding unnecessary head…
MrPointer Aug 30, 2018
9cc596c
Added utility function to convert strings to PascalCase, now also use…
MrPointer Aug 30, 2018
dc30b57
Merge remote-tracking branch 'origin/feature/code-cleanup' into develop
MrPointer Aug 30, 2018
02be138
Updated changelog to match v0.5.1
MrPointer Aug 30, 2018
5c87158
Updated `Examples` section to match new framework.
MrPointer Aug 30, 2018
fc214e4
Updated 'Build Flags' and 'Building With Make' sections to match new …
MrPointer Aug 31, 2018
73e53bb
Modified parameters order in `add_arduino_library_example` function.
MrPointer Aug 31, 2018
ad7df78
Added potential bug fix to core-lib target creation on Debian/Ubuntu …
MrPointer Aug 31, 2018
df522ec
Updated 'Examples' and changelog to latest v0.5.2 changes.
MrPointer Aug 31, 2018
664c6ff
Updated 'Contributing' to match new framework
MrPointer Sep 1, 2018
2e139b0
Updated 'Readme' to list all existing features
MrPointer Sep 1, 2018
b40b7a5
Fixed all undone sections of the docuemntation
MrPointer Sep 1, 2018
9e6f3f8
Updated 'Advanced' category to have an 'Options' sections.
MrPointer Sep 1, 2018
f8bcdc9
Added passage about 'NG' in 'Readme'.
MrPointer Sep 1, 2018
7258bd8
Merge remote-tracking branch 'origin/feature/docs' into release/v0.5.2
MrPointer Sep 1, 2018
5728639
Moved setting of all internal SDK paths to a single function.
MrPointer Sep 1, 2018
3fcb3b4
Removed unused cache variable.
MrPointer Sep 1, 2018
e0641db
Updated 'travis', 'appveyor' and 'editorconfig' for new framework.
MrPointer Sep 1, 2018
6bc9ddc
Cleaned '.travis' file.
MrPointer Sep 2, 2018
58d129a
Fixed bug where 'detect_linux_distribution' function wasn't recognize…
MrPointer Sep 2, 2018
123b734
Updated 'AppVeyor' config to deploy versions to GitHub Releases.
MrPointer Sep 5, 2018
0e3e73b
Added secure GitHub token.
MrPointer Sep 5, 2018
a79854b
Small Fix.
MrPointer Sep 5, 2018
1aae1aa
Fixed bug where custom Arduino-SDK paths weren't actually honored.
MrPointer Sep 5, 2018
f32b23b
Took new approach towards 'ARDUINO_SDK_PATH'.
MrPointer Sep 6, 2018
b45b0dc
Improved env-var approach by fixing subtle bugs.
MrPointer Sep 6, 2018
6ffafd5
Updated 'AppVeyor' and 'Travis' configs to set env var.
MrPointer Sep 6, 2018
715bec7
Updated 'AppVeyor' to correctly use the 'MinGW' generator.
MrPointer Sep 7, 2018
d016370
Modified build operations to redirect warning & error streams to succ…
MrPointer Sep 10, 2018
e55dd7a
Fixed 'AppVeyor' artifacts section to produce correct artifacts.
MrPointer Sep 11, 2018
8b7ea11
Updated 'changelog' and 'installation' to mention `ARDUINO_SDK_PATH` …
MrPointer Sep 11, 2018
37fc8e7
Re-fixed 'AppVeyor' error code issues leading to falsely-failing builds.
MrPointer Sep 11, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ insert_final_newline = true

indent_style = space
indent_size = 4
# Editor support is limited. Make your you align multiline statements accordingly, should your editor not honour this attribute
# Editor support is limited. Make you align multi-line statements accordingly,
# should your editor not honour this attribute
continuation_indent_size = 8

trim_trailing_whitespace = true
Expand Down
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -117,4 +117,7 @@ crashlytics-build.properties
fabric.properties

### User-Defined
[Aa]ssets/*
[Aa]ssets/*
/examples/blink-example/Blink.cpp
/examples/servo-knob-example/Knob.cpp
/examples/sketch/sketch.cpp
29 changes: 29 additions & 0 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/codeStyles/codeStyleConfig.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

65 changes: 33 additions & 32 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,41 +1,42 @@
language: c
language: cpp
os:
- linux
- osx
- linux
- osx
env:
matrix:
- ARDUINO_SDK_VERSION=1.6.13
- ARDUINO_SDK_VERSION=1.8.5
- ARDUINO_SDK_VERSION=1.6.13
- ARDUINO_SDK_VERSION=1.8.6
addons:
apt:
packages:
- gcc-avr
- binutils-avr
- avr-libc
- avrdude
- gcc-avr
- binutils-avr
- avr-libc
- avrdude
- cmake
before_install:
- |
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
export ARDUINO_SDK_FILE="arduino-$ARDUINO_SDK_VERSION-linux32.tar.xz"
else
export ARDUINO_SDK_FILE="arduino-$ARDUINO_SDK_VERSION-macosx.zip"
fi
- wget "https://downloads.arduino.cc/$ARDUINO_SDK_FILE" -O "$ARDUINO_SDK_FILE"
- mkdir arduino-sdk
- |
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
tar xf "$ARDUINO_SDK_FILE" -C arduino-sdk --strip-components 1
export ARDUINO_SDK_PATH="$(pwd)/arduino-sdk"
else
unzip "$ARDUINO_SDK_FILE" "Arduino.app/Contents/Java/*" -d arduino-sdk
export ARDUINO_SDK_PATH="$(pwd)/arduino-sdk/Arduino.app/Contents/Java"
fi
- |
if [[ $TRAVIS_OS_NAME == linux ]]; then
export ARDUINO_SDK_FILE="arduino-$ARDUINO_SDK_VERSION-linux32.tar.xz"
else
export ARDUINO_SDK_FILE="arduino-$ARDUINO_SDK_VERSION-macosx.zip"
brew install cmake
fi
- wget "https://downloads.arduino.cc/$ARDUINO_SDK_FILE" -O "$ARDUINO_SDK_FILE"
- mkdir arduino-sdk
- |
if [[ $TRAVIS_OS_NAME == linux ]]; then
tar xf "$ARDUINO_SDK_FILE" -C arduino-sdk --strip-components 1
export ARDUINO_SDK_PATH="$(pwd)/arduino-sdk"
else
unzip "$ARDUINO_SDK_FILE" "Arduino.app/Contents/Java/*" -d arduino-sdk
export ARDUINO_SDK_PATH="$(pwd)/arduino-sdk/Arduino.app/Contents/Java"
fi
install:
- mkdir build
- rm -rf build/*
- cd build/
- mkdir build
- rm -rf build/*
- cd build/
script:
- cmake -D ARDUINO_SDK_PATH="$ARDUINO_SDK_PATH" ..
- make
- cmake -D CMAKE_TOOLCHAIN_FILE="../cmake/Arduino-Toolchain.cmake" ..
- make
after_script:
- cat CMakeFiles/CMakeOutput.log
- cat CMakeFiles/CMakeOutput.log
38 changes: 7 additions & 31 deletions AUTHORS.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,10 @@
# Authors

This files lists all the authors of this project, which helped its growing by adding code, fixing bugs, etc.
This files lists all the authors of this project that helped it grow by adding code, fixing bugs, etc.

- mean00 ([mean00](https://github.com/mean00))
- Ariel ([aog2000a](https://github.com/aog2000a))
- Konstantin Gredeskoul ([kigster](https://github.com/kigster))
- Juan José Herrero Barbosa ([Souler](https://github.com/Souler))
- Bei Chen Liu ([Baycken](https://github.com/Baycken))
- Marc Plano-Lesay ([Kernald](https://github.com/Kernald))
- James Goppert ([jgoppert](https://github.com/jgoppert))
- Matt Tyler ([matt-tyler](https://github.com/matt-tyler))
- Andrew Stromme ([astromme](https://github.com/astromme))
- [johnyb](https://github.com/johnyb)
- [arunh](https://github.com/arunh)
- Sebastian Herp ([sebastianherp](https://github.com/sebastianherp))
- Michael Daffin ([james147](https://github.com/james147))
- Pavel Ilin ([PIlin](https://github.com/PIlin))
- Igor Mikolic-Torreira ([igormiktor](https://github.com/igormiktor))
- Claudio Henrique Fortes Felix ([chffelix](https://github.com/chffelix))
- Alexandre Tuleu ([atuleu](https://github.com/atuleu))
- [getSurreal](https://github.com/getSurreal)
- Sebastian Zaffarano ([szaffarano](https://github.com/szaffarano))
- [cheshirekow](https://github.com/cheshirekow)
- Logan Engstrom ([meadowstream](https://github.com/meadowstream))
- Francisco Ramírez ([franramirez688](https://github.com/franramirez688))
- Brendan Shillingford ([bshillingford](https://github.com/bshillingford))
- Mike Purvis ([mikepurvis](https://github.com/mikepurvis))
- Steffen Hanikel ([hanikesn](https://github.com/hanikesn))
- Mindaugas Vinkelis ([fraillt - Contributor)
- noseglasses ([noseglasses - Contributor)
- Tomasz Bogdal ([queezythegreat - Original author of arduino-cmake)
- Jonas ([JonasProgrammer](https://github.com/JonasProgrammer) - Maintainer)
- Timor Gruber ([MrPointer](https://github.com/MrPointer) - Maintainer)
- Tomasz Bogdal ([queezythegreat - Original author of **Arduino-CMake**)
- Timor Gruber ([MrPointer](https://github.com/MrPointer) - Author of **Arduino-CMake 3**, Current Maintainer)

There are many other authors who have contributed to the various forks and versions, work which couldn't be done without them.

To all of you - Thank you very much!
161 changes: 140 additions & 21 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,148 @@
# Change Log

# Version [2.0.1](https://github.com/arduino-cmake/arduino-cmake/compare/v2.0.0...v2.0.1) (Dec 19th 2017)
## Version 0.5.2

### Bug fixes
This version adds case-insensitive support for examples, forgotten in the last version.
Fixes a bug in Core-Lib target creation on Debian/Ubuntu systems, and adds support for **AppVeyor** CI.

* fixed `-DARDUINO` define for Arduino SDK versions between 1.0.0 and 1.5.8. This bug caused to included `WProgram.h` instead of `Arduino.h` for aforementioned versions.
But most importantly - It changes the way users should supply a custom SDK location.

# Version 2.0.0 (Dec 13th 2017)
### New Features

An epic version which integrates too many changes to be listed and recorded since the latest stable version, which was **1.0.0**. It has been released almost <u>4 years ago</u>!
* Example name parameter of the **Example API** functions is now case-insensitive
* Support for **AppVeyor** continuous integration/CI.

However, here are some of the most noticeable changes in this version:
### Changes

* Supplying custom **Arduino SDK** path - Should now set an environment variable in the system named `ARDUINO_SDK_PATH`, instead of passing it as a variable to CMake through `-D`
* Parameter order in the `add_arduino_library_example` function - `_board_id` becomes 2nd

### Bug Fixes

* Potential bug in Debian/Ubuntu systems when creating Core Library targets

## Version 0.5.1

This version fixes some "invisible" bugs from previous versions, along with general design improvements.
Moreover, there are even some new minor features.

### New Features

* Library name parameter of the `find_arduino_library` function is now case-insensitive due to a new utility feature to convert strings to *PascalCase*

### Changes

* Refactored many modules previously under the `Other` directory to be each under its' relevant directory

### Bug Fixes

* Sketch conversion was only partially avoided - Now the functionality is optimized
* Arduino libraries couldn't be linked to the target when resolving a sketch's headers
* Regex search patterns

## Version 0.5

This version refactored the Sketch API entirely to enhance support for missing features from previous versions. It also organized "*globals*" and default options in a single 'Defaults' module.

### New Features

- Headers included in a sketch file are now resolved to provide better insight
- Arduino/Platform libraries that are resolved from a sketch's headers are linked to the target
- Option/Policy to "forcefully" convert a sketch to a source file when adding it to a target, even if the source file already exists (Usually means that sketch has already been converted).
By default it's set to **OFF**.

### Changes

* New Sketch API which resembles CMake's target API - Use `target_sketches` as you would use `target_sources`
* Various inline search patterns and defaults have been moved to the 'DefaultsManager' module

## Version 0.4.1

This version adds minor feature improvements as well as complete sketch support.

### New Features

* Full sketch support in the API
* Sketch targets can be created by calling the `add_sketch_target` function
* Ability to provide a custom main platform header by setting the `USE_CUSTOM_PLATFORM_HEADER` option on

## Version 0.4

This version mostly added support for examples and sketches.

### New Features

* Arduino examples such as **Blink** can now be used by calling the `add_arduino_example` function
* Arduino library examples, each being part of an Arduino library, can also be used by calling the `add_arduino_library_example` function
* Arduino Sketches can be converted into source files under the project's source directory.
The API to use them seamlessly as using examples is still missing, however.
* During platform initialization the main header of the platform gets selected.
This is useful for sketch conversion, as sketches usually don't include the header in their source files but depend on the **Arduino IDE** to do so instead.
The header is selected based on the number of `#include` lines it has - The header with most includes is selected as platform's main header, as it probably includes many other platform headers.

### Changes

* The API of the utility function `list_replace` now resembles CMake's List API.
It's also a macro now instead of a function.
* Improved logic and performance of utility `increment` and `decrement` math functions

## Version 0.3.1

This version includes a **critical** bug fix.

### Bug Fixes

* Wrong Core Library was used for libraries of the same board - As the Core-Lib is board-specific and board-dependent, it shouldn't be different for targets of the same board

## Version 0.3

This version added support for Arduino libraries and platform libraries.

### New Features

* Arduino libraries can be found by calling `find_arduino_library` and then linked to another target by calling `link_arduino_library`
* The library search process is architecture-aware, meaning that only sources that match the platform's architecture will be included in the library target
* Arduino platform libraries can be simply linked to another target by calling `link_platform_library`.
There's no special search process for platform libraries as there is for Arduino libraries.

## Version 0.2

This version added support for the **Core Library** - A static library built from the platform's core sources that must be linked to every single target in the Arduino build system, including libraries in the future.
This library is also the missing piece for getting correct program sizes, which hasn't been the case up until now.

### New Features

* The Core Library is added once per board (As a board has a single associated core) and linked against every created target.
This behavior is internal and not up to the control of the user, much like a Kernel.

### Changes

* The entire codebase has been "cleaned", code-wise. It includes:
* Separation of Concerns - Everything has its' own function, preferably also a module (CMake file)
* Better control flow
* Better use of "Modern CMake" recommendations

## Version 0.1.1

This version added support for displaying a program's size upon build completion.

### New Features

* Program size output for every executable target at the end of each successful build.
This is done using Arduino's **avr-size** tool.
The tool's output is then reformatted to match the format of Arduino IDE.

## Version 0.1

This is the bare metal version of the framework, adding support for the very basic stuff.
Although basic, there's a lot that had to be done in order to reach a somewhat "stable" version that can be burned to the board and actually work.

### Features

* Creating Arduino "executables" (Hex files that can be burned/uploaded/flashed to the hardware board) by calling `add_arduino_executable`
* Uploading created executables/targets to a connected hardware board by calling `upload_arduino_target`, passing it the Serial Port (Such as **COM3**) through which the uploading process will be done
* Analyzing the SDK by parsing all required information from files such as `platform.txt` and `boards.txt`
* Parsing the `platform.txt` file is an entirely new concept that hasn't been used until now in all forks of the old Arduino-CMake. In fact, this is what allows the framework to be truly platform-agnostic, as it defines the platform's core behavior

Many more subtle and internal features have been implemented, but they won't be listed here.

* Code has been completely refactored:
* Previously the project has consisted from generally 2 files:
1. `ArduinoToolchain.cmake`
2. `Platform/Arduino.cmake`
* All functions and scripts in the `Arduino.cmake` file, which took nearly 3,500 lines of code, have been separated into matching script files, located under matching directories.
* A script-driven approach has been taken, allowing developers to substitute a functionality simply by referencing a different CMake script file.
* Arduino SDK version 1.5 and higher is supported:
* Several changes were introduced in the SDK itself causing the previous version to fail building.
* Custom hardware platforms and architectures can be defined:
* Though it has already existed in the previous version, this feature was in a form of a function.
Now it's a script that can either be replaced or use customized parameters.
* Ability to define architecture is new.
* Example generation:
* Users can generate firmware using one of Arduino's built-in examples, such as the classic **Blink**.
* Support for example *categories* has also been added, complying with Arduino current example-nesting strategy. For example, the **Blink** example is located under the `01.Basic` directory, which is also considered as its category.
Loading