Factor and simplify Makefile's and mpconfig.
diff --git a/py/mpconfig.h b/py/mpconfig.h
index 56495d9..8ce432a 100644
--- a/py/mpconfig.h
+++ b/py/mpconfig.h
@@ -4,8 +4,65 @@
 
 #include <mpconfigport.h>
 
-#ifndef INT_FMT
+// Any options not explicitly set in mpconfigport.h will get default
+// values below.
+
+/*****************************************************************************/
+/* Micro Python emitters                                                     */
+
+// Whether to emit CPython byte codes (for debugging/testing)
+// Enabling this overrides all other emitters
+#ifndef MICROPY_EMIT_CPYTHON
+#define MICROPY_EMIT_CPYTHON (0)
+#endif
+
+// Whether to emit x64 native code
+#ifndef MICROPY_EMIT_X64
+#define MICROPY_EMIT_X64 (0)
+#endif
+
+// Whether to emit thumb native code
+#ifndef MICROPY_EMIT_THUMB
+#define MICROPY_EMIT_THUMB (0)
+#endif
+
+// Whether to enable the thumb inline assembler
+#ifndef MICROPY_EMIT_INLINE_THUMB
+#define MICROPY_EMIT_INLINE_THUMB (0)
+#endif
+
+/*****************************************************************************/
+/* Internal debugging stuff                                                  */
+
+// Whether to collect memory allocation stats
+#ifndef MICROPY_MEM_STATS
+#define MICROPY_MEM_STATS (0)
+#endif
+
+/*****************************************************************************/
+/* Fine control over Python features                                         */
+
+// Whether to include REPL helper function
+#ifndef MICROPY_ENABLE_REPL_HELPERS
+#define MICROPY_ENABLE_REPL_HELPERS (0)
+#endif
+
+// Whether to support float and complex types
+#ifndef MICROPY_ENABLE_FLOAT
+#define MICROPY_ENABLE_FLOAT (0)
+#endif
+
+// Whether to support slice object and correspondingly
+// slice subscript operators
+#ifndef MICROPY_ENABLE_SLICE
+#define MICROPY_ENABLE_SLICE (1)
+#endif
+
+/*****************************************************************************/
+/* Miscellaneous settings                                                    */
+
 // printf format spec to use for machine_int_t and friends
+#ifndef INT_FMT
 #ifdef __LP64__
 // Archs where machine_int_t == long, long != int
 #define UINT_FMT "%lu"
@@ -16,18 +73,3 @@
 #define INT_FMT "%d"
 #endif
 #endif //INT_FMT
-
-
-// Any options not explicitly set in mpconfigport.h will get default
-// values below.
-
-// Whether to collect memory allocation stats
-#ifndef MICROPY_MEM_STATS
-#define MICROPY_MEM_STATS (1)
-#endif
-
-// Whether to support slice object and correspondingly
-// slice subscript operators
-#ifndef MICROPY_ENABLE_SLICE
-#define MICROPY_ENABLE_SLICE (1)
-#endif