Separate out mpy core and unix version.
diff --git a/py/runtime.c b/py/runtime.c
index 9585075..ae24646 100644
--- a/py/runtime.c
+++ b/py/runtime.c
@@ -5,7 +5,7 @@
 #include <assert.h>
 
 #include "misc.h"
-#include "machine.h"
+#include "mpyconfig.h"
 #include "runtime.h"
 #include "bc.h"
 
@@ -19,9 +19,6 @@
 #define DEBUG_OP_printf(args...) (void)0
 #endif
 
-// enable/disable float support with this definition
-#define PY_FLOAT (1)
-
 typedef machine_int_t py_small_int_t;
 
 #define IS_O(o, k) (((((py_small_int_t)(o)) & 1) == 0) && (((py_obj_base_t*)(o))->kind == (k)))
@@ -29,14 +26,14 @@
 #define FROM_SMALL_INT(o) (((py_small_int_t)(o)) >> 1)
 #define TO_SMALL_INT(o) ((py_obj_t)(((o) << 1) | 1))
 
-#ifdef PY_FLOAT
+#ifdef MICROPY_ENABLE_FLOAT
 typedef machine_float_t float_t;
 #endif
 
 typedef enum {
     O_CONST,
     O_STR,
-#ifdef PY_FLOAT
+#ifdef MICROPY_ENABLE_FLOAT
     O_FLOAT,
 #endif
     O_FUN_0,
@@ -77,7 +74,7 @@
     union {
         const char *id;
         qstr u_str;
-#ifdef PY_FLOAT
+#ifdef MICROPY_ENABLE_FLOAT
         float_t u_flt;
 #endif
         struct { // for O_FUN_[012N]
@@ -260,7 +257,7 @@
     return (py_obj_t)o;
 }
 
-#ifdef PY_FLOAT
+#ifdef MICROPY_ENABLE_FLOAT
 py_obj_t py_obj_new_float(float_t val) {
     py_obj_base_t *o = m_new(py_obj_base_t, 1);
     o->kind = O_FLOAT;
@@ -514,7 +511,7 @@
                 }
             case O_STR:
                 return "str";
-#ifdef PY_FLOAT
+#ifdef MICROPY_ENABLE_FLOAT
             case O_FLOAT:
                 return "float";
 #endif
@@ -557,7 +554,7 @@
                 // TODO need to escape chars etc
                 printf("'%s'", qstr_str(o->u_str));
                 break;
-#ifdef PY_FLOAT
+#ifdef MICROPY_ENABLE_FLOAT
             case O_FLOAT:
                 printf("%f", o->u_flt);
                 break;
@@ -719,7 +716,7 @@
             case RT_BINARY_OP_SUBTRACT: val = FROM_SMALL_INT(lhs) - FROM_SMALL_INT(rhs); break;
             case RT_BINARY_OP_MULTIPLY: val = FROM_SMALL_INT(lhs) * FROM_SMALL_INT(rhs); break;
             case RT_BINARY_OP_FLOOR_DIVIDE: val = FROM_SMALL_INT(lhs) / FROM_SMALL_INT(rhs); break;
-#ifdef PY_FLOAT
+#ifdef MICROPY_ENABLE_FLOAT
             case RT_BINARY_OP_TRUE_DIVIDE: return py_obj_new_float((float_t)FROM_SMALL_INT(lhs) / (float_t)FROM_SMALL_INT(rhs));
 #endif
             default: printf("%d\n", op); assert(0); val = 0;
@@ -864,9 +861,11 @@
                 // pointer to the string (it's probably constant though!)
                 return (machine_uint_t)qstr_str(o->u_str);
 
+#ifdef MICROPY_ENABLE_FLOAT
             case O_FLOAT:
                 // convert float to int (could also pass in float registers)
                 return (machine_int_t)o->u_flt;
+#endif
 
             case O_LIST:
                 // pointer to start of list (could pass length, but then could use len(x) for that)