mirror of
https://github.com/licsber/micropython.git
synced 2024-09-20 17:10:24 +08:00
0c124c3123
stat() is bad function to use using FFI, because its ABI is largely private. To start with, Glibc .so doesn't even have "stat" symbol. Then, layout of struct stat is too implementation-dependent. So, introduce _os to deal with stat() and other similar cases.
83 lines
1.6 KiB
Makefile
83 lines
1.6 KiB
Makefile
include ../py/mkenv.mk
|
|
-include mpconfigport.mk
|
|
|
|
# define main target
|
|
PROG = micropython
|
|
|
|
# qstr definitions (must come before including py.mk)
|
|
QSTR_DEFS = qstrdefsport.h
|
|
|
|
# include py core make definitions
|
|
include ../py/py.mk
|
|
|
|
INC = -I.
|
|
INC += -I$(PY_SRC)
|
|
INC += -I$(BUILD)
|
|
|
|
# compiler settings
|
|
CFLAGS = $(INC) -Wall -Werror -ansi -std=gnu99 -DUNIX $(CFLAGS_MOD) $(COPT)
|
|
|
|
UNAME_S := $(shell uname -s)
|
|
ifeq ($(UNAME_S),Darwin)
|
|
LDFLAGS = $(LDFLAGS_MOD) -lm -Wl,-map,$@.map
|
|
else
|
|
LDFLAGS = $(LDFLAGS_MOD) -lm -Wl,-Map=$@.map,--cref
|
|
endif
|
|
|
|
ifeq ($(MICROPY_FORCE_32BIT),1)
|
|
CFLAGS += -m32
|
|
LDFLAGS += -m32
|
|
ifeq ($(MICROPY_MOD_FFI),1)
|
|
ifeq ($(UNAME_S),Linux)
|
|
CFLAGS_MOD += -I/usr/include/i686-linux-gnu
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(MICROPY_USE_READLINE),1)
|
|
CFLAGS_MOD += -DMICROPY_USE_READLINE=1
|
|
LDFLAGS_MOD += -lreadline
|
|
# the following is needed for BSD
|
|
#LDFLAGS_MOD += -ltermcap
|
|
endif
|
|
ifeq ($(MICROPY_MOD_TIME),1)
|
|
CFLAGS_MOD += -DMICROPY_MOD_TIME=1
|
|
SRC_MOD += modtime.c
|
|
endif
|
|
ifeq ($(MICROPY_MOD_FFI),1)
|
|
LIBFFI_LDFLAGS_MOD := $(shell pkg-config --libs libffi)
|
|
LIBFFI_CFLAGS_MOD := $(shell pkg-config --cflags libffi)
|
|
CFLAGS_MOD += $(LIBFFI_CFLAGS_MOD) -DMICROPY_MOD_FFI=1
|
|
LDFLAGS_MOD += -ldl $(LIBFFI_LDFLAGS_MOD)
|
|
SRC_MOD += modffi.c
|
|
endif
|
|
|
|
|
|
# Debugging/Optimization
|
|
ifdef DEBUG
|
|
CFLAGS += -g
|
|
COPT = -O0
|
|
else
|
|
COPT = -Os #-DNDEBUG
|
|
endif
|
|
|
|
# source files
|
|
SRC_C = \
|
|
main.c \
|
|
gccollect.c \
|
|
input.c \
|
|
file.c \
|
|
modsocket.c \
|
|
modos.c \
|
|
$(SRC_MOD)
|
|
|
|
OBJ = $(PY_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
|
|
|
|
include ../py/mkrules.mk
|
|
|
|
.PHONY: test
|
|
|
|
test: $(PROG) ../tests/run-tests
|
|
$(eval DIRNAME=$(notdir $(CURDIR)))
|
|
cd ../tests && MICROPY_MICROPYTHON=../$(DIRNAME)/$(PROG) ./run-tests
|