mirror of
https://github.com/micropython/micropython.git
synced 2025-12-16 01:40:14 +01:00
unix: Enable compile-only mode with shared pyexec REPL.
Provides support for command line `-X compile-only` option on unix port. Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
This commit is contained in:
committed by
Damien George
parent
7b3a0fc6b7
commit
7ac8fcf752
@@ -58,7 +58,7 @@
|
|||||||
#include "shared/runtime/pyexec.h"
|
#include "shared/runtime/pyexec.h"
|
||||||
|
|
||||||
// Command line options, with their defaults
|
// Command line options, with their defaults
|
||||||
static bool compile_only = false;
|
bool mp_compile_only = false;
|
||||||
static uint emit_opt = MP_EMIT_OPT_NONE;
|
static uint emit_opt = MP_EMIT_OPT_NONE;
|
||||||
|
|
||||||
#if MICROPY_ENABLE_GC
|
#if MICROPY_ENABLE_GC
|
||||||
@@ -159,7 +159,7 @@ static int execute_from_lexer(int source_kind, const void *source, mp_parse_inpu
|
|||||||
|
|
||||||
mp_obj_t module_fun = mp_compile(&parse_tree, source_name, is_repl);
|
mp_obj_t module_fun = mp_compile(&parse_tree, source_name, is_repl);
|
||||||
|
|
||||||
if (!compile_only) {
|
if (!mp_compile_only) {
|
||||||
// execute it
|
// execute it
|
||||||
mp_call_function_0(module_fun);
|
mp_call_function_0(module_fun);
|
||||||
}
|
}
|
||||||
@@ -325,7 +325,7 @@ static void pre_process_options(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
if (0) {
|
if (0) {
|
||||||
} else if (strcmp(argv[a + 1], "compile-only") == 0) {
|
} else if (strcmp(argv[a + 1], "compile-only") == 0) {
|
||||||
compile_only = true;
|
mp_compile_only = true;
|
||||||
} else if (strcmp(argv[a + 1], "emit=bytecode") == 0) {
|
} else if (strcmp(argv[a + 1], "emit=bytecode") == 0) {
|
||||||
emit_opt = MP_EMIT_OPT_BYTECODE;
|
emit_opt = MP_EMIT_OPT_BYTECODE;
|
||||||
#if MICROPY_EMIT_NATIVE
|
#if MICROPY_EMIT_NATIVE
|
||||||
|
|||||||
@@ -151,6 +151,9 @@ typedef long mp_off_t;
|
|||||||
// Enable sys.executable.
|
// Enable sys.executable.
|
||||||
#define MICROPY_PY_SYS_EXECUTABLE (1)
|
#define MICROPY_PY_SYS_EXECUTABLE (1)
|
||||||
|
|
||||||
|
// Enable support for compile-only mode.
|
||||||
|
#define MICROPY_PYEXEC_COMPILE_ONLY (1)
|
||||||
|
|
||||||
#define MICROPY_PY_SOCKET_LISTEN_BACKLOG_DEFAULT (SOMAXCONN < 128 ? SOMAXCONN : 128)
|
#define MICROPY_PY_SOCKET_LISTEN_BACKLOG_DEFAULT (SOMAXCONN < 128 ? SOMAXCONN : 128)
|
||||||
|
|
||||||
// Bare-metal ports don't have stderr. Printing debug to stderr may give tests
|
// Bare-metal ports don't have stderr. Printing debug to stderr may give tests
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
*/
|
*/
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#ifndef CHAR_CTRL_C
|
#ifndef CHAR_CTRL_C
|
||||||
#define CHAR_CTRL_C (3)
|
#define CHAR_CTRL_C (3)
|
||||||
@@ -117,3 +118,6 @@ enum {
|
|||||||
|
|
||||||
void mp_hal_get_mac(int idx, uint8_t buf[6]);
|
void mp_hal_get_mac(int idx, uint8_t buf[6]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Global variable to control compile-only mode.
|
||||||
|
extern bool mp_compile_only;
|
||||||
|
|||||||
@@ -161,6 +161,9 @@
|
|||||||
#define MICROPY_MACHINE_MEM_GET_READ_ADDR mod_machine_mem_get_addr
|
#define MICROPY_MACHINE_MEM_GET_READ_ADDR mod_machine_mem_get_addr
|
||||||
#define MICROPY_MACHINE_MEM_GET_WRITE_ADDR mod_machine_mem_get_addr
|
#define MICROPY_MACHINE_MEM_GET_WRITE_ADDR mod_machine_mem_get_addr
|
||||||
|
|
||||||
|
// Enable support for compile-only mode.
|
||||||
|
#define MICROPY_PYEXEC_COMPILE_ONLY (1)
|
||||||
|
|
||||||
#define MICROPY_ERROR_REPORTING (MICROPY_ERROR_REPORTING_DETAILED)
|
#define MICROPY_ERROR_REPORTING (MICROPY_ERROR_REPORTING_DETAILED)
|
||||||
#define MICROPY_ERROR_PRINTER (&mp_stderr_print)
|
#define MICROPY_ERROR_PRINTER (&mp_stderr_print)
|
||||||
#define MICROPY_WARNINGS (1)
|
#define MICROPY_WARNINGS (1)
|
||||||
|
|||||||
Reference in New Issue
Block a user