42 lines
1.5 KiB
Plaintext
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
|
|
|