Stefan Krah | 1919b7e | 2012-03-21 18:25:23 +0100 | [diff] [blame] | 1 | |
| 2 | |
| 3 | About |
| 4 | ===== |
| 5 | |
| 6 | _decimal.c is a wrapper for the libmpdec library. libmpdec is a fast C |
| 7 | library for correctly-rounded arbitrary precision decimal floating point |
| 8 | arithmetic. It is a complete implementation of Mike Cowlishaw/IBM's |
| 9 | General Decimal Arithmetic Specification. |
| 10 | |
| 11 | |
| 12 | Build process for the module |
| 13 | ============================ |
| 14 | |
| 15 | As usual, the build process for _decimal.so is driven by setup.py in the top |
| 16 | level directory. setup.py autodetects the following build configurations: |
| 17 | |
| 18 | 1) x64 - 64-bit Python, x86_64 processor (AMD, Intel) |
| 19 | |
| 20 | 2) uint128 - 64-bit Python, compiler provides __uint128_t (gcc) |
| 21 | |
| 22 | 3) ansi64 - 64-bit Python, ANSI C |
| 23 | |
| 24 | 4) ppro - 32-bit Python, x86 CPU, PentiumPro or later |
| 25 | |
| 26 | 5) ansi32 - 32-bit Python, ANSI C |
| 27 | |
| 28 | 6) ansi-legacy - 32-bit Python, compiler without uint64_t |
| 29 | |
| 30 | 7) universal - Mac OS only (multi-arch) |
| 31 | |
| 32 | |
| 33 | It is possible to override autodetection by exporting: |
| 34 | |
| 35 | PYTHON_DECIMAL_WITH_MACHINE=value, where value is one of the above options. |
| 36 | |
| 37 | |
| 38 | NOTE |
| 39 | ==== |
Stefan Krah | 752bfb7 | 2013-01-16 15:16:10 +0100 | [diff] [blame] | 40 | |
Stefan Krah | 1919b7e | 2012-03-21 18:25:23 +0100 | [diff] [blame] | 41 | decimal.so is not built from a static libmpdec.a since doing so led to |
| 42 | failures on AIX (user report) and Windows (mixing static and dynamic CRTs |
| 43 | causes locale problems and more). |
| 44 | |
| 45 | |
| 46 | |