From 99b4719357f52cdc945db3ca7213b21d43297170 Mon Sep 17 00:00:00 2001 From: Damien George Date: Mon, 16 May 2016 23:13:30 +0100 Subject: [PATCH] tools/mpy-tool.py: Add checks for critical configuration vars. When an mpy file is frozen it must know the values of certain configuration variables. This patch provides an explicit check in the generated C file that the configuration variables are what they are supposed to be. --- tools/mpy-tool.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tools/mpy-tool.py b/tools/mpy-tool.py index 74106f192a..a1cc1f0e06 100755 --- a/tools/mpy-tool.py +++ b/tools/mpy-tool.py @@ -450,6 +450,23 @@ def freeze_mpy(qcfgs, base_qstrs, raw_codes): print('#include "py/emitglue.h"') print() + print('#if MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE') + print('#error "MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE not supported with frozen mpy files"') + print('#endif') + print() + + print('#if MICROPY_LONGINT_IMPL != %u' % config.MICROPY_LONGINT_IMPL) + print('#error "incompatible MICROPY_LONGINT_IMPL"') + print('#endif') + print() + + if config.MICROPY_LONGINT_IMPL == config.MICROPY_LONGINT_IMPL_MPZ: + print('#if MPZ_DIG_SIZE != %u' % config.MPZ_DIG_SIZE) + print('#error "incompatible MPZ_DIG_SIZE"') + print('#endif') + print() + + print('#if MICROPY_PY_BUILTINS_FLOAT') print('typedef struct _mp_obj_float_t {') print(' mp_obj_base_t base;')