Paul Bakker | 6d72f33 | 2013-06-28 10:25:03 +0200 | [diff] [blame] | 1 | =================== |
| 2 | README for PolarSSL |
| 3 | =================== |
| 4 | |
| 5 | Compiling |
| 6 | ========= |
| 7 | |
| 8 | There are currently three active build systems within the PolarSSL releases: |
| 9 | |
| 10 | - Make |
| 11 | - CMake |
Paul Bakker | 5c7bc9c | 2014-05-02 13:11:59 +0200 | [diff] [blame] | 12 | - Microsoft Visual Studio (Visual Studio 6 and Visual Studio 2010) |
Paul Bakker | 6d72f33 | 2013-06-28 10:25:03 +0200 | [diff] [blame] | 13 | |
| 14 | The main system used for development is CMake. That system is always the most up-to-date. The others should reflect all changes present in the CMake build system, but some features are not ported there by default. |
| 15 | |
| 16 | Make |
| 17 | ---- |
| 18 | |
| 19 | We intentionally only use the absolute minimum of **Make** functionality, as we have discovered that a lot of **Make** features are not supported on all different implementations of Make on different platforms. As such, the Makefiles sometimes require some handwork or `export` statements in order to work for your platform. |
| 20 | |
Paul Bakker | 5c7bc9c | 2014-05-02 13:11:59 +0200 | [diff] [blame] | 21 | In order to build the source using Make, just enter at the command line:: |
Paul Bakker | 6d72f33 | 2013-06-28 10:25:03 +0200 | [diff] [blame] | 22 | |
| 23 | make |
| 24 | |
Paul Bakker | 5c7bc9c | 2014-05-02 13:11:59 +0200 | [diff] [blame] | 25 | In order to run the tests, enter:: |
Paul Bakker | 6d72f33 | 2013-06-28 10:25:03 +0200 | [diff] [blame] | 26 | |
| 27 | make check |
| 28 | |
| 29 | Depending on your platform, you might run into some issues. Please check the Makefiles in *library/*, *programs/* and *tests/* for options to manually add or remove for specific platforms. You can also check `the PolarSSL Knowledge Base <https://polarssl.org/kb>`_ for articles on your platform or issue. |
| 30 | |
| 31 | In case you find that you need to do something else as well, please let us know what, so we can add it to the KB. |
| 32 | |
| 33 | CMake |
| 34 | ----- |
| 35 | |
Paul Bakker | 5c7bc9c | 2014-05-02 13:11:59 +0200 | [diff] [blame] | 36 | In order to build the source using CMake, just enter at the command line:: |
Paul Bakker | 6d72f33 | 2013-06-28 10:25:03 +0200 | [diff] [blame] | 37 | |
| 38 | cmake . |
| 39 | |
| 40 | make |
| 41 | |
Manuel Pégourié-Gonnard | e306fe0 | 2014-06-25 12:42:46 +0200 | [diff] [blame] | 42 | There are 5 different active build modes specified within the CMake buildsystem: |
Paul Bakker | 6d72f33 | 2013-06-28 10:25:03 +0200 | [diff] [blame] | 43 | |
| 44 | - Release. |
| 45 | This generates the default code without any unnecessary information in the binary files. |
| 46 | - Debug. |
| 47 | This generates debug information and disables optimization of the code. |
| 48 | - Coverage. |
| 49 | This generates code coverage information in addition to debug information. |
Manuel Pégourié-Gonnard | e306fe0 | 2014-06-25 12:42:46 +0200 | [diff] [blame] | 50 | - ASan. |
| 51 | This instruments the code with AddressSanitizer to check for memory errors. |
| 52 | - Check. |
| 53 | This activates more compiler warnings and treats them as errors. |
Paul Bakker | 6d72f33 | 2013-06-28 10:25:03 +0200 | [diff] [blame] | 54 | |
| 55 | Switching build modes in CMake is simple. For debug mode, enter at the command line: |
| 56 | |
| 57 | cmake -D CMAKE_BUILD_TYPE:String="Debug" . |
| 58 | |
Paul Bakker | 5c7bc9c | 2014-05-02 13:11:59 +0200 | [diff] [blame] | 59 | In order to run the tests, enter:: |
Paul Bakker | 6d72f33 | 2013-06-28 10:25:03 +0200 | [diff] [blame] | 60 | |
| 61 | make test |
| 62 | |
| 63 | Microsoft Visual Studio |
| 64 | ----------------------- |
| 65 | |
Paul Bakker | 5c7bc9c | 2014-05-02 13:11:59 +0200 | [diff] [blame] | 66 | The build files for Microsoft Visual Studio are generated for Visual Studio 6.0 and Visual Studio 2010. |
Paul Bakker | 6d72f33 | 2013-06-28 10:25:03 +0200 | [diff] [blame] | 67 | |
| 68 | The workspace 'polarssl.dsw' contains all the basic projects needed to build the library and all the programs. The files in tests are not generated and compiled, as these need a perl environment as well. |
| 69 | |
| 70 | Example programs |
| 71 | ================ |
| 72 | |
| 73 | We've included example programs for a lot of different features and uses in *programs/*. Most programs only focus on a single feature or usage scenario, so keep that in mind when copying parts of the code. |
| 74 | |
| 75 | Tests |
| 76 | ===== |
| 77 | |
Paul Bakker | 5c7bc9c | 2014-05-02 13:11:59 +0200 | [diff] [blame] | 78 | PolarSSL includes an elaborate test suite in *tests/* that initially requires Perl to generate the tests files (e.g. *test_suite_mpi.c*). These files are generates from a **function file** (e.g. *suites/test_suite_mpi.function*) and a **data file** (e.g. *suites/test_suite_mpi.data*). The **function file** contains the template for each test function. The **data file** contains the test cases, specified as parameters that should be pushed into a template function. |
| 79 | |
| 80 | Configurations |
| 81 | ============== |
| 82 | |
| 83 | We provide some non-standard configurations focused on specific use cases in the configs/ directory. You can read more about those in configs/README.txt |
Paul Bakker | 6d72f33 | 2013-06-28 10:25:03 +0200 | [diff] [blame] | 84 | |
| 85 | Contributing |
| 86 | ============ |
| 87 | |
Paul Bakker | 5c7bc9c | 2014-05-02 13:11:59 +0200 | [diff] [blame] | 88 | We graciously accept bugs and contributions from the community. There are some requirements we need to fulfil in order to be able to integrate contributions in the main code. |
| 89 | |
| 90 | Simple bug fixes to existing code do not contain copyright themselves and we can integrate those without any issue. The same goes for trivial contributions. |
| 91 | |
| 92 | For larger contributions, e.g. a new feature, the code possible falls under copyright law. We then need your consent to share in the ownership of the copyright. We have a form for that, which we will mail to you in case you submit a contribution or pull request that we deem this necessary for. |
| 93 | |
| 94 | Process |
| 95 | ------- |
Paul Bakker | 6d72f33 | 2013-06-28 10:25:03 +0200 | [diff] [blame] | 96 | #. `Check for open issues <https://github.com/polarssl/polarssl/issues>`_ or |
| 97 | `start a discussion <https://polarssl.org/discussions>`_ around a feature |
| 98 | idea or a bug. |
| 99 | #. Fork the `PolarSSL repository on Github <https://github.com/polarssl/polarssl>`_ |
| 100 | to start making your changes. |
| 101 | #. Write a test which shows that the bug was fixed or that the feature works |
| 102 | as expected. |
| 103 | #. Send a pull request and bug us until it gets merged and published. We will |
| 104 | include your name in the ChangeLog :) |