Skip to content
This repository was archived by the owner on Apr 17, 2023. It is now read-only.

Commit 7258bd8

Browse files
committed
Merge remote-tracking branch 'origin/feature/docs' into release/v0.5.2
2 parents ad7df78 + f8bcdc9 commit 7258bd8

21 files changed

+967
-150
lines changed

AUTHORS.md

Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,10 @@
11
# Authors
22

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

5-
- mean00 ([mean00](https://github.com/mean00))
6-
- Ariel ([aog2000a](https://github.com/aog2000a))
7-
- Konstantin Gredeskoul ([kigster](https://github.com/kigster))
8-
- Juan José Herrero Barbosa ([Souler](https://github.com/Souler))
9-
- Bei Chen Liu ([Baycken](https://github.com/Baycken))
10-
- Marc Plano-Lesay ([Kernald](https://github.com/Kernald))
11-
- James Goppert ([jgoppert](https://github.com/jgoppert))
12-
- Matt Tyler ([matt-tyler](https://github.com/matt-tyler))
13-
- Andrew Stromme ([astromme](https://github.com/astromme))
14-
- [johnyb](https://github.com/johnyb)
15-
- [arunh](https://github.com/arunh)
16-
- Sebastian Herp ([sebastianherp](https://github.com/sebastianherp))
17-
- Michael Daffin ([james147](https://github.com/james147))
18-
- Pavel Ilin ([PIlin](https://github.com/PIlin))
19-
- Igor Mikolic-Torreira ([igormiktor](https://github.com/igormiktor))
20-
- Claudio Henrique Fortes Felix ([chffelix](https://github.com/chffelix))
21-
- Alexandre Tuleu ([atuleu](https://github.com/atuleu))
22-
- [getSurreal](https://github.com/getSurreal)
23-
- Sebastian Zaffarano ([szaffarano](https://github.com/szaffarano))
24-
- [cheshirekow](https://github.com/cheshirekow)
25-
- Logan Engstrom ([meadowstream](https://github.com/meadowstream))
26-
- Francisco Ramírez ([franramirez688](https://github.com/franramirez688))
27-
- Brendan Shillingford ([bshillingford](https://github.com/bshillingford))
28-
- Mike Purvis ([mikepurvis](https://github.com/mikepurvis))
29-
- Steffen Hanikel ([hanikesn](https://github.com/hanikesn))
30-
- Mindaugas Vinkelis ([fraillt - Contributor)
31-
- noseglasses ([noseglasses - Contributor)
32-
- Tomasz Bogdal ([queezythegreat - Original author of arduino-cmake)
33-
- Jonas ([JonasProgrammer](https://github.com/JonasProgrammer) - Maintainer)
34-
- Timor Gruber ([MrPointer](https://github.com/MrPointer) - Maintainer)
5+
- Tomasz Bogdal ([queezythegreat - Original author of **Arduino-CMake**)
6+
- Timor Gruber ([MrPointer](https://github.com/MrPointer) - Author of **Arduino-CMake 3**, Current Maintainer)
7+
8+
There are many other authors who have contributed to the various forks and versions, work which couldn't be done without them.
9+
10+
To all of you - Thank you very much!

CHANGELOG.md

Lines changed: 136 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,144 @@
11
# Change Log
22

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

5-
### Bug fixes
5+
This version adds case-insensitive support for examples, forgotten in the last version.
6+
It also fixes a bug in Core-Lib target creation on Debian/Ubuntu systems.
67

7-
* 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.
8+
### New Features
89

9-
# Version 2.0.0 (Dec 13th 2017)
10+
* Example name parameter of the **Example API** functions is now case-insensitive
1011

11-
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>!
12+
### Changes
1213

13-
However, here are some of the most noticeable changes in this version:
14+
* Parameter order in the `add_arduino_library_example` function - `_board_id` becomes 2nd
15+
16+
### Bug Fixes
17+
18+
* Potential bug in Debian/Ubuntu systems when creating Core Library targets
19+
20+
## Version 0.5.1
21+
22+
This version fixes some "invisible" bugs from previous versions, along with general design improvements.
23+
Moreover, there are even some new minor features.
24+
25+
### New Features
26+
27+
* Library name parameter of the `find_arduino_library` function is now case-insensitive due to a new utility feature to convert strings to *PascalCase*
28+
29+
### Changes
30+
31+
* Refactored many modules previously under the `Other` directory to be each under its' relevant directory
32+
33+
### Bug Fixes
34+
35+
* Sketch conversion was only partially avoided - Now the functionality is optimized
36+
* Arduino libraries couldn't be linked to the target when resolving a sketch's headers
37+
* Regex search patterns
38+
39+
## Version 0.5
40+
41+
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.
42+
43+
### New Features
44+
45+
- Headers included in a sketch file are now resolved to provide better insight
46+
- Arduino/Platform libraries that are resolved from a sketch's headers are linked to the target
47+
- 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).
48+
By default it's set to **OFF**.
49+
50+
### Changes
51+
52+
* New Sketch API which resembles CMake's target API - Use `target_sketches` as you would use `target_sources`
53+
* Various inline search patterns and defaults have been moved to the 'DefaultsManager' module
54+
55+
## Version 0.4.1
56+
57+
This version adds minor feature improvements as well as complete sketch support.
58+
59+
### New Features
60+
61+
* Full sketch support in the API
62+
* Sketch targets can be created by calling the `add_sketch_target` function
63+
* Ability to provide a custom main platform header by setting the `USE_CUSTOM_PLATFORM_HEADER` option on
64+
65+
## Version 0.4
66+
67+
This version mostly added support for examples and sketches.
68+
69+
### New Features
70+
71+
* Arduino examples such as **Blink** can now be used by calling the `add_arduino_example` function
72+
* Arduino library examples, each being part of an Arduino library, can also be used by calling the `add_arduino_library_example` function
73+
* Arduino Sketches can be converted into source files under the project's source directory.
74+
The API to use them seamlessly as using examples is still missing, however.
75+
* During platform initialization the main header of the platform gets selected.
76+
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.
77+
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.
78+
79+
### Changes
80+
81+
* The API of the utility function `list_replace` now resembles CMake's List API.
82+
It's also a macro now instead of a function.
83+
* Improved logic and performance of utility `increment` and `decrement` math functions
84+
85+
## Version 0.3.1
86+
87+
This version includes a **critical** bug fix.
88+
89+
### Bug Fixes
90+
91+
* 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
92+
93+
## Version 0.3
94+
95+
This version added support for Arduino libraries and platform libraries.
96+
97+
### New Features
98+
99+
* Arduino libraries can be found by calling `find_arduino_library` and then linked to another target by calling `link_arduino_library`
100+
* The library search process is architecture-aware, meaning that only sources that match the platform's architecture will be included in the library target
101+
* Arduino platform libraries can be simply linked to another target by calling `link_platform_library`.
102+
There's no special search process for platform libraries as there is for Arduino libraries.
103+
104+
## Version 0.2
105+
106+
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.
107+
This library is also the missing piece for getting correct program sizes, which hasn't been the case up until now.
108+
109+
### New Features
110+
111+
* The Core Library is added once per board (As a board has a single associated core) and linked against every created target.
112+
This behavior is internal and not up to the control of the user, much like a Kernel.
113+
114+
### Changes
115+
116+
* The entire codebase has been "cleaned", code-wise. It includes:
117+
* Separation of Concerns - Everything has its' own function, preferably also a module (CMake file)
118+
* Better control flow
119+
* Better use of "Modern CMake" recommendations
120+
121+
## Version 0.1.1
122+
123+
This version added support for displaying a program's size upon build completion.
124+
125+
### New Features
126+
127+
* Program size output for every executable target at the end of each successful build.
128+
This is done using Arduino's **avr-size** tool.
129+
The tool's output is then reformatted to match the format of Arduino IDE.
130+
131+
## Version 0.1
132+
133+
This is the bare metal version of the framework, adding support for the very basic stuff.
134+
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.
135+
136+
### Features
137+
138+
* Creating Arduino "executables" (Hex files that can be burned/uploaded/flashed to the hardware board) by calling `add_arduino_executable`
139+
* 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
140+
* Analyzing the SDK by parsing all required information from files such as `platform.txt` and `boards.txt`
141+
* 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
142+
143+
Many more subtle and internal features have been implemented, but they won't be listed here.
14144

15-
* Code has been completely refactored:
16-
* Previously the project has consisted from generally 2 files:
17-
1. `ArduinoToolchain.cmake`
18-
2. `Platform/Arduino.cmake`
19-
* 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.
20-
* A script-driven approach has been taken, allowing developers to substitute a functionality simply by referencing a different CMake script file.
21-
* Arduino SDK version 1.5 and higher is supported:
22-
* Several changes were introduced in the SDK itself causing the previous version to fail building.
23-
* Custom hardware platforms and architectures can be defined:
24-
* Though it has already existed in the previous version, this feature was in a form of a function.
25-
Now it's a script that can either be replaced or use customized parameters.
26-
* Ability to define architecture is new.
27-
* Example generation:
28-
* Users can generate firmware using one of Arduino's built-in examples, such as the classic **Blink**.
29-
* 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.

0 commit comments

Comments
 (0)