aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
AgeCommit message (Collapse)AuthorFilesLines
2022-12-11CUDA: Update compute-capability limits logic for CUDA 12.Olexa Bilaniuk1-0/+8
In particular, CUDA 12 removes support for Kepler (3.x) entirely. Unusually, however, it does not introduce any new architectures, or even compute capabilities.
2022-12-11CUDA: Add listing for newly-released CUDA 12 in minimum driver version table.Olexa Bilaniuk1-0/+1
2022-12-11Merge pull request #11024 from dcbaker/submit/bindgen-dependenciesJussi Pakkanen1-15/+25
Add a `dependencies` keyword argument to bindgen
2022-12-10Bump version numbers for rc1.1.0.0rc1Jussi Pakkanen1-1/+1
2022-12-09Merge pull request #10990 from xclaesse/devenvJussi Pakkanen6-63/+67
devenv: various improvements
2022-12-09python module: don't overwrite and destroy the .pc dependency nameEli Schwartz1-1/+0
When finding a py.dependency() we try to use pkg-config. We then apply our own custom base class, which replaces self.name with the informative comment "override the name from the "real" dependency lookup", to which I can only say "uhhh why". Why do we want to do that??? It turns out we don't, it was just a really old legacy design because we had a SystemDependency with a .pkgdep attribute hiding the real dependency bizarro-land style. We cleaned that up in commit 4d67dd19e5b7dcec6716840d30984fa41eef55c6 and as part of that, we *shifted over* the self.name assignment to preserve the visible effects, sort of. We didn't have a *reason* to override the name, we just did it because... we weren't sure whether it mattered. Unfortunately it very much does matter the other way -- we don't want it. We can pass this dependency to the pkgconfig module, which uses the name attribute to fill out the `Requires: ` field. Also, the name should name what we have. :p Get rid of this bizarre historic quirk. Since we have proper dependencies here, we should go all in. Fixes https://github.com/ufo-kit/ufo-core/pull/185#issuecomment-1328224996
2022-12-07utils: Fix pylint warning using-constant-testL. E. Segovia1-1/+1
2022-12-07wrap: Don't use --branch with shallow clones against HEADL. E. Segovia1-2/+5
Fixes #10931
2022-12-07devenv: Set QEMU_LD_PREFIX to sys_rootXavier Claessens1-1/+6
When the cross file has a sys_root, it is most probably needed to run executables with qemu.
2022-12-07Remove useless EmptyExternalProgramXavier Claessens4-31/+6
It is only used by Environment.get_exe_wrapper() and every callers were handling None already. Type annotation was wrong, it already could return None for the case an exe wrapper is needed but none is provided.
2022-12-07devenv: Always include env for HOST machineXavier Claessens2-3/+9
Cross compiled executables could still be run with an exe wrapper, or with proper binfmt installed. Fixes: #10999
2022-12-07devenv: Add executables locations to both PATH and WINEPATHXavier Claessens1-7/+12
Handles the case when wine-binfmt is installed, which makes .exe files executable without without specifying an exe wrapper.
2022-12-07devenv: Do not include system values in --dumpXavier Claessens2-13/+14
This makes --dump print variables like `FOO=/path:$FOO:/another/path`.
2022-12-06interpreter: compiler: Allow array for the prefix kwargMarvin Scholz1-1/+7
2022-12-06devenv: Add more info how to get gdb scripts workingXavier Claessens1-3/+12
Now that top builddir is not the default workdir any more, the .gdbinit file we write there won't be loaded automatically unless user cd there, or use --init-command. There is also a global setting that user has to set to allow automatically loading .gdbinit file.
2022-12-06devenv: Add --workdir optionXavier Claessens1-7/+10
Most of the time it is preferable to remain the the top source dir instead of going into the builddir. Add --workdir argument to be able to have a different workdir than builddir, but keep it default to builddir for backward compatibility, and also because it makes gdb integration better.
2022-12-05mtest: warn on invalid TAP outputEli Schwartz1-1/+32
In commit a7e458effadbc884eacf34528df3a57b60e43fe3 we stopped erroring out on invalid TAP stream contents, with the rationale that "prove" has become more lenient. A close reading of the TAP spec indicates why, though: > A TAP parser is required to not consider an unknown line as an error but > may optionally choose to capture said line and hand it to the test > harness, which may have custom behavior attached. This is to allow for > forward compatability. Test::Harness silently ignores incorrect lines, > but will become more stringent in the future. TAP::Harness reports TAP > syntax errors at the end of a test run. The goal of treating unknown lines as an error in the TAP parser is not because unknown lines are fine and dandy. The goal is to allow implementing future versions of TAP, and handling it via existing parsers. Since Meson has both a parser and a harness, let's do exactly that -- pass these lines as a distinctive status to the test harness, then have the test harness complain.
2022-12-05mtest: early return when parsing blank lines in TAPEli Schwartz1-1/+1
Just like comment lines, blank lines do nothing. Before commit a7e458effadbc884eacf34528df3a57b60e43fe3 we ended off the parser by returning if the line was blank, because we needed to in order to catch non-blank lines as errors. But really, we should have always returned much earlier and not wasted time attempting to process anything.
2022-12-05when generating optional utility targets in ninja, skip existing aliases tooEli Schwartz3-11/+6
When auto-generating e.g. a `clang-format` target, we first check to see if the user has already defined one, and if so we don't bother creating our own. We check for two things: - if a ninja target already exists, skip - if a run_target was defined, skip The second check is *obviously* a duplicate of the first check. But the first check never actually worked, because all_outputs was only generated *after* generating all utility rules and actually writing out the build.ninja file. The check itself compares against nothing, and always evaluates to false no matter what. Fix this by reordering the target creation logic so we track outputs immediately, but only error about them later. Now, we no longer need to special-case run_target at all, so we can drop that whole logic from build.py and interpreter.py, and simplify the tracked state. Fixes defining an `alias_target()` for a utility, which tried to auto-generate another rule and errored out. Also fixes doing the same thing with a `custom_target()` although I cannot imagine why anyone would want to produce an output file named `clang-format` (unless clang itself decided to migrate to Meson, which would be cool but feels unlikely).
2022-12-05on newer versions of clang-format, use builtin --check handlingEli Schwartz1-2/+10
Due to a deficiency in upstream clang-format, our automatic target for `ninja clang-format-check` runs clang-format, then compares the bytes of the file before and after to see if anything changed. If it did change, we rewrite the file back to its original form and error out. Since clang-format 10, there is an option to report warnings instead of writing the reformatted file, and also, to make those warnings fatal. This is a much better user experience, to see *what* is wrong, not just that something is wrong, and also gets rid of a pretty gross "modify your files when you didn't ask for it" behavior that is vulnerable to getting interrupted. Let's switch over to the new approach, if we can.
2022-12-05modules/rust: Add support for dependencies in bindgenDylan Baker1-3/+16
This is needed for cases where we need external C headers, which are passed to clang.
2022-12-05modules/rust: Use `__future__.annotations`Dylan Baker1-6/+7
2022-12-05modules/rust: use the shared DEPENDENCIES_KWDylan Baker1-6/+2
2022-12-05modules/rust: Add support for string include_directoriesDylan Baker1-3/+3
Which we support for basically every other case, but not this one.
2022-12-05modules: Add a method to the state object for include_dirsDylan Baker1-1/+15
The Interpreter has a method for this, and the module state just wraps it.
2022-12-05type_checking: add a type checking helper for strings in include_directoriesDylan Baker1-0/+9
2022-12-05interpreter: add a feature_validator to KwargInfoDylan Baker1-0/+9
Because sometimes we simply need to open code FeatureNew and FeatureDeprecated checks, but in a re-usable way.
2022-12-05interpreter: move TEST_KW from interpreter.py to type_checking.pyDylan Baker3-23/+24
Since it's also used in the rust module, it should be in a common place. Also rename from `TEST_KWARGS` to `TEST_KWS`, which is more in line with the `*_KW` naming scheme used in the type_checking module.
2022-12-04dependencies: only print not_found_message onceMichael Champanis1-1/+0
Due to an accidentally repeated line it would print twice unless required. Fixes #8150
2022-12-04hdf5 dependency: correctly use machine files and respect crossEli Schwartz1-4/+5
We do some magic to figure out what names of pkg-config dependencies to even search for. This magic simply checked for `pkg-config` the $PATH executable, which was broken in a variety of ways and had a comment to that effect.
2022-12-04refactor pkg-config dependency to allow statically finding the programEli Schwartz1-32/+36
The pkg-config dependency class has some interesting logic for finding a good pkg-config that will be used for dependency lookups. We sometimes need to use it, though, outside of the class. Make that possible.
2022-11-30pylint: enable the set_membership pluginDylan Baker33-63/+62
Which adds the `use-set-for-membership` check. It's generally faster in python to use a set with the `in` keyword, because it's a hash check instead of a linear walk, this is especially true with strings, where it's actually O(n^2), one loop over the container, and an inner loop of the strings (as string comparison works by checking that `a[n] == b[n]`, in a loop). Also, I'm tired of complaining about this in reviews, let the tools do it for me :)
2022-11-30devenv: avoid overwriting internal variables of the global argparseEli Schwartz1-3/+3
We already use options.command for the subcommand in use, in this case devenv. We cannot reuse that variable name for the list of words to execute inside the devenv.
2022-11-30tests: Write out LD_LIBRARY_PATH for built shared librariesDaniel Stone1-1/+14
When a test executable references a local shared library, make sure that we apply the appropriate $LD_LIBRARY_PATH so that the linker can find it at runtime. The DT_RUNPATH entry does ensure that the binary references the path to the shared library build, however the RUNPATH list is only searched after $LD_LIBRARY_PATH. So if the user has a shared library of the same name in their $LD_LIBRARY_PATH, this will be the version found and used for running the test. This is bad if you're trying to use Meson to test a shared library you're developing and have installed in a local prefix which is under $LD_LIBRARY_PATH. Fixes #1635
2022-11-30pylint: enable simplifiable-if-statementDylan Baker2-9/+2
2022-11-30pylint: enable use-implicit-booleaness-not-comparisonDylan Baker1-1/+1
2022-11-29pylint: enable the bad_builtin checkerDylan Baker11-17/+15
This finds uses of deny-listed functions, which defaults to map and filter. These functions should be replaced by comprehensions in idiomatic python because: 1. comprehensions are more heavily optimized and are often faster 2. They avoid the need for lambdas in some cases, which make them faster 3. you can do the equivalent in one statement rather than two, which is faster 4. They're easier to read 5. if you need a concrete instance (ie, a list) then you don't have to convert the iterator to a list afterwards
2022-11-29pylint: enable useless-returnDylan Baker2-2/+0
2022-11-29pylint: enable used-before-assignmentDylan Baker1-1/+3
The one case of this was a false-positive, but what we were doing (checking locals()) is not idiomatic. I've replaced the call to `locals()` with the obvious `var: T.Optional[str] = None` with check instead.
2022-11-29pylint: enable implicit-str-concatDylan Baker1-1/+1
Which catches a very real bug. The zlib system dependency failed to work on MSVC since initial implementation in commit c1a3b37ab7e4ccf3a946ee4ba6da81a4c230ecc4 -- it looked for the wrong name.
2022-11-29CUDA: Update minimum driver version table to include CUDA 11.8Olexa Bilaniuk1-0/+2
Agrees with Release Notes, Section 1.1, Table 3. https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
2022-11-29CUDA: Bugfix to architectural limit checks.Olexa Bilaniuk1-2/+2
The upper bound on the CUDA Compute Capability is not always known. Avoid checking cuda_hi_limit_gpu_architecture if it remains undefined.
2022-11-29CUDA: Add Orin, Lovelace and Hopper architecture names for CUDA 11.8Olexa Bilaniuk1-3/+15
Co-authored-by: David Seifert <soap@gentoo.org>
2022-11-29Fix crash when toolchain is missingSmallWood-D8-15/+26
Add a MissingCompiler class returned by compiler detecting methods intead of None - accessing such an object raises a DependencyException Fixes #10586 Co-authored-by: duckflyer <duckflyer@gmail.com>
2022-11-29Don't ignore documentation-related flags for D compilersAxel Ricard1-1/+3
Fixes #11085
2022-11-28utils: Popen_safe: Handle ENOEXEC to fail with an error messageMarvin Scholz1-6/+14
This is much cleaner than to show a stack trace, where it is hard to figure out what is going wrong.
2022-11-27Add warning_level=everythingDavid Robillard16-41/+322
Adds a new maximum warning level that is roughly equivalent to "all warnings". This adds a way to use `/Wall` with MSVC (without the previous broken warning), `-Weverything` with clang, and almost all general warnings in GCC with strictness roughly equivalent to clang's `-Weverything`. The GCC case must be implemented by meson since GCC doesn't provide a similar option. To avoid maintenance headaches for meson, this warning level is defined objectively: all warnings are included except those that require specific values or are specific to particular language revisions. This warning level is mainly intended for new code, and it is expected (nearly guaranteed) that projects will need to add some suppressions to build cleanly with it. More commonly, it's just a handy way to occasionally take a look at what warnings are present with some compiler, in case anything interesting shows up you might want to enable in general. Since the warnings enabled at this level are inherently unstable with respect to compiler versions, it is intended for use by developers and not to be set as the default.
2022-11-24Ignore unused compiler options for "meson configure"Loïc Yhuel1-1/+1
"meson setup" ignores unused compiler options, like "cpp_args" on a project without C++. "meson configure" doesn't have the filtering from "set_default_options", so it fails with : ERROR: Unknown options: "cpp_args" So now unused compiler options (ie not in coredata.options) are no longer marked unknown. Fixes: #11060
2022-11-24Fix various spelling errorsDavid Robillard8-10/+10
Found with codespell.
2022-11-24migrate some type comments to modern type annotationsEli Schwartz1-54/+54
flake8 6 upgrades to pyflakes 3, and in turn this means that support for parsing `# type: ` style annotations has been removed. https://github.com/PyCQA/pyflakes/pull/684 This caused one file to fail linting, because it had a typing import which was only used by a type comment. ``` mesonbuild/cmake/interpreter.py:55:5: F401 '.common.CMakeConfiguration' imported but unused ``` Updating it to actual annotations allows pyflakes to detect its usage again, and flake8 passes. Do the whole file while we are here.