Skip to content
Snippets Groups Projects
Select Git revision
  • 98cbbbf8ba90550d5d2b67155c352f8c73e33c88
  • master default protected
  • schneider/ir
  • rahix/user-space-ctx
  • schneider/iaq-python
  • schneider/ble-mini-demo
  • schneider/ble-ecg-stream-visu
  • schneider/mp-exception-print
  • schneider/sleep-display
  • schneider/deepsleep4
  • schneider/deepsleep2
  • schneider/deepsleep
  • schneider/ble-central
  • rahix/bluetooth-app-favorite
  • schneider/v1.17-changelog
  • schneider/ancs
  • schneider/png
  • schneider/freertos-list-debug
  • schneider/212-reset-hardware-when-entering-repl
  • schneider/bonding-fail-if-full
  • schneider/ble-fixes-2020-3
  • v1.18
  • v1.17
  • v1.16
  • v1.15
  • v1.14
  • v1.13
  • v1.12
  • v1.11
  • v1.10
  • v1.9
  • v1.8
  • v1.7
  • v1.6
  • v1.5
  • v1.4
  • v1.3
  • v1.2
  • v1.1
  • v1.0
  • release-1
41 results

stack_fit.c

Blame
  • py.mk 5.47 KiB
    # where py object files go (they have a name prefix to prevent filename clashes)
    PY_BUILD = $(BUILD)/py
    
    # where autogenerated header files go
    HEADER_BUILD = $(BUILD)/genhdr
    
    # file containing qstr defs for the core Python bit
    PY_QSTR_DEFS = $(PY_SRC)/qstrdefs.h
    
    # some code is performance bottleneck and compiled with other optimization options
    CSUPEROPT = -O3
    
    INC += -I../lib/netutils
    
    ifeq ($(MICROPY_PY_USSL),1)
    CFLAGS_MOD += -DMICROPY_PY_USSL=1 -I../lib/axtls/ssl -I../lib/axtls/crypto -I../lib/axtls/config
    LDFLAGS_MOD += -L../lib/axtls/_stage -laxtls
    endif
    
    #ifeq ($(MICROPY_PY_LWIP),1)
    #CFLAGS_MOD += -DMICROPY_PY_LWIP=1 -I../lib/lwip/src/include -I../lib/lwip/src/include/ipv4 -I../extmod/lwip-include
    #endif
    
    ifeq ($(MICROPY_PY_LWIP),1)
    LWIP_DIR = lib/lwip/src
    INC += -I../lib/lwip/src/include -I../lib/lwip/src/include/ipv4 -I../extmod/lwip-include
    CFLAGS_MOD += -DMICROPY_PY_LWIP=1
    SRC_MOD += extmod/modlwip.c lib/netutils/netutils.c
    SRC_MOD += $(addprefix $(LWIP_DIR)/,\
    	core/def.c \
    	core/dns.c \
    	core/init.c \
    	core/mem.c \
    	core/memp.c \
    	core/netif.c \
    	core/pbuf.c \
    	core/raw.c \
    	core/stats.c \
    	core/sys.c \
    	core/tcp.c \
    	core/tcp_in.c \
    	core/tcp_out.c \
    	core/timers.c \
    	core/udp.c \
    	core/ipv4/autoip.c \
    	core/ipv4/icmp.c \
    	core/ipv4/igmp.c \
    	core/ipv4/inet.c \
    	core/ipv4/inet_chksum.c \
    	core/ipv4/ip_addr.c \
    	core/ipv4/ip.c \
    	core/ipv4/ip_frag.c \
    	)
    ifeq ($(MICROPY_PY_LWIP_SLIP),1)
    CFLAGS_MOD += -DMICROPY_PY_LWIP_SLIP=1
    SRC_MOD += $(LWIP_DIR)/netif/slipif.c
    endif
    endif
    
    # py object files
    PY_O_BASENAME = \
    	mpstate.o \
    	nlrx86.o \
    	nlrx64.o \
    	nlrthumb.o \
    	nlrxtensa.o \
    	nlrsetjmp.o \
    	malloc.o \
    	gc.o \
    	qstr.o \
    	vstr.o \
    	mpprint.o \
    	unicode.o \
    	mpz.o \
    	lexer.o \
    	lexerstr.o \
    	lexerunix.o \
    	parse.o \
    	scope.o \
    	compile.o \
    	emitcommon.o \
    	emitbc.o \
    	asmx64.o \
    	emitnx64.o \
    	asmx86.o \
    	emitnx86.o \
    	asmthumb.o \
    	emitnthumb.o \
    	emitinlinethumb.o \
    	asmarm.o \
    	emitnarm.o \
    	formatfloat.o \
    	parsenumbase.o \
    	parsenum.o \
    	emitglue.o \
    	runtime.o \
    	nativeglue.o \
    	stackctrl.o \
    	argcheck.o \
    	warning.o \
    	map.o \
    	obj.o \
    	objarray.o \
    	objattrtuple.o \
    	objbool.o \
    	objboundmeth.o \
    	objcell.o \
    	objclosure.o \
    	objcomplex.o \
    	objdict.o \
    	objenumerate.o \
    	objexcept.o \
    	objfilter.o \
    	objfloat.o \
    	objfun.o \
    	objgenerator.o \
    	objgetitemiter.o \
    	objint.o \
    	objint_longlong.o \
    	objint_mpz.o \
    	objlist.o \
    	objmap.o \
    	objmodule.o \
    	objobject.o \
    	objpolyiter.o \
    	objproperty.o \
    	objnone.o \
    	objnamedtuple.o \
    	objrange.o \
    	objreversed.o \
    	objset.o \
    	objsingleton.o \
    	objslice.o \
    	objstr.o \
    	objstrunicode.o \
    	objstringio.o \
    	objtuple.o \
    	objtype.o \
    	objzip.o \
    	opmethods.o \
    	sequence.o \
    	stream.o \
    	binary.o \
    	builtinimport.o \
    	builtinevex.o \
    	modarray.o \
    	modbuiltins.o \
    	modcollections.o \
    	modgc.o \
    	modio.o \
    	modmath.o \
    	modcmath.o \
    	modmicropython.o \
    	modstruct.o \
    	modsys.o \
    	vm.o \
    	bc.o \
    	showbc.o \
    	repl.o \
    	smallint.o \
    	frozenmod.o \
    	../extmod/moductypes.o \
    	../extmod/modujson.o \
    	../extmod/modure.o \
    	../extmod/moduzlib.o \
    	../extmod/moduheapq.o \
    	../extmod/moduhashlib.o \
    	../extmod/modubinascii.o \
    	../extmod/machine_mem.o \
    	../extmod/modussl.o \
    	../extmod/modurandom.o \
    	../extmod/fsusermount.o \
    	../extmod/vfs_fat.o \
    	../extmod/moduos_dupterm.o \
    
    # prepend the build destination prefix to the py object files
    PY_O = $(addprefix $(PY_BUILD)/, $(PY_O_BASENAME))
    
    # Anything that depends on FORCE will be considered out-of-date
    FORCE:
    .PHONY: FORCE
    
    $(HEADER_BUILD)/mpversion.h: FORCE | $(HEADER_BUILD)
    	$(Q)$(PYTHON) $(PY_SRC)/makeversionhdr.py $@
    
    # mpconfigport.mk is optional, but changes to it may drastically change
    # overall config, so they need to be caught
    MPCONFIGPORT_MK = $(wildcard mpconfigport.mk)
    
    # qstr data
    
    # Adding an order only dependency on $(HEADER_BUILD) causes $(HEADER_BUILD) to get
    # created before we run the script to generate the .h
    # Note: we need to protect the qstr names from the preprocessor, so we wrap
    # the lines in "" and then unwrap after the preprocessor is finished.
    $(HEADER_BUILD)/qstrdefs.generated.h: $(PY_QSTR_DEFS) $(QSTR_DEFS) $(PY_SRC)/makeqstrdata.py mpconfigport.h $(MPCONFIGPORT_MK) $(PY_SRC)/mpconfig.h | $(HEADER_BUILD)
    	$(ECHO) "GEN $@"
    	$(Q)cat $(PY_QSTR_DEFS) $(QSTR_DEFS) | $(SED) 's/^Q(.*)/"&"/' | $(CPP) $(CFLAGS) - | sed 's/^"\(Q(.*)\)"/\1/' > $(HEADER_BUILD)/qstrdefs.preprocessed.h
    	$(Q)$(PYTHON) $(PY_SRC)/makeqstrdata.py $(HEADER_BUILD)/qstrdefs.preprocessed.h > $@
    
    # emitters
    
    $(PY_BUILD)/emitnx64.o: CFLAGS += -DN_X64
    $(PY_BUILD)/emitnx64.o: py/emitnative.c
    	$(call compile_c)
    
    $(PY_BUILD)/emitnx86.o: CFLAGS += -DN_X86
    $(PY_BUILD)/emitnx86.o: py/emitnative.c
    	$(call compile_c)
    
    $(PY_BUILD)/emitnthumb.o: CFLAGS += -DN_THUMB
    $(PY_BUILD)/emitnthumb.o: py/emitnative.c
    	$(call compile_c)
    
    $(PY_BUILD)/emitnarm.o: CFLAGS += -DN_ARM
    $(PY_BUILD)/emitnarm.o: py/emitnative.c
    	$(call compile_c)
    
    # optimising gc for speed; 5ms down to 4ms on pybv2
    $(PY_BUILD)/gc.o: CFLAGS += $(CSUPEROPT)
    
    # optimising vm for speed, adds only a small amount to code size but makes a huge difference to speed (20% faster)
    $(PY_BUILD)/vm.o: CFLAGS += $(CSUPEROPT)
    # Optimizing vm.o for modern deeply pipelined CPUs with branch predictors
    # may require disabling tail jump optimization. This will make sure that
    # each opcode has its own dispatching jump which will improve branch
    # branch predictor efficiency.
    # http://article.gmane.org/gmane.comp.lang.lua.general/75426
    # http://hg.python.org/cpython/file/b127046831e2/Python/ceval.c#l828
    # http://www.emulators.com/docs/nx25_nostradamus.htm
    #-fno-crossjumping