Files
pybindgen/HACKING
T
Gustavo J. A. M. Carneiro 686d3ae930 WAF related clarifications
2008-12-31 15:15:42 +00:00

42 lines
1.5 KiB
Plaintext

== Needed tools ==
bzr branches do not come with WAF.
PyBindGen uses a unofficial branch of WAF trunk that can be obtained
via bazaar from launchpad:
$ bzr clone lp:~gjc/waf/cmd waf-cmd
For more information about this branch, see https://code.launchpad.net/~gjc/waf/cmd#whiteboard
You should then either install this waf version (it is 100% compatible
with waf 1.5) or just run waf-light from the checkout dir. For
example:
[~/projects/pybindgen/new-waf]$ ../../waf-cmd/waf-light configure
etc..
You also need to install python, with development headers, and a C++ compiler.
== Project style / goals / development guidelines ==
Code style rules:
* Should generate clean C or C++ code
- Near what a human programmer would write;
* Do not depend on C++ language features except when wrapping C++ APIs
- It should be possible to generate pure C modules for wrapping pure C libraries;
* No C++ templates allowed (except if wrapping them)
* Macros should be used rarely, and should be small if used at all
- Shift the complexity into Python side, keep the C/C++ simple (even if large);
* Generated code should not require any external library
- Whenever possible, do not create functions, expand the needed code from the Python code generator instead;
== Submitting patches ==
1. First, make sure all unit tests pass: waf clean && waf check
2. Report the feature/bug in launchpad: https://bugs.launchpad.net/pybindgen/+filebug
3. Attach a patch or branch to the bug report