summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorstijn <stinos@zoho.com>2014-05-03 11:28:29 +0200
committerstijn <stinos@zoho.com>2014-05-03 20:15:15 +0200
commit72521a1c176506c044169038b68b83e5329a3dda (patch)
tree865f701b5e1a12485e9953e6b6e2ce6ee7082386
parent6ec835dfef90a2f940a24b126cba8e3d8ede1ef2 (diff)
downloadmicropython-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.c5
-rw-r--r--windows/Makefile1
-rw-r--r--windows/init.c5
-rw-r--r--windows/init.h1
-rw-r--r--windows/mpconfigport.h2
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"