aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/mesonlib.py
AgeCommit message (Collapse)AuthorFilesLines
2019-09-25Add helper to print warnings onceZbigniew Jędrzejewski-Szmek1-1/+14
The helper is general, although in this patch it is only used for warnings. No functional change intended.
2019-09-24CUDA support on WindowsAleksey Gurtovoy1-0/+30
2019-09-13get_library_dirs: Add Solaris 64-bit library subdirsAlan Coopersmith1-0/+8
Solaris puts 32-bit libraries in the main /lib & /usr/lib directories and 64-bit libraries in platform specific subdirectories. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2019-09-05mesonlib.split_args/quote_arg/join_argsAleksey Gurtovoy1-1/+79
2019-08-24wine: Try to get the short paths when generating WINEPATHThibault Saunier1-0/+34
The size of WINEPATH is limited (1024 [until recently]), we can very easily reach that limit, and even the new one (2048) so try to keep path as small as possible by using the shortPath version of paths. Also assert that we do not reach the new hard limit. And avoid having duplicates in the list of path. [until recently]: https://bugs.winehq.org/show_bug.cgi?id=45810
2019-08-23Support NetBSD aarch64 and earm.nia1-0/+3
2019-08-17Only iterate over existing libdirs.Jussi Pakkanen1-2/+6
2019-07-23mesonlib: Annotate Popen_safe functionsDylan Baker1-4/+11
These are used in linkers.py and need to be annotated to make linkers.py 100% clean
2019-07-20Add optional progress bar when generating build.ninjaNirbheek Chauhan1-0/+55
2019-07-08type hints @dcbakerMichael Hirsch, Ph.D1-6/+5
2019-07-08add clang c_std=c18 aliasMichael Hirsch, Ph.D1-3/+3
fix unit test skips for clang c18 correct unittests clang minimum version cleanup unittest clang skip c_std finesse unittest vs. clang version
2019-06-09remove `for_XXX` functions from mesonlibJohn Ericson1-70/+0
All uses now use `env.machines.YYY.is_XXX` instead.
2019-06-09Use `env.machines.*` to avoid some `is_cross`John Ericson1-39/+21
This is a small example of the `is_cross` removal the that abstraction enables.
2019-06-05Per machine do 'build.' and '' option prefixesJohn Ericson1-5/+7
See the docs/ changes for details.
2019-05-28BUGFIX variable name #5285Michael Hirsch, Ph.D1-2/+4
handle x86 correctly
2019-05-16Merge pull request #5395 from dcbaker/mtest-annotationsJussi Pakkanen1-1/+1
Mtest annotations and bug fixes
2019-05-16Make `PerMachine` and `MachineChoice` have just `build` and `host`John Ericson1-7/+90
Meson itself *almost* only cares about the build and host platforms. The exception is it takes a `target_machine` in the cross file and exposes it to the user; but it doesn't do anything else with it. It's therefore overkill to put target in `PerMachine` and `MachineChoice`. Instead, we make a `PerThreeMachine` only for the machine infos. Additionally fix a few other things that were bugging me in the process: - Get rid of `MachineInfos` class. Since `envconfig.py` was created, it has no methods that couldn't just got on `PerMachine` - Make `default_missing` and `miss_defaulting` work functionally. That means we can just locally bind rather than bind as class vars the "unfrozen" configuration. This helps prevent bugs where one forgets to freeze a configuration.
2019-05-14mesonlib: Annotate substring_in_listDylan Baker1-1/+1
for mtest
2019-05-13This is the fork "sneyx1234/meson" of the current git "mesonbuild/meson" ↵Simon Ney1-0/+3
head to converge it to the solaris 11.4 platform based on the sparcv9 and i386 processor architecture. The purpose is to complete the porting related to the fork "sneyx1234/ast" of "att/ast" the "AT&T kornshell".
2019-05-02mesonlib: Make a few type annotations stringsDylan Baker1-1/+2
Mypy know what to do with these and isn't confused, but some versions of python 3.5 (at least 3.5.2) can't handle these annotations. By making them strings the python interpreter wont try to evaluate them. Fixes #5326
2019-05-02Merge pull request #5311 from mensinda/flake8PluginsJussi Pakkanen1-8/+8
Added flake8 plugins and some code fixes
2019-05-02Add some type annotations and fix lintsJohn Ericson1-5/+3
Some things, like `method[...](...)` or `x: ... = ...` python 3.5 doesn't support, so I made a comment instead with the intention that it can someday be made into a real annotation.
2019-05-01Don't close fds when executing programsMichael Olbrich1-1/+1
This is basically the same as #1612 just for new new Popen_safe_legacy().
2019-04-29Fix builtin variable namesDaniel Mensinger1-8/+8
2019-04-28Merge pull request #5265 from dcbaker/more-annotationsJussi Pakkanen1-9/+21
Fully annotate the envconfig and mlog modules
2019-04-25mesonlib: Reimplement version comparison for speedDylan Baker1-14/+25
2019-04-25mesonlib: Remove useless repetition of the same checkDylan Baker1-10/+1
due to refactoring this is now useless.
2019-04-25mesonlib: specialize the implementation of == and !=Dylan Baker1-1/+8
Instead of using the ___cmp__ method just straight up compare the two values, since we've already converted numbers to ints and split non-numeric seperators this is sufficient, and 4x faster
2019-04-25mesonlib: use ints instead of strings for numbersDylan Baker1-6/+7
makes version comparisons even faster
2019-04-25mesonlib: use zip() in VersionDylan Baker1-6/+6
Instead of range. This makes version comparison 25-50% faster depending on the operator and how different the values are.
2019-04-22mesonlib: Add some type annotationsDylan Baker1-9/+21
Just enough to make mlog and envconfig happy
2019-03-20replace library type strings with an enumDylan Baker1-0/+10
This patch creates an enum for selecting libtype as static, shared, prefer-static, or prefer-shared. This also renames 'static-shared' with 'prefer_static' and 'shared-static' with 'prefer_shared'. This is just a refactor with no behavioral changes or user facing changes.
2019-02-20Fix get_library_dirs() on FreeBSDNiclas Zeising1-0/+2
Fix get_library_dirs() on FreeBSD to only return /usr/local/lib, /usr/lib and /lib as the default location to look for libraries. FreeBSD does not use lib/${platform} or lib64 by default. In general, those directories should not exist, but in case they do, ensure they're not picked up.
2019-02-20Fix default_libdir() on FreeBSDNiclas Zeising1-0/+2
Fix defaul_libdir() on FreeBSD. The current behaviour of using usr/lib64 if that exists is wrong on FreeBSD. The default should be to always use usr/lib, even if usr/lib64 exists as a folder in the file system. Fix this by checking if we're running on FreeBSD and then always return 'lib' in default_libdir().
2019-02-13add type hintingMichael Hirsch, Ph.D1-44/+45
more type hints syntax modernization / robustify syntax typo more effective directory collection
2019-02-11mesonlib: Use class syntax for defining MachineChoiceDylan Baker1-1/+9
Mypy struggles with the imperative form of Enum declaration, and upstream doesn't consider it a bug, they recomend using the class form for enums that are going to be externally exposed.
2019-02-01macos: lipo outputs aarch64 as arm64, fix itNirbheek Chauhan1-0/+1
Or we'll reject arm64 objects as invalid when building for aarch64
2019-01-31macos: lipo from older xcode does not support -archsNirbheek Chauhan1-1/+2
2019-01-31find_library: Check arch of libraries on DarwinNirbheek Chauhan1-0/+18
macOS provides the tool `lipo` to check the archs supported by an object (executable, static library, dylib, etc). This is especially useful for fat archives, but it also helps with thin archives. Without this, the linker will fail to link to the library we mistakenly 'found' like so: ld: warning: ignoring file /path/to/libfoo.a, missing required architecture armv7 in file /path/to/libfoo.a
2019-02-01Rewrite appleframework and extraframework dependency classesNirbheek Chauhan1-0/+3
Instead of only doing a naive filesystem search, also run the linker so that it can tell us whether the -F path specified actually contains the framework we're looking for. Unfortunately, `extraframework` searching is still not 100% correct in the case when since we want to search in either /Library/Frameworks or in /System/Library/Frameworks but not in both. The -Z flag disables searching in those prefixes and would in theory allow this, but then you cannot force the linker to look in those by manually adding -F args, so that doesn't work.
2019-01-29pep8 py37Michael Hirsch, Ph.D1-1/+1
2019-01-24configure_file: preserve newlines of the input file. Fixes #4817Christoph Reiter1-2/+2
In some cases (see #4817) it's helpful if the output file uses the same newlines as the input file without translating them to the platform defaults. open() by default recognizes all newline styles and translates them to "\n" and then to the platform default when writing. Passing "" to "newline" disables the translation and lets us pass through the original newline characters.
2018-12-20msetup: Fix callig meson --wipe inside a build directoryDylan Baker1-0/+16
This seems to be related to deleting the current working directory. Simply deleting all of the trees inside the build directory instead seems to fix it. This only appears with some combination of generated targets, running the test case against say "1 trivial" doesn't show the bug. See this mesa bug: https://bugs.freedesktop.org/show_bug.cgi?id=109071
2018-11-02meson: performance optimizethe file objectMarcel Hollerbach1-0/+5
reduce the amount of access calls to the os. This safes ~1 sec. build time
2018-10-28Fix bug in PerMachine constructorJohn Ericson1-1/+1
Don't make single element tuple
2018-10-25Merge pull request #4326 from Ericson2314/per-machineJussi Pakkanen1-23/+88
Start leveraging MachineInfo with for_* methods
2018-10-10os.path.relpath() can fail on WindowsJon Turney1-0/+9
If builddir and sourcedir have different drive letters, a relative path doesn't exist, and os.path.relpath fails with a ValueError exception. This just fixes the places which are hit by test cases in a simple-minded way. There are several other uses of os.path.relpath(), which might be suspect.
2018-10-05Rewrite `for_*` machine checks in terms of MachineInfo and phase outJohn Ericson1-23/+39
It's much better to directly query the machine in question rather than do some roundabout "is_cross" thing. This is the first step for much natve- and cross- code path deduplication.
2018-10-05Pull out essence total map essence of MachineInfos into PerMachineJohn Ericson1-0/+49
We'll eventually have many other data structure duplicated for each build, host, and target machines. This sets up the infrastructure for that.
2018-10-04Move set_meson_command() to mesonlibXavier Claessens1-0/+17