mirror of
https://github.com/micropython/micropython.git
synced 2025-07-21 13:01:10 +02:00
Some checks failed
JavaScript code lint and formatting with Biome / eslint (push) Has been cancelled
Check code formatting / code-formatting (push) Has been cancelled
Check spelling with codespell / codespell (push) Has been cancelled
Build docs / build (push) Has been cancelled
Check examples / embedding (push) Has been cancelled
Package mpremote / build (push) Has been cancelled
.mpy file format and tools / test (push) Has been cancelled
Build ports metadata / build (push) Has been cancelled
alif port / build_alif (alif_ae3_build) (push) Has been cancelled
cc3200 port / build (push) Has been cancelled
esp32 port / build_idf (esp32_build_cmod_spiram_s2) (push) Has been cancelled
esp32 port / build_idf (esp32_build_s3_c3) (push) Has been cancelled
esp8266 port / build (push) Has been cancelled
mimxrt port / build (push) Has been cancelled
nrf port / build (push) Has been cancelled
powerpc port / build (push) Has been cancelled
qemu port / build_and_test_arm (bigendian) (push) Has been cancelled
qemu port / build_and_test_arm (sabrelite) (push) Has been cancelled
qemu port / build_and_test_arm (thumb) (push) Has been cancelled
qemu port / build_and_test_rv32 (push) Has been cancelled
renesas-ra port / build_renesas_ra_board (push) Has been cancelled
rp2 port / build (push) Has been cancelled
samd port / build (push) Has been cancelled
stm32 port / build_stm32 (stm32_misc_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_nucleo_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_pyb_build) (push) Has been cancelled
unix port / minimal (push) Has been cancelled
unix port / reproducible (push) Has been cancelled
unix port / standard (push) Has been cancelled
unix port / standard_v2 (push) Has been cancelled
unix port / coverage (push) Has been cancelled
unix port / coverage_32bit (push) Has been cancelled
unix port / nanbox (push) Has been cancelled
unix port / float (push) Has been cancelled
unix port / stackless_clang (push) Has been cancelled
unix port / float_clang (push) Has been cancelled
unix port / settrace_stackless (push) Has been cancelled
unix port / macos (push) Has been cancelled
unix port / qemu_mips (push) Has been cancelled
unix port / qemu_arm (push) Has been cancelled
unix port / qemu_riscv64 (push) Has been cancelled
unix port / sanitize_address (push) Has been cancelled
unix port / sanitize_undefined (push) Has been cancelled
webassembly port / build (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, dev) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, standard) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, dev) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, standard) (push) Has been cancelled
windows port / cross-build-on-linux (push) Has been cancelled
zephyr port / build (push) Has been cancelled
Python code lint and formatting with ruff / ruff (push) Has been cancelled
This is code makes sure that time functions work properly on a reasonable date range, on all platforms, regardless of the epoch. The suggested minimum range is 1970 to 2099. In order to reduce code footprint, code to support far away dates is only enabled specified by the port. New types are defined to identify timestamps. The implementation with the smallest code footprint is when support timerange is limited to 1970-2099 and Epoch is 1970. This makes it possible to use 32 bit unsigned integers for all timestamps. On ARM4F, adding support for dates up to year 3000 adds 460 bytes of code. Supporting dates back to 1600 adds another 44 bytes of code. Signed-off-by: Yoctopuce dev <dev@yoctopuce.com>
130 lines
3.7 KiB
Makefile
130 lines
3.7 KiB
Makefile
# Select the variant to build for:
|
|
ifdef VARIANT_DIR
|
|
# Custom variant path - remove trailing slash and get the final component of
|
|
# the path as the variant name.
|
|
VARIANT ?= $(notdir $(VARIANT_DIR:/=))
|
|
else
|
|
# If not given on the command line, then default to standard.
|
|
VARIANT ?= standard
|
|
VARIANT_DIR ?= variants/$(VARIANT)
|
|
endif
|
|
|
|
ifeq ($(wildcard $(VARIANT_DIR)/.),)
|
|
$(error Invalid VARIANT specified: $(VARIANT_DIR))
|
|
endif
|
|
|
|
# If the build directory is not given, make it reflect the variant name.
|
|
BUILD ?= build-$(VARIANT)
|
|
|
|
include ../../py/mkenv.mk
|
|
-include mpconfigport.mk
|
|
include $(VARIANT_DIR)/mpconfigvariant.mk
|
|
|
|
FROZEN_MANIFEST ?= variants/manifest.py
|
|
|
|
# Define main target
|
|
PROG ?= micropython
|
|
|
|
# qstr definitions (must come before including py.mk)
|
|
QSTR_DEFS += ../unix/qstrdefsport.h
|
|
QSTR_GLOBAL_DEPENDENCIES += $(VARIANT_DIR)/mpconfigvariant.h
|
|
|
|
# include py core make definitions
|
|
include $(TOP)/py/py.mk
|
|
include $(TOP)/extmod/extmod.mk
|
|
|
|
INC += -I.
|
|
INC += -I$(TOP)
|
|
INC += -I$(BUILD)
|
|
INC += -I$(VARIANT_DIR)
|
|
|
|
# compiler settings
|
|
CFLAGS += $(INC) -Wall -Wpointer-arith -Wdouble-promotion -Werror -std=gnu99 -DUNIX -D__USE_MINGW_ANSI_STDIO=1 $(COPT) $(CFLAGS_EXTRA)
|
|
LDFLAGS += -lm -lbcrypt $(LDFLAGS_EXTRA)
|
|
|
|
# Force the use of 64-bits for file sizes in C library functions on 32-bit platforms.
|
|
# This option has no effect on 64-bit builds.
|
|
CFLAGS += -D_FILE_OFFSET_BITS=64
|
|
|
|
# Force the use of 64-bits for time_t in C library functions on 32-bit platforms.
|
|
# This option has no effect on 64-bit builds.
|
|
CFLAGS += -D_TIME_BITS=64
|
|
|
|
# Debugging/Optimization
|
|
ifdef DEBUG
|
|
CFLAGS += -g
|
|
COPT = -O0
|
|
else
|
|
COPT = -Os #-DNDEBUG
|
|
endif
|
|
|
|
# source files
|
|
SRC_C = \
|
|
shared/libc/printf.c \
|
|
shared/runtime/gchelper_generic.c \
|
|
ports/unix/main.c \
|
|
ports/unix/input.c \
|
|
ports/unix/gccollect.c \
|
|
windows_mphal.c \
|
|
realpath.c \
|
|
init.c \
|
|
fmode.c \
|
|
$(wildcard $(VARIANT_DIR)/*.c)
|
|
|
|
SHARED_SRC_C += $(addprefix shared/,\
|
|
$(SHARED_SRC_C_EXTRA) \
|
|
)
|
|
|
|
OBJ = $(PY_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
|
|
OBJ += $(addprefix $(BUILD)/, $(SRC_CXX:.cpp=.o))
|
|
OBJ += $(addprefix $(BUILD)/, $(SHARED_SRC_C:.c=.o))
|
|
OBJ += $(addprefix $(BUILD)/, $(LIB_SRC_C:.c=.o))
|
|
|
|
ifeq ($(MICROPY_USE_READLINE),1)
|
|
CFLAGS += -DMICROPY_USE_READLINE=1
|
|
SRC_C += shared/readline/readline.c
|
|
endif
|
|
|
|
LIB += -lws2_32
|
|
|
|
# List of sources for qstr extraction
|
|
SRC_QSTR += $(SRC_C) $(SRC_CXX) $(SHARED_SRC_C)
|
|
|
|
ifneq ($(FROZEN_MANIFEST),)
|
|
CFLAGS += -DMPZ_DIG_SIZE=16
|
|
endif
|
|
|
|
ifeq ($(shell $(CC) -dumpmachine),i686-w64-mingw32)
|
|
# GCC disables the SSE instruction set by default on i366 targets and we have
|
|
# to specify all three of these options to enable it.
|
|
# https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html (see -mfpmath=unit section)
|
|
# Enabling the SSE instruction set is necessary to get correct rounding of floating points.
|
|
# https://lemire.me/blog/2020/06/26/gcc-not-nearest
|
|
CFLAGS += -msse -mfpmath=sse -march=pentium4
|
|
endif
|
|
|
|
CXXFLAGS += $(filter-out -std=gnu99,$(CFLAGS))
|
|
|
|
include $(TOP)/py/mkrules.mk
|
|
|
|
.PHONY: test test_full
|
|
|
|
# Note for recent gcc versions like 13.2:
|
|
# - mingw64-x86_64 gcc builds will pass the math_domain_special test
|
|
# - mingw64-ucrt64 gcc builds will pass all of the below tests
|
|
RUN_TESTS_SKIP += -e math_fun -e float2int_double -e float_parse -e math_domain_special
|
|
|
|
test: $(BUILD)/$(PROG) $(TOP)/tests/run-tests.py
|
|
$(eval DIRNAME=ports/$(notdir $(CURDIR)))
|
|
cd $(TOP)/tests && MICROPY_MICROPYTHON=../$(DIRNAME)/$(BUILD)/$(PROG) $(PYTHON) ./run-tests.py $(RUN_TESTS_SKIP)
|
|
|
|
test_full: test
|
|
$(eval DIRNAME=ports/$(notdir $(CURDIR)))
|
|
cd $(TOP)/tests && MICROPY_MICROPYTHON=../$(DIRNAME)/$(BUILD)/$(PROG) $(PYTHON) ./run-tests.py --via-mpy $(RUN_TESTS_MPY_CROSS_FLAGS) $(RUN_TESTS_SKIP) -d basics float micropython
|
|
|
|
$(BUILD)/$(PROG): $(BUILD)/micropython.res
|
|
|
|
$(BUILD)/%.res: %.rc
|
|
$(ECHO) "WINDRES $<"
|
|
$(Q)$(WINDRES) $< -O coff -o $@
|