From 85d5d321e23d51630f9df5b61529de49dfd07cad Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Tue, 10 Jul 2018 10:38:32 -0400 Subject: [PATCH 1/2] Add STATIC_BUILD make flag for mpy-cross to build a static executable --- mpy-cross/Makefile | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/mpy-cross/Makefile b/mpy-cross/Makefile index 53ce50c7ff..7764d5bef9 100644 --- a/mpy-cross/Makefile +++ b/mpy-cross/Makefile @@ -35,6 +35,13 @@ CWARN += -Wpointer-arith -Wuninitialized CFLAGS = $(INC) $(CWARN) -std=gnu99 $(CFLAGS_MOD) $(COPT) $(CFLAGS_EXTRA) CFLAGS += -fdata-sections -ffunction-sections -fno-asynchronous-unwind-tables +# Build a static executable. +# Useful for Windows builds, etc., that must run on multiple operating system versions. +ifdef STATIC_BUILD +CFLAGS += -static -static-libgcc -static-libstdc++ +endif + + # Debugging/Optimization ifdef DEBUG CFLAGS += -g @@ -57,6 +64,10 @@ LDFLAGS_ARCH = -Wl,-Map=$@.map,--cref -Wl,--gc-sections endif LDFLAGS = $(LDFLAGS_MOD) $(LDFLAGS_ARCH) -lm $(LDFLAGS_EXTRA) +ifdef STATIC_BUILD +LDFLAGS += -static -static-libgcc -static-libstdc++ +endif + # source files SRC_C = \ main.c \ From d305e7d6cfea2e336784d756997e4da725041f83 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Tue, 10 Jul 2018 22:29:36 -0400 Subject: [PATCH 2/2] handle errno defns for mingw and use correct executable name --- .gitignore | 4 ++++ mpy-cross/Makefile | 6 ++++++ mpy-cross/mpconfigport.h | 44 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) diff --git a/.gitignore b/.gitignore index aa4ff6dab2..4f4c91d82e 100644 --- a/.gitignore +++ b/.gitignore @@ -58,4 +58,8 @@ TAGS ################# *.orig +# Emacs backup files +#################### +*~ + *.DS_Store diff --git a/mpy-cross/Makefile b/mpy-cross/Makefile index 7764d5bef9..c9b6cca0f3 100644 --- a/mpy-cross/Makefile +++ b/mpy-cross/Makefile @@ -14,7 +14,13 @@ endif include ../py/mkenv.mk # define main target + +ifeq ($(OS),Windows_NT) +# Detect a MINGW32 build, and change the name of the final executable. +PROG = mpy-cross.exe +else PROG = mpy-cross +endif # qstr definitions (must come before including py.mk) QSTR_DEFS = qstrdefsport.h diff --git a/mpy-cross/mpconfigport.h b/mpy-cross/mpconfigport.h index e227d1be54..04f9a24d5c 100644 --- a/mpy-cross/mpconfigport.h +++ b/mpy-cross/mpconfigport.h @@ -85,6 +85,50 @@ #define MICROPY_PY_IO (0) #define MICROPY_PY_SYS (0) +// MINGW only handles these errno names. +#ifdef __MINGW32__ +#define MICROPY_PY_UERRNO_LIST \ + X(EPERM) \ + X(ENOENT) \ + X(ESRCH) \ + X(EINTR) \ + X(EIO) \ + X(ENXIO) \ + X(E2BIG) \ + X(ENOEXEC) \ + X(EBADF) \ + X(ECHILD) \ + X(EAGAIN) \ + X(ENOMEM) \ + X(EACCES) \ + X(EFAULT) \ + X(EBUSY) \ + X(EEXIST) \ + X(EXDEV) \ + X(ENODEV) \ + X(ENOTDIR) \ + X(EISDIR) \ + X(EINVAL) \ + X(ENFILE) \ + X(EMFILE) \ + X(ENOTTY) \ + X(EFBIG) \ + X(ENOSPC) \ + X(ESPIPE) \ + X(EROFS) \ + X(EMLINK) \ + X(EPIPE) \ + X(EDOM) \ + X(ERANGE) \ + X(EDEADLOCK) \ + X(EDEADLK) \ + X(ENAMETOOLONG) \ + X(ENOLCK) \ + X(ENOSYS) \ + X(ENOTEMPTY) \ + X(EILSEQ) +#endif + // type definitions for the specific machine #ifdef __LP64__