You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.5 KiB
112 lines
3.5 KiB
8 years ago
|
# libwally-core
|
||
|
|
||
|
Wally is a collection of useful primitives for cryptocurrency wallets.
|
||
|
|
||
|
Note that the library is currently pre-release and so the API may change
|
||
|
without notice.
|
||
|
|
||
|
Please report bugs and submit patches to https://github.com/jgriffiths/libwally-core.
|
||
|
|
||
|
[![Build Status](https://travis-ci.org/jgriffiths/libwally-core.svg?branch=master)](https://travis-ci.org/jgriffiths/libwally-core)
|
||
|
|
||
|
## Platforms
|
||
|
|
||
|
Wally currently builds on all linux and OSX platforms as well as all supported
|
||
|
Android NDK targets. Bindings for Python and Java are included.
|
||
|
|
||
|
Windows support and further language bindings such as JavaScript are planned.
|
||
|
|
||
|
## Building
|
||
|
|
||
|
```
|
||
|
$ ./tools/autogen.sh
|
||
|
$ ./configure <options - see below>
|
||
|
$ make
|
||
|
$ make check
|
||
|
```
|
||
|
|
||
|
### configure options
|
||
|
|
||
|
- `--enable-debug`. Enables debugging information and disables compiler
|
||
|
optimisations (default: no).
|
||
|
- `--enable-export-all`. Export all functions from the wally shared library.
|
||
|
Ordinarily only API functions are exported. (default: no). Enable this
|
||
|
if you want to test the internal functions of the library or are planning
|
||
|
to submit patches.
|
||
|
- `--enable-swig-python`. Enable the [SWIG](http://www.swig.org/) Python
|
||
|
interface. The resulting shared library can be imported from Python using
|
||
|
the generated interface file `src/swig_python/wallycore/wallycore.py`. (default: no).
|
||
|
- `--enable-swig-java`. Enable the [SWIG](http://www.swig.org/) Java (JNI)
|
||
|
interface. After building, see `src/swig_java/src/com/blockstream/libwally/Wally.java`
|
||
|
for the Java interface definition (default: no).
|
||
|
- `--enable-coverage`. Enables code coverage (default: no) Note that you will
|
||
|
need [lcov](http://ltp.sourceforge.net/coverage/lcov.php) installed to
|
||
|
build with this option enabled and generate coverage reports.
|
||
|
|
||
|
NOTE: If you wish to run the Python tests you currently need to pass
|
||
|
the `--enable-swig-python` option. This requirement will be removed
|
||
|
in a future version.
|
||
|
|
||
|
### Recommended development configure options
|
||
|
|
||
|
```
|
||
|
$ ./configure --enable-debug --enable-export-all --enable-swig-python --enable-coverage
|
||
|
```
|
||
|
|
||
|
### Python
|
||
|
|
||
|
For python development, you can build and install wally using:
|
||
|
|
||
|
```
|
||
|
$ python setup.py install
|
||
|
```
|
||
|
|
||
|
It is suggested you only install this way into a virtualenv while the library
|
||
|
is under heavy development.
|
||
|
|
||
|
## Cleaning
|
||
|
|
||
|
```
|
||
|
$ ./tools/cleanup.sh
|
||
|
```
|
||
|
|
||
|
## Submitting patches
|
||
|
|
||
|
Please use pull requests on github to submit. Before producing your patch you
|
||
|
should format your changes using [uncrustify](https://github.com/uncrustify/uncrustify.git)
|
||
|
version 0.60 or later. The script `./tools/uncrustify` will reformat all C
|
||
|
sources in the library as needed, with the currently chosen uncrustify options.
|
||
|
|
||
|
The version of uncrustify in Debian is unfortunately out of date and buggy. If
|
||
|
you are using Debian this means you will need to download and build uncrustify
|
||
|
from source using something like:
|
||
|
|
||
|
```
|
||
|
$ git clone --depth 1 https://github.com/uncrustify/uncrustify.git
|
||
|
$ cd uncrustify
|
||
|
$ ./autogen.sh
|
||
|
$ ./configure
|
||
|
$ make
|
||
|
$ sudo make install
|
||
|
```
|
||
|
|
||
|
You should also make sure the existing tests pass and if possible write tests
|
||
|
covering any new functionality, following the existing style.
|
||
|
|
||
|
## Generating a coverage report
|
||
|
|
||
|
To generate an HTML coverage report, use:
|
||
|
|
||
|
```
|
||
|
$ ./tools/cleanup.sh
|
||
|
$ ./tools/autogen.sh
|
||
|
$ ./configure --enable-debug --enable-export-all --enable-swig-python --enable-swig-java --enable-coverage
|
||
|
$ make
|
||
|
$ ./tools/coverage.sh clean
|
||
|
$ make check
|
||
|
$ ./tools/coverage.sh
|
||
|
```
|
||
|
|
||
|
The coverage report can then be viewed at `src/lcov/index.html`. Patches to
|
||
|
increase the test coverage are welcome.
|