-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
40 lines (33 loc) · 2.34 KB
/
Makefile
File metadata and controls
40 lines (33 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
TOP := $(abspath $(CURDIR))
MICROPY_DIR := $(TOP)/micropython
EMBED_CFG := $(TOP)/embed_cfg
EMBED_BUILD := $(TOP)/build/embed
EMBED_PACKAGE_DIR := $(TOP)/kernel_mod/micropython_embed
KMOD_DIR := $(TOP)/kernel_mod
PYTHON ?= python3
KDIR ?= /lib/modules/$(shell uname -r)/build
.PHONY: all embed module clean
all: module
embed:
$(MAKE) -f $(MICROPY_DIR)/ports/embed/embed.mk \
MICROPYTHON_TOP=$(MICROPY_DIR) \
MICROPY_MPCONFIGPORT_DIR=$(EMBED_CFG) \
MPCONFIGPORT=$(EMBED_CFG)/mpconfigport.h \
VPATH=$(EMBED_CFG) \
CFLAGS="-I$(MICROPY_DIR) -I$(MICROPY_DIR)/py -I$(MICROPY_DIR)/ports/embed -I$(EMBED_BUILD) -I$(EMBED_BUILD)/genhdr -I$(EMBED_CFG)" \
BUILD=$(EMBED_BUILD) \
PACKAGE_DIR=$(EMBED_PACKAGE_DIR)
$(Q)cp $(EMBED_CFG)/mpconfigport.h $(EMBED_PACKAGE_DIR)/mpconfigport.h
$(Q)perl -0777 -pi -e 's/#if defined\\(__GNUC__\\) && __GNUC__ >= 7\\s+#define MP_FALLTHROUGH __attribute__\\(\\(fallthrough\\)\\);\\s+#else/#if defined(__GNUC__) && __GNUC__ >= 7\\n#ifndef MP_FALLTHROUGH\\n#define MP_FALLTHROUGH __attribute__((fallthrough));\\n#endif\\n#else/' $(EMBED_PACKAGE_DIR)/py/mpconfig.h
$(Q)echo "#undef MP_FALLTHROUGH" >> $(EMBED_PACKAGE_DIR)/py/mpconfig.h
$(Q)echo "#define MP_FALLTHROUGH" >> $(EMBED_PACKAGE_DIR)/py/mpconfig.h
$(Q)perl -pi -e 's/LONG_MAX > INT_MAX/1/' $(EMBED_PACKAGE_DIR)/py/mpprint.c
$(Q)perl -0777 -pi -e 's/range_len/mpy_range_len/g' $(EMBED_PACKAGE_DIR)/py/objrange.c
$(Q)perl -0777 -pi -e 's/#include <alloca.h>/#ifdef __KERNEL__\n#else\n#include <alloca.h>\n#endif/g' $(EMBED_PACKAGE_DIR)/port/mpconfigport_common.h
$(Q)perl -0777 -pi -e 's/void nlr_jump_fail\(void \*val\) \{\n for \(;;\) \{\n \}\n\}/void nlr_jump_fail(void *val) { extern int printf(const char *fmt, ...); printf("FATAL: nlr_jump_fail\\n"); asm volatile("ud2"); for(;;); }/' $(EMBED_PACKAGE_DIR)/port/embed_util.c
$(Q)perl -0777 -pi -e 's/mp_obj_print_exception\(&mp_plat_print, \(mp_obj_t\)nlr.ret_val\);/nlr_buf_t nlr2; if (nlr_push(\&nlr2) == 0) { mp_obj_print_exception(\&mp_plat_print, (mp_obj_t)nlr.ret_val); nlr_pop(); } else { mp_printf(\&mp_plat_print, "Fatal: Error printing exception\\n"); }/' $(EMBED_PACKAGE_DIR)/port/embed_util.c
module: embed
$(MAKE) -C $(KDIR) M=$(KMOD_DIR)
clean:
$(RM) -rf $(EMBED_BUILD) $(EMBED_PACKAGE_DIR)
$(MAKE) -C $(KDIR) M=$(KMOD_DIR) clean