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