blob: dd52687c703b80f7fdeaa1b2a1bffbfe7797879b [file] [log] [blame]
Damien George136f6752014-01-07 14:54:15 +00001# where py object files go (they have a name prefix to prevent filename clashes)
Dave Hylandsc89c6812014-01-24 01:05:30 -08002PY_BUILD = $(BUILD)/py
Damien George136f6752014-01-07 14:54:15 +00003
Andrew Scheller70a7d7a2014-04-16 22:10:33 +01004# where autogenerated header files go
Damien Georged553be52014-04-17 18:03:27 +01005HEADER_BUILD = $(BUILD)/genhdr
Andrew Scheller70a7d7a2014-04-16 22:10:33 +01006
7# file containing qstr defs for the core Python bit
Damien George55baff42014-01-21 21:40:13 +00008PY_QSTR_DEFS = $(PY_SRC)/qstrdefs.h
9
Paul Sokolovsky1c1d902c2014-04-24 02:59:43 +030010# some code is performance bottleneck and compiled with other optimization options
11CSUPEROPT = -O3
12
Damien George136f6752014-01-07 14:54:15 +000013# py object files
Damien George136f6752014-01-07 14:54:15 +000014PY_O_BASENAME = \
15 nlrx86.o \
16 nlrx64.o \
17 nlrthumb.o \
Paul Sokolovsky3a83b802014-04-17 00:16:45 +030018 nlrsetjmp.o \
Damien George136f6752014-01-07 14:54:15 +000019 malloc.o \
Damien Georged3ebe482014-01-07 15:20:33 +000020 gc.o \
Damien George136f6752014-01-07 14:54:15 +000021 qstr.o \
22 vstr.o \
23 unicode.o \
Damien George438c88d2014-02-22 19:25:23 +000024 mpz.o \
Damien George136f6752014-01-07 14:54:15 +000025 lexer.o \
Damien George9193f892014-01-08 15:28:26 +000026 lexerstr.o \
Damien George136f6752014-01-07 14:54:15 +000027 lexerunix.o \
28 parse.o \
Damien Georgec5966122014-02-15 16:10:44 +000029 parsehelper.o \
Damien George136f6752014-01-07 14:54:15 +000030 scope.o \
31 compile.o \
32 emitcommon.o \
33 emitpass1.o \
34 emitcpy.o \
35 emitbc.o \
36 asmx64.o \
37 emitnx64.o \
Damien Georgec90f59e2014-09-06 23:06:36 +010038 asmx86.o \
39 emitnx86.o \
Damien George136f6752014-01-07 14:54:15 +000040 asmthumb.o \
41 emitnthumb.o \
42 emitinlinethumb.o \
Fabian Vogtfe3d16e2014-08-16 22:55:53 +020043 asmarm.o \
44 emitnarm.o \
Damien George8bfec2b2014-03-10 13:27:02 +000045 formatfloat.o \
Damien George06201ff2014-03-01 19:50:50 +000046 parsenumbase.o \
Damien George20773972014-02-22 18:12:43 +000047 parsenum.o \
Damien George2326d522014-03-27 23:26:35 +000048 emitglue.o \
Damien George136f6752014-01-07 14:54:15 +000049 runtime.o \
Damien George110ba352014-08-28 23:37:02 +010050 nativeglue.o \
Paul Sokolovsky23668692014-06-25 03:03:34 +030051 stackctrl.o \
Damien Georgea3f94e02014-04-20 00:13:22 +010052 argcheck.o \
Damien George136f6752014-01-07 14:54:15 +000053 map.o \
54 obj.o \
Paul Sokolovsky427905c2014-01-18 19:24:47 +020055 objarray.o \
Damien George136f6752014-01-07 14:54:15 +000056 objbool.o \
57 objboundmeth.o \
58 objcell.o \
Damien George136f6752014-01-07 14:54:15 +000059 objclosure.o \
60 objcomplex.o \
61 objdict.o \
John R. Lenton9daa7892014-01-14 23:55:01 +000062 objenumerate.o \
Damien George136f6752014-01-07 14:54:15 +000063 objexcept.o \
John R. Lentonfca456b2014-01-15 01:37:08 +000064 objfilter.o \
Damien George136f6752014-01-07 14:54:15 +000065 objfloat.o \
66 objfun.o \
67 objgenerator.o \
Damien George7c9c6672014-01-25 00:17:36 +000068 objgetitemiter.o \
Damien George136f6752014-01-07 14:54:15 +000069 objint.o \
Paul Sokolovsky966879c2014-01-17 20:01:36 +020070 objint_longlong.o \
Damien George438c88d2014-02-22 19:25:23 +000071 objint_mpz.o \
Damien George136f6752014-01-07 14:54:15 +000072 objlist.o \
John R. Lenton39b174e2014-01-15 01:10:09 +000073 objmap.o \
Damien George136f6752014-01-07 14:54:15 +000074 objmodule.o \
Damien George3ec0a1a2014-03-22 21:31:28 +000075 objobject.o \
Damien George777b0f32014-04-13 18:59:45 +010076 objproperty.o \
Damien George136f6752014-01-07 14:54:15 +000077 objnone.o \
Paul Sokolovskyd08fd682014-02-27 22:22:04 +020078 objnamedtuple.o \
Damien George136f6752014-01-07 14:54:15 +000079 objrange.o \
Damien George4c03b3a2014-08-12 18:33:40 +010080 objreversed.o \
Damien George136f6752014-01-07 14:54:15 +000081 objset.o \
82 objslice.o \
83 objstr.o \
Paul Sokolovsky97319122014-06-13 22:01:26 +030084 objstrunicode.o \
Paul Sokolovskycb9dc082014-04-26 20:26:14 +030085 objstringio.o \
Damien George136f6752014-01-07 14:54:15 +000086 objtuple.o \
87 objtype.o \
Damien George55baff42014-01-21 21:40:13 +000088 objzip.o \
Paul Sokolovsky68e7c512014-04-13 11:53:15 +030089 opmethods.o \
Paul Sokolovsky439542f2014-01-21 00:19:19 +020090 sequence.o \
Paul Sokolovskye98cf402014-01-08 02:43:48 +020091 stream.o \
Paul Sokolovsky8bc35162014-02-14 17:16:35 +020092 binary.o \
Damien George136f6752014-01-07 14:54:15 +000093 builtin.o \
94 builtinimport.o \
Damien Georgeca476792014-02-03 22:44:10 +000095 builtinevex.o \
Damien Georgecaac5422014-03-25 14:18:18 +000096 builtintables.o \
97 modarray.o \
98 modcollections.o \
Paul Sokolovskyf9e54e02014-05-06 02:16:43 +030099 modgc.o \
Paul Sokolovsky98a627d2014-04-03 14:57:53 +0300100 modio.o \
Damien Georgecaac5422014-03-25 14:18:18 +0000101 modmath.o \
Damien Georgedbdfee12014-04-17 17:11:03 +0100102 modcmath.o \
Damien Georgecaac5422014-03-25 14:18:18 +0000103 modmicropython.o \
Paul Sokolovskye9db8402014-04-10 03:45:38 +0300104 modstruct.o \
Paul Sokolovsky5500cde2014-04-13 06:43:18 +0300105 modsys.o \
Damien George136f6752014-01-07 14:54:15 +0000106 vm.o \
Damien Georgeb534e1b2014-09-04 14:44:01 +0100107 bc.o \
Damien George136f6752014-01-07 14:54:15 +0000108 showbc.o \
109 repl.o \
Damien Georgeecf5b772014-04-04 11:13:51 +0000110 smallint.o \
Dave Hylandsbaf6f142014-03-30 21:06:50 -0700111 pfenv.o \
Paul Sokolovskycb66f412014-07-13 23:07:42 +0300112 pfenv_printf.o \
Paul Sokolovsky510296f2014-08-08 22:51:40 +0300113 ../extmod/moductypes.o \
Damien George612045f2014-09-17 22:56:34 +0100114 ../extmod/modujson.o \
Paul Sokolovskyc71e0452014-09-12 18:48:07 +0300115 ../extmod/modure.o \
Paul Sokolovsky34162872014-10-12 08:16:34 -0700116 ../extmod/moduzlib.o \
Damien Georgef5d69792014-10-22 17:37:18 +0000117 ../extmod/moduheapq.o \
Paul Sokolovskyf4b19c82014-11-22 01:19:13 +0200118 ../extmod/moduhashlib.o \
Damien George136f6752014-01-07 14:54:15 +0000119
120# prepend the build destination prefix to the py object files
Dave Hylandsc89c6812014-01-24 01:05:30 -0800121PY_O = $(addprefix $(PY_BUILD)/, $(PY_O_BASENAME))
Damien George136f6752014-01-07 14:54:15 +0000122
Dave Hylandsbf7d6902014-04-03 16:32:58 -0700123# Anything that depends on FORCE will be considered out-of-date
124FORCE:
125.PHONY: FORCE
126
Sven Wegenerbfb18a72014-11-05 21:02:43 +0100127$(HEADER_BUILD)/py-version.h: FORCE | $(HEADER_BUILD)
Dave Hylandsbf7d6902014-04-03 16:32:58 -0700128 $(Q)$(PY_SRC)/py-version.sh > $@.tmp
129 $(Q)if [ -f "$@" ] && cmp -s $@ $@.tmp; then rm $@.tmp; else echo "Generating $@"; mv $@.tmp $@; fi
130
Damien George55baff42014-01-21 21:40:13 +0000131# qstr data
132
Damien Georged553be52014-04-17 18:03:27 +0100133# Adding an order only dependency on $(HEADER_BUILD) causes $(HEADER_BUILD) to get
Dave Hylandsc89c6812014-01-24 01:05:30 -0800134# created before we run the script to generate the .h
Damien Georged553be52014-04-17 18:03:27 +0100135$(HEADER_BUILD)/qstrdefs.generated.h: $(PY_QSTR_DEFS) $(QSTR_DEFS) $(PY_SRC)/makeqstrdata.py mpconfigport.h $(PY_SRC)/mpconfig.h | $(HEADER_BUILD)
136 $(ECHO) "CPP $<"
137 $(Q)$(CPP) $(CFLAGS) $(PY_QSTR_DEFS) -o $(HEADER_BUILD)/qstrdefs.preprocessed.h
Damien George55baff42014-01-21 21:40:13 +0000138 $(ECHO) "makeqstrdata $(PY_QSTR_DEFS) $(QSTR_DEFS)"
Damien Georged553be52014-04-17 18:03:27 +0100139 $(Q)$(PYTHON) $(PY_SRC)/makeqstrdata.py $(HEADER_BUILD)/qstrdefs.preprocessed.h $(QSTR_DEFS) > $@
Damien George55baff42014-01-21 21:40:13 +0000140
141# emitters
142
Dave Hylandsc89c6812014-01-24 01:05:30 -0800143$(PY_BUILD)/emitnx64.o: CFLAGS += -DN_X64
144$(PY_BUILD)/emitnx64.o: py/emitnative.c
145 $(call compile_c)
Damien George136f6752014-01-07 14:54:15 +0000146
Damien Georgec90f59e2014-09-06 23:06:36 +0100147$(PY_BUILD)/emitnx86.o: CFLAGS += -DN_X86
148$(PY_BUILD)/emitnx86.o: py/emitnative.c
149 $(call compile_c)
150
Dave Hylandsc89c6812014-01-24 01:05:30 -0800151$(PY_BUILD)/emitnthumb.o: CFLAGS += -DN_THUMB
152$(PY_BUILD)/emitnthumb.o: py/emitnative.c
153 $(call compile_c)
Damien George136f6752014-01-07 14:54:15 +0000154
Fabian Vogtfe3d16e2014-08-16 22:55:53 +0200155$(PY_BUILD)/emitnarm.o: CFLAGS += -DN_ARM
156$(PY_BUILD)/emitnarm.o: py/emitnative.c
157 $(call compile_c)
158
Damien Georged3ebe482014-01-07 15:20:33 +0000159# optimising gc for speed; 5ms down to 4ms on pybv2
Paul Sokolovsky1c1d902c2014-04-24 02:59:43 +0300160$(PY_BUILD)/gc.o: CFLAGS += $(CSUPEROPT)
Damien Georged3ebe482014-01-07 15:20:33 +0000161
Damien George136f6752014-01-07 14:54:15 +0000162# optimising vm for speed, adds only a small amount to code size but makes a huge difference to speed (20% faster)
Paul Sokolovsky1c1d902c2014-04-24 02:59:43 +0300163$(PY_BUILD)/vm.o: CFLAGS += $(CSUPEROPT)