diff --git a/.github/workflows/ports_windows.yml b/.github/workflows/ports_windows.yml index c882f498f1f0b..f2f756923348c 100644 --- a/.github/workflows/ports_windows.yml +++ b/.github/workflows/ports_windows.yml @@ -24,7 +24,7 @@ jobs: matrix: platform: [x86, x64] configuration: [Debug, Release] - variant: [dev, standard] + variant: [dev, tns] visualstudio: ['2017', '2019', '2022'] include: - visualstudio: '2017' @@ -38,7 +38,7 @@ jobs: vs_version: '[17, 18)' # trim down the number of jobs in the matrix exclude: - - variant: standard + - variant: tns configuration: Debug - visualstudio: '2019' configuration: Debug @@ -60,6 +60,20 @@ jobs: - uses: actions/checkout@v3 - name: Build mpy-cross.exe run: msbuild mpy-cross\mpy-cross.vcxproj -maxcpucount -property:Configuration=${{ matrix.configuration }} -property:Platform=${{ matrix.platform }} + - name: Set custom build options + shell: pwsh + run: | + @' + + + + + + %(PreprocessorDefinitions);MICROPY_STACK_CHECK=1 + + + + '@ | Set-Content ports\windows\msvc\user.props - name: Build micropython.exe run: msbuild ports\windows\micropythoncore.vcxproj;ports\windows\micropython.vcxproj -maxcpucount -property:Configuration=${{ matrix.configuration }} -property:Platform=${{ matrix.platform }} -property:PyVariant=${{ matrix.variant }} - name: Get micropython.exe path @@ -92,7 +106,7 @@ jobs: strategy: fail-fast: false matrix: - variant: [dev, standard] + variant: [dev, tns] sys: [mingw32, mingw64] include: - sys: mingw32 @@ -133,7 +147,7 @@ jobs: - name: Update submodules run: make -C ports/windows VARIANT=${{ matrix.variant }} submodules - name: Build micropython.exe - run: make -C ports/windows -j2 VARIANT=${{ matrix.variant }} + run: make -C ports/windows -j2 VARIANT=${{ matrix.variant }} CFLAGS_EXTRA="-DMICROPY_STACK_CHECK=1" - name: Run tests id: test # msys python breaks tests so we need to use "real" windows python diff --git a/ports/windows/Makefile b/ports/windows/Makefile index b49bfddaac559..4b806b7d5e728 100644 --- a/ports/windows/Makefile +++ b/ports/windows/Makefile @@ -5,7 +5,7 @@ ifdef VARIANT_DIR VARIANT ?= $(notdir $(VARIANT_DIR:/=)) else # If not given on the command line, then default to standard. -VARIANT ?= standard +VARIANT ?= tns VARIANT_DIR ?= variants/$(VARIANT) endif diff --git a/ports/windows/mpconfigport.h b/ports/windows/mpconfigport.h index 67a3fd08e39dc..97dd9fb83814a 100644 --- a/ports/windows/mpconfigport.h +++ b/ports/windows/mpconfigport.h @@ -51,7 +51,9 @@ #define MICROPY_ENABLE_GC (1) #define MICROPY_ENABLE_FINALISER (1) #define MICROPY_ENABLE_PYSTACK (1) -#define MICROPY_STACK_CHECK (1) +#ifndef MICROPY_STACK_CHECK +#define MICROPY_STACK_CHECK (0) +#endif #define MICROPY_MALLOC_USES_ALLOCATED_SIZE (1) #define MICROPY_MEM_STATS (1) #define MICROPY_DEBUG_PRINTER (&mp_stderr_print) diff --git a/ports/windows/msvc/variant.props b/ports/windows/msvc/variant.props index 33322ad1cf09c..dcc85b96c6fbf 100644 --- a/ports/windows/msvc/variant.props +++ b/ports/windows/msvc/variant.props @@ -3,7 +3,7 @@ True - standard + tns build-$(PyVariant) diff --git a/ports/windows/variants/tns/builtins.c b/ports/windows/variants/tns/builtins.c new file mode 100644 index 0000000000000..f09b78508948e --- /dev/null +++ b/ports/windows/variants/tns/builtins.c @@ -0,0 +1,4 @@ +#include "py/objexcept.h" + +MP_DEFINE_EXCEPTION(ConnectionError, OSError) +MP_DEFINE_EXCEPTION(TimeoutError, OSError) diff --git a/ports/windows/variants/tns/mpconfigvariant.h b/ports/windows/variants/tns/mpconfigvariant.h new file mode 100644 index 0000000000000..26e9dfe0d7663 --- /dev/null +++ b/ports/windows/variants/tns/mpconfigvariant.h @@ -0,0 +1,26 @@ +#define MICROPY_ENABLE_SCHEDULER (0) +#define MICROPY_PY_BUILTINS_HELP (1) +#define MICROPY_PY_BUILTINS_HELP_MODULES (1) +#define MICROPY_PY_BUILTINS_MEMORYVIEW_ITEMSIZE (1) +#define MICROPY_PY_BUILTINS_NEXT2 (1) +#define MICROPY_PY_BUILTINS_DESCRIPTOR (1) +#define MICROPY_PY_BUILTINS_RANGE_BINOP (1) +#define MICROPY_PY_BUILTINS_SLICE_INDICES (1) +#define MICROPY_PY_COLLECTIONS_NAMEDTUPLE__ASDICT (1) +#define MICROPY_PY_MATH_CONSTANTS (1) +#define MICROPY_PY_MATH_FACTORIAL (1) +#define MICROPY_PY_SYS_EXECUTABLE (1) +#define MICROPY_PY_PLATFORM (1) +#define MICROPY_PY_RANDOM_EXTRA_FUNCS (1) +#define MICROPY_PY_RE_MATCH_GROUPS (1) +#define MICROPY_PY_RE_MATCH_SPAN_START_END (1) +#define MICROPY_PY_RE_SUB (1) +#define MICROPY_REPL_EMACS_WORDS_MOVE (1) +#define MICROPY_REPL_EMACS_EXTRA_WORDS_MOVE (1) + +extern const struct _mp_obj_type_t mp_type_ConnectionError; +extern const struct _mp_obj_type_t mp_type_TimeoutError; +#define MICROPY_PORT_EXTRA_BUILTINS \ + { MP_ROM_QSTR(MP_QSTR_ConnectionError), MP_ROM_PTR(&mp_type_ConnectionError) }, \ + { MP_ROM_QSTR(MP_QSTR_TimeoutError), MP_ROM_PTR(&mp_type_TimeoutError) }, \ +// Extra line to avoid "backslash-newline at end of file" warning. diff --git a/ports/windows/variants/tns/mpconfigvariant.mk b/ports/windows/variants/tns/mpconfigvariant.mk new file mode 100644 index 0000000000000..e4376136274c5 --- /dev/null +++ b/ports/windows/variants/tns/mpconfigvariant.mk @@ -0,0 +1 @@ +PROG ?= micropython diff --git a/ports/windows/variants/tns/mpconfigvariant.props b/ports/windows/variants/tns/mpconfigvariant.props new file mode 100644 index 0000000000000..3f8e0c00042f7 --- /dev/null +++ b/ports/windows/variants/tns/mpconfigvariant.props @@ -0,0 +1,8 @@ + + + micropython + + + + +