aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-06-05ninja: Quoting in rspfile depends on the compiler, not the shellJon Turney1-17/+48
In certain exotic configurations, the style of quoting expected in the response file may not match that expected by the shell. e.g. under MSYS2, ninja invokes commands via CreateProcess (which results in cmd-style quoting processed by parse_cmdline or CommandLineToArgvW), but gcc will use sh-style quoting in any response file it reads. Future work: The rspfile quoting style should be a method of the compiler or linker object, rather than hardcoded in ninjabackend. (In fact, can_linker_accept_rsp() should be extended to do this, since if we can accept rsp, we should know the quoting style)
2020-06-05ninja: Push ninja and shell quoting down into NinjaRuleJon Turney1-50/+91
Rather than ad-hoc avoiding quoting where harmful, identify arguments which contain shell constructs and ninja variables, and don't apply quoting to those arguments. This is made more complex by some arguments which might contain ninja variables anywhere, not just at start, e.g. '/Fo$out' (This implementation would fall down if there was an argument which contained both a literal $ or shell metacharacter and a ninja variable, but there are no instances of such a thing and it seems unlikely) $DEPFILE needs special treatment. It's used in the special variable depfile, so it's value can't be shell quoted (as it used as a filename to read by ninja). So instead that variable needs to be shell quoted when it appears in a command. (Test common/129, which uses a depfile with a space in it's name, exercises that) If 'targetdep' is not in raw_names, test cases/rust all fail.
2020-06-05Extended test case for special characters to compiler argumentsJon Turney4-0/+77
2020-06-05ninja: Refcount rsp and non-rsp rule usage separatelyJon Turney1-10/+26
We need to count rsp and non-rsp references separately, which we need to do after build statement variables have been set so we can tell the difference, which introduces a bit of complexity.
2020-06-05ninja: Expose response file rules in compdbJon Turney1-2/+6
Possibly this should now be done by marking rules as being wanted in compdb, rather than listing the rule names...
2020-06-05ninja: Only use response files when neededJon Turney1-20/+72
Writing rsp files on Windows is moderately expensive, so only use them when the command line is long enough to need them. This also makes the output of 'ninja -v' useful more often (something like 'cl @exec@exe/main.c.obj.rsp' is not very useful if you don't have the response file to look at) For a rule where using a rspfile is possible, write rspfile and non-rspfile versions of that rule. Choose which one to use for each build statement, depending on the anticpated length of the command line.
2020-06-05ninja: Rename 'rule' -> 'rulename' in NinjaBuildElementJon Turney1-6/+6
Rename 'rule' to 'rulename' in the NinjaBuildElement class, we're going to want a reference to the NinjaRule object as well.
2020-06-05Add a test case for very long command linesJon Turney4-0/+38
This exercises commands of about 20K in length Also test short commandlines to make sure they don't regress.
2020-06-05cmake: Skip MSVC like compilers, since C++11 is not supportedDaniel Mensinger1-0/+5
2020-06-05cmake: added docsDaniel Mensinger2-3/+91
2020-06-05cmake: added test caseDaniel Mensinger9-0/+151
2020-06-05cmake: Add more advanced subproject configuration optionsDaniel Mensinger5-20/+223
This is done with the new cmake subprojects options object that is similar to the already exisiting configuration data object. It is consumed by the new `options` kwarg of the cmake.subproject function.
2020-06-05CompilerArgs: refactor __iadd__Marcel Hollerbach1-18/+64
the previous optimizations from 4524088d386d2e2315d8fef6ffedc11d8e9a394a were not relaly good, and not really scaleable, since only the lookup was improved. However, the really heavy calls to remove have not been improved. With this commit we are refactoring CompilerArgs into a data structure which does not use remove at all. This works that we are building a pre and post list, which gets flushed into __container at some point. However, we build pre and post by deduplicating forward. Later on, when we are flushing pre and post into __container, we are deduplicating backwards the list, so we are not changing behaviour here. This overall cuts off 10s of the efl configuration time. Further more this improves configure times on arm devices a lot more, since remove does seem to be a lot slower there. In general this results in the fact that __iadd__ is not within the top 5 of costly functions in generate_single_complie.
2020-06-05Revert "CompilerArgs: make lookup faster"Marcel Hollerbach1-26/+7
This was a not so nice solution, and should be replaced with something better. This reverts commit 4524088d386d2e2315d8fef6ffedc11d8e9a394a.
2020-06-05cache up regex mathingsMarcel Hollerbach1-2/+6
the names passed in here are often the same. We should ensure that we cache the regex match, as this will speed up our runtime a lot.
2020-06-05ninjabackend: cache calls to normpathsMarcel Hollerbach1-1/+5
calls to normpaths are expansive. We should cache the results. This safes 2s in the configure time of efl.
2020-06-04Add libeconf to users.mdRichard Brown1-0/+1
libeconf is now using meson as its primary/default build system, so we'd like to see ourselves on the meson users list .
2020-06-04mesonlib.py: refactored detect_vcs() to use pathlib.Path (#7230)Joshua Gawley1-7/+11
2020-06-04Add android to os list informally. Closes #6233. [skip ci]Jussi Pakkanen1-0/+1
2020-06-03[skip ci] mesonwrap docs: fix a broken linkLisa White1-1/+1
2020-06-02Ignore file access errors when scanning .so files in system libdirsMike Gilbert1-9/+18
Bug: https://bugs.gentoo.org/726524
2020-06-02cmake: always split property lists (fixes #7228)Daniel Mensinger3-4/+5
2020-06-02dependencies/cuda: Add support for ARM linuxjonathanmist1-6/+10
2020-06-02docs/unit-tests: Show a test can have multiple suites [skip ci]Ebrahim Byagowi1-1/+1
2020-06-02[skip ci] mesonwrap docsLisa White4-31/+62
- Add ambiguous naming documentation. - Update branch request documentation. - Add mesonwrap token documentation. - Update review guidelines.
2020-06-02[skip ci] mesonwrap docs: limit line length and remove trailing spacesLisa White1-10/+14
2020-05-27Merge pull request #6818 from mensinda/localPatchJussi Pakkanen16-26/+76
Wrap: add local files support via *_filename
2020-05-27add type anno: compilers/clikeMichael Hirsch, Ph.D2-18/+18
2020-05-27ninja: Always use to_native on CompilerArgs (fixes #7167)Daniel Mensinger4-9/+23
2020-05-27Fix lack of space after 'Cflags:' in pkgconfig filesSoapux1-1/+1
2020-05-27Recognize Arduino .ino files as C++Phillip Johnston1-1/+1
Renaming .ino files is not an option when working with the IDE. Meson should recognize it as C++ however.
2020-05-27docs: Fix typo in Release notes [skip ci]Soapux1-1/+1
2020-05-26opts: added docsDaniel Mensinger2-0/+17
2020-05-26opts: Add FeatureNew for '-' and 'not' introduced in 0.54.1Daniel Mensinger1-0/+2
2020-05-26opts: Allow string concatenation (fixes #7199)Daniel Mensinger2-3/+10
2020-05-26mcompile: removed unneeded importsTheQwertiest1-2/+0
2020-05-26mcompile: detect_ninjaTheQwertiest1-8/+3
2020-05-26mcompile: replaced intro with cdata + extracted code to funcsTheQwertiest1-60/+63
2020-05-26mcompile: replaced backend divination code + cleanupTheQwertiest1-11/+24
2020-05-26Merge pull request #7197 from jon-turney/test-output-check-mandatoryJussi Pakkanen11-40/+115
Make the expected output check mandatory for failing-meson and warning-meson tests
2020-05-26Use --internal script call to call delwithsuffix when cleaning up the gcno ↵georgev931-6/+2
and gcda files in a coverage enabled build. Otherwise, meson will crash when running from an MSI installation.
2020-05-24fixed typop01arst0rm1-1/+1
2020-05-24fix cmake target configuration selection.Alexander Neumann2-5/+19
2020-05-24Merge pull request #6765 from mensinda/astDump2Jussi Pakkanen10-32/+344
mintro: AST JSON printer
2020-05-23Clear internal caches before running each test.Jussi Pakkanen1-0/+10
2020-05-23Add expected stdout for failing-meson tests which are missing itJon Turney10-0/+70
2020-05-23Make expected stdout mandatory for warning-meson and failing-meson testsJon Turney1-40/+45
Unify present or absent test.json file cases in gather_tests Make expected stdout mandatory in test.json for some test categories Use a trivial TestCategory class rather than a tuple, to make it easier to default category attributes
2020-05-23ast: Add docs for --astDaniel Mensinger2-18/+73
2020-05-23ast: add unittestDaniel Mensinger2-2/+92
2020-05-23ast: Handle NotNodeDaniel Mensinger1-0/+5