diff options
author | stijn <stinos@zoho.com> | 2014-05-03 11:28:29 +0200 |
---|---|---|
committer | stijn <stinos@zoho.com> | 2014-05-03 20:15:15 +0200 |
commit | 72521a1c176506c044169038b68b83e5329a3dda (patch) | |
tree | 865f701b5e1a12485e9953e6b6e2ce6ee7082386 | |
parent | 6ec835dfef90a2f940a24b126cba8e3d8ede1ef2 (diff) | |
download | micropython-72521a1c176506c044169038b68b83e5329a3dda.tar.gz micropython-72521a1c176506c044169038b68b83e5329a3dda.zip |
mingw: Fix number of exponent digits in floating point formatting
By default mingw outputs 3 digits instead of the standard 2 so all float
tests using printf fail. Using setenv at the start of the program fixes this.
To accomodate calling platform specific initialization a
MICROPY_MAIN_INIT_FUNC macro is used which is called in mp_init()
-rw-r--r-- | py/runtime.c | 5 | ||||
-rw-r--r-- | windows/Makefile | 1 | ||||
-rw-r--r-- | windows/init.c | 5 | ||||
-rw-r--r-- | windows/init.h | 1 | ||||
-rw-r--r-- | windows/mpconfigport.h | 2 |
5 files changed, 14 insertions, 0 deletions
diff --git a/py/runtime.c b/py/runtime.c index 2928de8a72..ba78ec40f3 100644 --- a/py/runtime.c +++ b/py/runtime.c @@ -42,6 +42,11 @@ const mp_obj_module_t mp_module___main__ = { }; void mp_init(void) { + // call port specific initialization if any +#ifdef MICROPY_PORT_INIT_FUNC + MICROPY_PORT_INIT_FUNC; +#endif + mp_emit_glue_init(); // init global module stuff diff --git a/windows/Makefile b/windows/Makefile index 351aad6f1a..ce75a60985 100644 --- a/windows/Makefile +++ b/windows/Makefile @@ -31,6 +31,7 @@ SRC_C = \ unix/main.c \ unix/file.c \ realpath.c \ + init.c \ OBJ = $(PY_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o)) diff --git a/windows/init.c b/windows/init.c new file mode 100644 index 0000000000..78b8738f77 --- /dev/null +++ b/windows/init.c @@ -0,0 +1,5 @@ +#include <stdlib.h> + +void init() { + putenv("PRINTF_EXPONENT_DIGITS=2"); +} diff --git a/windows/init.h b/windows/init.h new file mode 100644 index 0000000000..d081a20527 --- /dev/null +++ b/windows/init.h @@ -0,0 +1 @@ +void init(); diff --git a/windows/mpconfigport.h b/windows/mpconfigport.h index d27c59cb31..94b3334007 100644 --- a/windows/mpconfigport.h +++ b/windows/mpconfigport.h @@ -15,6 +15,7 @@ #define MICROPY_MOD_SYS_STDFILES (1) #define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_DOUBLE) #define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_MPZ) +#define MICROPY_PORT_INIT_FUNC init() // type definitions for the specific machine @@ -38,3 +39,4 @@ extern const struct _mp_obj_fun_native_t mp_builtin_open_obj; { MP_OBJ_NEW_QSTR(MP_QSTR_open), (mp_obj_t)&mp_builtin_open_obj }, #include "realpath.h" +#include "init.h" |