You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Apr 17, 2023. It is now read-only.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+5-6Lines changed: 5 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -44,8 +44,8 @@ It mostly addressed *3rd Party Libraries*.
44
44
45
45
Besides, the following sub-directories are searched under every path mentioned above:
46
46
47
-
-**libraries**
48
-
-**dependencies**
47
+
***libraries**
48
+
***dependencies**
49
49
50
50
* 3rd Party Arduino Libraries do not longer have to include the **library.properties** file in their root directory - Their root directory is searched instead.
51
51
Nevertheless including the file is still ***recommended***, because when the file isn't present, the framework can't infer potentially required metadata from it.
@@ -96,9 +96,9 @@ This version refactored the Sketch API entirely to enhance support for missing f
96
96
97
97
### New Features
98
98
99
-
- Headers included in a sketch file are now resolved to provide better insight
100
-
- Arduino/Platform libraries that are resolved from a sketch's headers are linked to the target
101
-
- 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).
99
+
* Headers included in a sketch file are now resolved to provide better insight
100
+
* Arduino/Platform libraries that are resolved from a sketch's headers are linked to the target
101
+
* 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).
102
102
By default it's set to **OFF**.
103
103
104
104
### Changes
@@ -195,4 +195,3 @@ Although basic, there's a lot that had to be done in order to reach a somewhat "
195
195
* 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
196
196
197
197
Many more subtle and internal features have been implemented, but they won't be listed here.
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+38-27Lines changed: 38 additions & 27 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,25 +2,30 @@
2
2
3
3
## Short Brief ##
4
4
5
-
### What is this file? ###
5
+
### What is this file ###
6
+
6
7
It is a set of guidance rules for developers who'd like to contribute to this repo.
7
8
Versions go forward, new features are added, the API can change, but sometimes - Documentation doesn't keep the pace, unfortunately.
8
9
To address those issues and allow developers to contribute good, quality code - This file must exist and always be up to date.
9
10
10
11
### Dear Contributors ###
12
+
11
13
First of all, thank you for taking your time even considering contributing to this repo.
12
14
It is extremely important to us that you, ordinary users or continuous collaborators, contribute to this project in a combined effort to make it greater, stable than ever before.
13
15
14
16
## Submitting Issues ##
17
+
15
18
New features and bug reports keep the project moving forward and getting better.
16
19
This is partly your duty, the user, to request those features and report the bugs.
17
20
18
21
### Before you submit an issue ###
22
+
19
23
* Please make sure your'e using the latest version of **Arduino CMake**.
20
24
Generally it's the [latest release](https://github.com/arduino-cmake/Arduino-CMake-NG/releases), unless said otherwise by any of the maintainers.
21
25
* Go over the existing issue list (including closed ones) to make sure your issue hasn't already been reported or fixed.
22
26
23
-
### Submitting a good issue ###
27
+
### Submitting a good issue ###
28
+
24
29
Issues can be submitted with a very short description, but that would make the life of the developers addressing it very hard, leading to unresolved issues due to lack of information.
25
30
26
31
Here is a set of rules you should apply to **every** issue you submit:
@@ -30,11 +35,11 @@ Here is a set of rules you should apply to **every** issue you submit:
30
35
* If the issue regards a special behavior, maybe related to a specific board - Please tell us all you know about it and put some links to external sources if those exist
31
36
* Use Markdown formatting as appropriate to make the issue and code more readable
32
37
33
-
#### Issue Signature
38
+
#### Issue Signature ####
34
39
35
40
At last, you should sign your issue with a special signature, following the next format:
36
41
37
-
```
42
+
```None
38
43
OS: [Windows|OSx/MacOS|Linux]
39
44
Distribution (Linux Only): [Fedora|Debian|Ubuntu|CentOS] etc.
* SDK versions usually have the form of [major].[minor].[patch], such as 1.8.5.
49
54
* OS Distribution should be mentioned only for Linux-based OSs
50
55
51
-
## Code Contribution
56
+
## Code Contribution ##
57
+
58
+
### Code Style ###
52
59
53
-
### Code Style
54
60
Like most projects, **Arduino-CMake** uses its own coding style which ensures that everybody can easily read and change files without the hassle of reading 3 different indentation styles paired 4 ways of brace spacing.
55
61
56
62
While we believe that the coding style you are using benefits you, please try and stick to the project's accepted style as close as possible.
@@ -59,24 +65,26 @@ It will take care of the some of the greatest hassles like indentation, new line
59
65
As for spacing, naming conventions, etc. - Please look at existing code to get an idea of the style.
60
66
If you use an Jetbrains `IDEA` based IDE (for example `CLion`), chances are that the auto formatting functionality will take care of things due to the project's `codeStyleSettings.xml` residing in the repository.
61
67
62
-
### Versioning
63
-
This project follows the [semantic versioning](http://semver.org/spec/v2.0.0.html).
68
+
### Versioning ###
69
+
70
+
This project follows the [semantic versioning](http://semver.org/spec/v2.0.0.html).
64
71
It also allows easy integration with our [Workflow Model](#Project Workflow), which is described next.
65
72
66
-
### Project Workflow
73
+
### Project Workflow ###
67
74
68
75
Up to version *0.6*, included, this project followed Git's [Classic Workflow Model](http://nvie.com/posts/a-successful-git-branching-model), allowing developers to work on multiple features simultaneously without clashing. This model is a bit different than suggested by **GitHub**, intended mostly for offline Git repositories.
69
76
For this reason the project has adapted the model to GitHub's model from version *0.6.x* and above.
70
77
71
78
The elements of the adapted model are thoroughly described in the following sections.
72
79
73
-
#### Bug Fixes
80
+
#### Bug Fixes ####
81
+
74
82
Bug fixes can be found in the *stable release* or in a *developed feature*.
75
83
The way we treat them is different, described in the next sections.
76
84
77
85
**Note:** Before claiming to find a bug, make sure you are on the latest commit of that branch.
78
86
79
-
##### Release Bugs/Critical Bugs
87
+
##### Release Bugs/Critical Bugs #####
80
88
81
89
Those are the ones with the highest priority to fix. If you encounter such a bug you should immediately submit a new issue. Before you submit, please see [Submitting Issues](#Submitting-Issues).
82
90
If you'd like to fix the bug yourself, please **state that** in the issue.
@@ -89,73 +97,76 @@ A better name would be `hotfix/platform-libraries-reloading`.
89
97
According to our [Workflow model](#Project-Workflow), once the hotfix is finished one should:
90
98
91
99
1. Add a tag to the *merge-commit* named after the patched version.
92
-
e.g If the current stable version is v2.1.0, the hotfix should make it v2.1.1 (Bump the patch number).
100
+
e.g If the current stable version is v2.1.0, the hotfix should make it v2.1.1 (Bump the patch number).
93
101
2. Pull-Request directly to **master**
94
102
95
103
The [Classic Workflow Model](http://nvie.com/posts/a-successful-git-branching-model) lists that a hotfix should be *merged* to both **master** and **develop**, however, GitHub doesn't play nicely with this exact model and basically allows only one of the branches to exist in such a workflow that respects *Pull-Requests* (Instead of *merges*) on one side, and the Workflow model on another.
96
104
97
-
**Note to Maintainers/Collaborators:**
105
+
**Note to Maintainers/Collaborators:**
98
106
If an active **release** branch exists when the hotfix is integrated, meaning there's an on-going release, the hotfix should be also be *merged* to the **release** branch, optionally from the **master** branch if a *merge* from the hotfix branch isn't possible.
99
107
100
-
##### Development Bugs
108
+
##### Development Bugs #####
101
109
102
110
These exist in **feature** branches or the **master** branch - Code that's planned for future releases and considered in development.
103
111
However, these still need to be reported by submitting relevant issues. You should also specify if your'e attempting to fix them.
104
112
105
113
Fixes to such bugs should be made on a separate branch, preferably in a forked version, named after the bug. Once finished, you should PR it to the appropriate **feature** branch or directly to the **master** branch - depending on where you found them.
106
114
If the **feature** branch has already been merged to **master**, you should simply PR directly to **master**.
107
115
108
-
#### New Features
116
+
#### New Features ####
117
+
109
118
To ensure your contribution makes it into the mainline codebase, always check the **master** branch for the next targeted release.
110
-
Make sure your contribution is on par with that branch, then PR directly into **master**.
119
+
Make sure your contribution is on par with that branch, then PR directly into **master**.
111
120
This strategy should be the right one for most users.
112
121
If you want to make further additions to a feature currently under development, you can also PR into the corresponding **feature** branch.
113
122
114
-
##### Feature Branch Naming
123
+
##### Feature Branch Naming #####
115
124
116
125
**Feature** branch names should be short and descriptive, each word separated by a single hyphen (`-`).
117
126
e.g A branch named `feature/blacklisting-libraries-to-avoid-automatic-inclusion-when-reloading-cmake` is a bad branch name because it's too long, even though it's very descriptive.
118
127
A better name would be `feature/library-blacklist` because it's short and generally descriptive.
119
128
120
129
Any further description would be written in commit messages or the final PR to the **master** branch.
121
130
122
-
#### Releases
131
+
#### Releases ####
123
132
124
133
When a handful of features is complete, the developed product is ready for release.
125
134
According to our [Workflow model](#Project-Workflow), every release should start with a branch named after the *about-to-be-released* version. e.g `release/2.0.0`.
126
135
127
136
There are some strict rules we apply to our releases:
128
137
129
-
* At any given moment there should be a <u>single release</u>**or**<u>no release at all</u>.
138
+
* At any given moment there should be a *single release***or***no release at all*.
130
139
We're not working Agile on this project, thus there's no need for multiple simultaneous releases.
131
140
* Once existing, any hotfix should be merged to the **release** branch as well as to the **master** branch (See [Release Bugs](#Release-Bugs/Critical-Bugs)).
132
-
* Any last-minute bug-fixes should be made directly on the **release** branch.
141
+
* Any last-minute bug-fixes should be made directly on the **release** branch.
133
142
They will be merged later to the **master** branch once the release is completed.
134
-
* New features developed after the release has been started are intended for the <u>**next**release</u> - They should be merged only to the **master** branch!
135
-
* Before completing the release:
143
+
* New features developed after the release has been started are intended for the _**next**release_ - They should be merged only to the **master** branch!
144
+
* Before completing the release:
136
145
* Documentation should be up-to-date (Currently maintained in GitHub Wiki)
137
146
***Changelog** file should be updated accordingly
138
147
***Authors** file should be updated accordingly
139
148
140
149
Once the release is complete it is merged to the **master** branch.
141
150
A tag with the final release version is also added to the *merge-commit* on **master**.
142
151
143
-
### Pull Requests
152
+
### Pull Requests ###
144
153
145
154
At GitHub we support merging by Pull-Requesting.
146
155
It helps us document code better, as well as discussing and reviewing a change before it gets into the mainline codebase.
147
156
148
-
Please make a Pull Request for every change you'd like to make, yes, <u>even if your'e an maintainer or a collaborator</u>.
157
+
Please make a Pull Request for every change you'd like to make, yes, *even if your'e an maintainer or a collaborator*.
149
158
150
159
Also note that we do have a strict rule about the branch your'e PRing from - Once it gets merged, it will be probably get deleted. This is done to avoid unnecessary cluttering of the project.
151
160
If you need to keep the branch for some reason, please state it in **bold** in the PR's description, so that the merging user will notice it.
152
161
153
-
### Breaking Changes
162
+
### Breaking Changes ###
163
+
154
164
Breaking changes require the release of a new major version according to [semantic versioning](#Versioning) rules.
155
165
If your'e making changes to the **public** interface (API) that are not backwards-compatible, make sure it is **absolutely** necessary.
156
166
157
-
### Changelog
167
+
### Changelog ###
168
+
158
169
All project changes, new features and bug fixes are documented in `CHANGELOG.md`.
159
-
<u>**Maintainers**</u> - For any contribution, please add a corresponding changelog entry.
170
+
**Maintainers** - For any contribution, please add a corresponding changelog entry.
160
171
Bump the patch version for bug fixes and the minor version for feature additions.
161
172
Don't **ever** bump the major version on your behalf - It should be done only by the maintainers of the project.
Copy file name to clipboardExpand all lines: README.md
+14-14Lines changed: 14 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,19 +12,19 @@ Wait - Hasn't it been possible all this time? Apparently not. You can read more
12
12
**Arduino-CMake** should<supid="fl1">[1](#f1)</sup> do almost<supid="fl2">[2](#f2)</sup> <u>anything</u> that the **Arduino IDE** does!
13
13
Here's a list of features **already supported** by **Arduino-CMake**:
14
14
15
-
- Creating Arduino "Executables"/Programs
16
-
- Uploading programs to hardware boards
17
-
- Adding/Finding and using Arduino Libraries
18
-
- 3rd Party libraries are fully supported
19
-
- User libraries which are not Arduino Libraries are also supported
20
-
- Using Arduino example programs
21
-
- Using Arduino library example programs
22
-
- Attaching Arduino sketches (`.ino` files) to programs
15
+
* Creating Arduino "Executables"/Programs
16
+
* Uploading programs to hardware boards
17
+
* Adding/Finding and using Arduino Libraries
18
+
* 3rd Party libraries are fully supported
19
+
* User libraries which are not Arduino Libraries are also supported
20
+
* Using Arduino example programs
21
+
* Using Arduino library example programs
22
+
* Attaching Arduino sketches (`.ino` files) to programs
23
23
24
24
Moreover, **Arduino-CMake** allows some things that **Arduino IDE***doesn't*:
25
25
26
-
- Developing Arduino programs in any IDE or text editor
27
-
- Completely customizing the build process per user's requirements
26
+
* Developing Arduino programs in any IDE or text editor
27
+
* Completely customizing the build process per user's requirements
28
28
29
29
What's **not** supported?
30
30
@@ -76,9 +76,9 @@ And yet, it still had its own problems, leading once again to an abandoned state
76
76
77
77
Then, in 2018, an extreme effort has been made and the project has been completely rewritten (mostly by [MrPointer](https://github.com/MrPointer)) with a few very clear goals in mind:
78
78
79
-
-**Platform-Independent** - The framework shouldn't assume it works only with the basic Arduino platform, as there are many others out there. Any platform that confront to the design of the basic Arduino SDK is appropriate for use. An example of such a platform is ESP32.
80
-
-**Modern CMake** - All previous projects/forks have been using the fairly old CMake 2.8. CMake itself has transitioned much from version 2 to 3, benefiting from a whole lot of new exciting features. Even the official package managers support CMake 3 versions, so there's no excuse to not use it.
81
-
-**Modern Arduino SDK** - The Arduino SDK, much like CMake, has also undergone several major changes during the years, especially with version 1.6. The Arduino SDK has only recently got stable, and that's why we recommend always having the latest version installed, although we do have some minimum requirements for the framework to even work. You can find them at the Requirements section.
79
+
***Platform-Independent** - The framework shouldn't assume it works only with the basic Arduino platform, as there are many others out there. Any platform that confront to the design of the basic Arduino SDK is appropriate for use. An example of such a platform is ESP32.
80
+
***Modern CMake** - All previous projects/forks have been using the fairly old CMake 2.8. CMake itself has transitioned much from version 2 to 3, benefiting from a whole lot of new exciting features. Even the official package managers support CMake 3 versions, so there's no excuse to not use it.
81
+
***Modern Arduino SDK** - The Arduino SDK, much like CMake, has also undergone several major changes during the years, especially with version 1.6. The Arduino SDK has only recently got stable, and that's why we recommend always having the latest version installed, although we do have some minimum requirements for the framework to even work. You can find them at the Requirements section.
82
82
83
83
### How it works
84
84
@@ -89,7 +89,7 @@ But what's really useful in CMake, at least regarding our Arduino world, is the
89
89
The Arduino SDK, which one usually downloads together with the Arduino IDE, is actually also a toolchain, as it includes the required compilation & linkage tools for cross-compiling.
90
90
Analyzing the SDK allows us to build a framework using this toolchain, and also all of Arduino's other cool features such as *libraries, examples*, etc.
91
91
92
-
### What is NG?
92
+
### What is NG
93
93
94
94
NG stands for "New Generation".
95
95
Inferred from the written above, it can easily be understood why the project has this name.
0 commit comments