| Contributing to the Meson build system |
| |
| There are two simple ways to submit your patches. The preferred way is |
| to send a github pull request. Small changes can also be sent as |
| patches as emails to the Meson mailing list. |
| |
| |
| Python Coding style |
| |
| Meson follows the basic Python coding style. Additional rules are the |
| following: |
| |
| - indent 4 spaces, no tabs ever |
| - indent meson.build files with two spaces |
| - try to keep the code as simple as possible |
| - contact the mailing list before embarking on large scale projects |
| to avoid wasted effort |
| - all new features must come with a test (or several if it is |
| a big feature) |
| |
| Meson uses Flake8 for style guide enforcement. The Flake8 options for |
| the project are contained in setup.cfg. |
| |
| To run Flake8 on your local clone of Meson: |
| |
| $ python3 -m pip install flake8 |
| $ cd meson |
| $ flake8 |
| |
| C/C++ coding style |
| |
| Meson has a bunch of test code in several languages. The rules for |
| those are simple. |
| |
| - indent 4 spaces, no tabs ever |
| - brace always on the same line as if/for/else/function definition |
| |
| |
| External dependencies |
| |
| The goal of Meson is to be as easily usable as possible. The user |
| experience should be "get Python3 and Ninja, run", even on |
| Windows. Unfortunately this means that we can't have dependencies on |
| projects outside of Python's standard library. This applies only to |
| core functionality, though. For additional helper programs etc the use |
| of external dependencies may be ok. If you feel that you are dealing |
| with this kind of case, please raise the issue on the mailing list |
| first. |
| |
| |
| What not to contribute? |
| |
| There are a few things that people seem to want to add to Meson but which |
| are not there by design and will not be added either. |
| |
| The first one is defining your own functions or a generalized for loop. |
| These are bad because they would make Meson's DSL Turing complete. The |
| second feature is a Make backend. |
| |
| The FAQ has specific information why these two features will not be |
| added to Meson: http://mesonbuild.com/FAQ.html |
| |
| Merge requests adding either of these two features will be automatically |
| rejected. Please save everyone's time (especially your own) and don't start |
| working on these features. |
| |
| |
| Do I need to sign a CLA? |
| |
| No. All contributions are welcome. |