summaryrefslogtreecommitdiff
path: root/py/mkrules.mk
AgeCommit message (Collapse)Author
2016-06-16py/mkrules.mk: Define "lib" outside conditional block.Paul Sokolovsky
"lib" happened to be defined inside block conditional on $(PROG).
2016-04-26py/mkrules.mk: Typo fixes in comments.Paul Sokolovsky
2016-04-22py/mkrules.mk: Remove obsolete rules for auto qstr generation.Damien George
2016-04-19py: Divide "split" and "cat" phases of qstr extraction for better efficiency.Paul Sokolovsky
E.g. for stmhal, accumulated preprocessed output may grow large due to bloated vendor headers, and then reprocessing tens of megabytes on each build make take couple of seconds on fast hardware (=> potentially dozens of seconds on slow hardware). So instead, split once after each change, and only cat repetitively (guaranteed to be fast, as there're thousands of lines involved at most).
2016-04-19py/mkrules.mk: Fix Bashism.Paul Sokolovsky
2016-04-19py/mkrules.mk: Cleanup command passed to shell.Paul Sokolovsky
2016-04-19py/mkrules.mk: Try to detect and emulate make -B behavior for qstr extraction.Paul Sokolovsky
If make -B is run, the rule is run with $? empty. Extract fron all file in this case. But this gets fragile, really "make clean" should be used instead with such build complexity.
2016-04-19py: Rework QSTR extraction to work in simple and obvious way.Paul Sokolovsky
When there're C files to be (re)compiled, they're all passed first to preprocessor. QSTR references are extracted from preprocessed output and split per original C file. Then all available qstr files (including those generated previously) are catenated together. Only if the resulting content has changed, the output file is written (causing almost global rebuild to pick up potentially renumbered qstr's). Otherwise, it's not updated to not cause spurious rebuilds. Related make rules are split to minimize amount of commands executed in the interim case (when some C files were updated, but no qstrs were changed).
2016-04-16py/mkrules.mk: Suppress line-no output from CPP for qstr auto-gen.Jan Čapek
2016-04-16py/mkrules.mk: Add mpconfig[port].h dependency to qstr generating rule.Jan Čapek
2016-04-16py: Add rules for automated extraction of qstrs from sources.Jan Čapek
- add template rule that converts a specified source file into a qstring file - add special rule for generating a central header that contains all extracted/autogenerated strings - defined by QSTR_DEFS_COLLECTED variable. Each platform appends a list of sources that may contain qstrings into a new build variable: SRC_QSTR. Any autogenerated prerequisities are should be appened to SRC_QSTR_AUTO_DEPS variable. - remove most qstrings from py/qstrdefs, keep only qstrings that contain special characters - these cannot be easily detected in the sources without additional annotations - remove most manual qstrdefs, use qstrdef autogen for: py, cc3200, stmhal, teensy, unix, windows, pic16bit: - remove all micropython generic qstrdefs except for the special strings that contain special characters (e.g. /,+,<,> etc.) - remove all port specific qstrdefs except for special strings - append sources for qstr generation in platform makefiles (SRC_QSTR)
2015-12-10py/mkrules.mk: Don't pass COPT to linker.Paul Sokolovsky
Oftentimes, libc, libm, etc. don't come compiled with CPU compressed code option (Thumb, MIPS16, etc.), but we may still want to use such compressed code for MicroPython itself.
2015-10-24Makefiles: Remove duplicate object files when linking.Paul Sokolovsky
Scenario: module1 depends on some common file from lib/, so specifies it in its SRC_MOD, and the same situation with module2, then common file from lib/ eventually ends up listed twice in $(OBJ), which leads to link errors. Make is equipped to deal with such situation easily, quoting the manual: "The value of $^ omits duplicate prerequisites, while $+ retains them and preserves their order." So, just use $^ consistently in all link targets.
2015-10-12py: Allow to to build MicroPython as a static library.Paul Sokolovsky
The whole current port gets slurped into a static lib named "libmicropython.a". Maybe that's not ideal, but at least something to start with.
2015-08-17unix-cpy: Remove unix-cpy. It's no longer needed.Damien George
unix-cpy was originally written to get semantic equivalent with CPython without writing functional tests. When writing the initial implementation of uPy it was a long way between lexer and functional tests, so the half-way test was to make sure that the bytecode was correct. The idea was that if the uPy bytecode matched CPython 1-1 then uPy would be proper Python if the bytecodes acted correctly. And having matching bytecode meant that it was less likely to miss some deep subtlety in the Python semantics that would require an architectural change later on. But that is all history and it no longer makes sense to retain the ability to output CPython bytecode, because: 1. It outputs CPython 3.3 compatible bytecode. CPython's bytecode changes from version to version, and seems to have changed quite a bit in 3.5. There's no point in changing the bytecode output to match CPython anymore. 2. uPy and CPy do different optimisations to the bytecode which makes it harder to match. 3. The bytecode tests are not run. They were never part of Travis and are not run locally anymore. 4. The EMIT_CPYTHON option needs a lot of extra source code which adds heaps of noise, especially in compile.c. 5. Now that there is an extensive test suite (which tests functionality) there is no need to match the bytecode. Some very subtle behaviour is tested with the test suite and passing these tests is a much better way to stay Python-language compliant, rather than trying to match CPy bytecode.
2015-05-06mkrules.mk: Add comment why dependency parsing regex was tweaked.Paul Sokolovsky
(Windows compatibility.)
2015-05-06Adjust sed regex that processes dependency file from compilerAri Suutari
so that resulting file is correct also on windows systems (ie. with file names containing drive letter).
2015-04-28py: Replace py-version.sh with makeversionhdr.py, written in Python.Damien George
Also rename py-version.h to mpversion.h for consistency with mpconfig.h.
2014-11-06py: Fix order-only dependencies in mkrules.mk and py.mk.Sven Wegener
Currently compilation sporadically fails, because the automatic dependency gets created *during* the compilation of objects. OBJ is a auperset of PY_O and the dependencies apply to all objects. Signed-off-by: Sven Wegener <sven.wegener@stealer.net>
2014-07-02Merge branch 'teensy-new' of github.com:dhylands/micropython into ↵Damien George
dhylands-teensy-new Conflicts: stmhal/pin_named_pins.c stmhal/readline.c Renamed HAL_H to MICROPY_HAL_H. Made stmhal/mphal.h which intends to define the generic Micro Python HAL, which in stmhal sits above the ST HAL.
2014-06-20mkrules.mk: Pass $(COPT) to link stage.Paul Sokolovsky
In generalize case, optimization options should be passed to all stages of the build process.
2014-06-20makefile: Pass STRIPFLAGS_EXTRA to strip.Paul Sokolovsky
Expected to be set on command line, with the idea being that for different targets, there're different smartass ABIs which strive to put unneeded sections into executables, etc., so let people have flexible way to strip that. The option name is similar to previously introduced CLFAGS_EXTRA & LDFLAGS_EXTRA.
2014-06-15Updated teensy to build.Dave Hylands
Refactored some stmhal files which are shared with teensy.
2014-04-17build: Simplify build directory layout by putting all headers in genhdr.Damien George
Any generated headers go in $(BUILD)/genhdr/, and are #included as 'genhdr/xxx.h'.
2014-04-16build directory can now be renamedAndrew Scheller
The autogenerated header files have been moved about, and an extra include dir has been added, which means you can give a custom BUILD=newbuilddir option to make, and everything "just works" Also tidied up the way the different Makefiles build their include- directory flags
2014-04-15Fix parallel build.AZ Huang
2014-04-11Update mkrules.mkAndrew Scheller
make 'make clean' cleaner ;-)
2014-04-07Replace some Makefile commands with variables in py/mkenv.mkAndrew Scheller
2014-03-14stmhal - add pin mapping, gpio, exti, usrswDave Hylands
2014-01-25Fixed dependency problem for qstrdefs.generated.hDave Hylands
The problem manifests itself in make 4.0 I also fixed the LINK message when linking the final executable for unix and unix-cpy.
2014-01-24Rework makefiles. Add proper dependency checking.Dave Hylands