aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
AgeCommit message (Collapse)AuthorFilesLines
2020-08-03Merge remote-tracking branch 'upstream/master' into lang-enumlang-enumJohn Ericson72-1994/+4470
2020-08-02Make meson recognize the Qualcomm LLVM toolchainAntony Chan3-2/+17
Meson calls `path/to/clang++ --version` to guess which build toolchain the user has picked to build the source code. For the Qualcomm LLVM toolchain, the output have an unusual output as shown below: ``` clang version 8.0.12 Snapdragon LLVM ARM Compiler 8.0.12 (based on llvm.org 7.0+) Target: arm-unknown-linux-gnueabi Thread model: posix Repository: (ssh://git-hexagon-aus.qualcomm.com:...) InstalledDir: /pkg/qct/software/llvm/release/arm/8.0.12/bin ``` Another unusual pattern is the output of `path/to/ld.qcld --version`: ``` ARM Linker from Snapdragon LLVM ARM Compiler Version 8.0.12 ARM Linker based on LLVM version: 8.0 ``` The Meson logic is modified accordingly so that Meson can correctly determine toolchain as "LLVM aarch64 cross-compiler on GNU/Linux64 OS". This is the expected output of `meson --native-file native_file.ini --cross-file cross_file.ini build/aarch64-debug/`: ``` ... C++ compiler for the host machine: ... (clang 8.0.12 "clang version 8.0.12") C++ linker for the host machine: ... ld.lld 8.0.12 ... ```
2020-08-01Put machine file and cmd line parsing in EnvironmentDylan Baker4-133/+179
This creates a full set of option in environment that mirror those in coredata, this mirroring of the coredata structure is convenient because lookups int env (such as when initializing compilers) becomes a straight dict lookup, with no list iteration. It also means that all of the command line and machine files are read and stored in the correct order before they're ever accessed, simplifying the logic of using them.
2020-08-01push all config-file settings into coredata.set_default_optionsDylan Baker1-37/+32
This puts all of them together, in the next patch they'll be pulled back out, but it's convenient to start that refactor by moving them all there, then moving them into env as a whole.
2020-08-01mesonlib: Add repr() methods to PerMachine classesDylan Baker1-0/+12
Which is super helpful in debuggers
2020-08-01machine-files: deprecate the paths sectionDylan Baker3-64/+7
2020-08-01coredata: fix type annotationDylan Baker1-1/+1
2020-08-01machine-files: give better error messages about using integersDylan Baker1-3/+9
2020-08-01Allow setting built-in options from cross/native filesDylan Baker3-13/+65
This is like the project options, but for meson builtin options. The only real differences here have to do with the differences between meson builtin options and project options. Some meson options can be set on a per-machine basis (build.pkg_config_path vs pkg_config_path) others can be set on a per-subproject basis, but should inherit the parent setting.
2020-08-01mconf/mintro: use authoritative list of options from coredataDylan Baker3-38/+19
This splits the directory options and non-directory options into two dicts, and then merges them later to maintain API.
2020-07-30Allow setting project options from cross or native filesDylan Baker2-1/+28
This allows adding a `[project options]` section to a cross or native file that contains the options defined for a project in it's meson_option.txt file.
2020-07-30Support armel/armhf builds on native arm64 hosts.Mark Hindley1-1/+2
2020-07-30pkgconfig: Fix various corner casesXavier Claessens2-29/+75
See unit tests for the exact scenarios this PR fixes.
2020-07-30Merge pull request #7494 from keszybz/fix-two-warningsJussi Pakkanen3-6/+9
Fix two warnings
2020-07-30mtest: report failures and overall summary *after* test(s) logsCamilo Celis Guzman1-2/+8
2020-07-30backends: fix rpath match patternJames Hilliard1-2/+28
Since -Wl,-rpath= is not the only valid rpath ldflags syntax we need to try and match all valid rpath ldflags. In addition we should prevent -Wl,--just-symbols from being used to set rpath due to inconsistent compiler support. Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
2020-07-28Fix typoZbigniew Jędrzejewski-Szmek1-1/+1
2020-07-28Avoid warning about multiple outputs when building private directory nameZbigniew Jędrzejewski-Szmek1-3/+3
Fixup for b4b1a2c5a145c1459fc4563a289e164e23bd6a02. A warning would be printed for any rule with multiple outputs, for example: WARNING: custom_target 'coredump.conf.5' has more than one output! Using the first one. WARNING: custom_target 'dnssec-trust-anchors.d.5' has more than one output! Using the first one. WARNING: custom_target 'halt.8' has more than one output! Using the first one. Fixes https://github.com/systemd/systemd/issues/16461.
2020-07-28Only emit warning about "native:" on projects with minimum required versionZbigniew Jędrzejewski-Szmek1-2/+5
'native:' keyword was only added in 0.54. For projects declaring meson_version >= 0.54, warn, because those projects can and should set the keyword. For older projects declaring support for older versions, don't warn and use the default implicitly. Fixes https://github.com/mesonbuild/meson/issues/6849.
2020-07-28ninjabackend: check if target has compiler attributeMarcel Hollerbach1-0/+2
otherwise we are getting errors like: Traceback (most recent call last): File "/usr/local/lib/python3.6/dist-packages/mesonbuild/mesonmain.py", line 131, in run return options.run_func(options) File "/usr/local/lib/python3.6/dist-packages/mesonbuild/msetup.py", line 245, in run app.generate() File "/usr/local/lib/python3.6/dist-packages/mesonbuild/msetup.py", line 159, in generate self._generate(env) File "/usr/local/lib/python3.6/dist-packages/mesonbuild/msetup.py", line 215, in _generate intr.backend.generate() File "/usr/local/lib/python3.6/dist-packages/mesonbuild/backend/ninjabackend.py", line 518, in generate self.generate_coverage_rules() File "/usr/local/lib/python3.6/dist-packages/mesonbuild/backend/ninjabackend.py", line 991, in generate_coverage_rules self.generate_coverage_command(e, []) File "/usr/local/lib/python3.6/dist-packages/mesonbuild/backend/ninjabackend.py", line 975, in generate_coverage_command for compiler in target.compilers.values(): AttributeError: 'RunTarget' object has no attribute 'compilers' This extends the 109 generatecode test case to also define a test, so coverage can really detect something.
2020-07-23Merge pull request #7461 from mensinda/noMoreSetuptoolsJussi Pakkanen3-7/+378
Remove the setuptools dependency with mesondata.py
2020-07-23Merge pull request #7460 from mensinda/fixDeepcpyJussi Pakkanen1-0/+10
deps: Do not deepcopy internal libraries (fixes #7457)
2020-07-23compilers: Cache gnu-mixins has_arguments() checksNirbheek Chauhan1-1/+1
want_output gives us the output file. We don't need the file. We just need the compiler stderr, which is always stored.
2020-07-22coredata: Make warning_level per subproject builtin optionXavier Claessens1-1/+1
2020-07-22visualstudio: warning_level 0 should not map to /W1Xavier Claessens1-1/+1
In every other compilers level 0 maps to no argument at all.
2020-07-22Don't spam about usage of rspfiles to stdoutNirbheek Chauhan1-1/+1
Put it in the log file if necessary. Users don't need to know this. It's very spammy.
2020-07-21Add boost_root support to properties files (#7210)cmcneish1-40/+108
* Add boost_root support to properties files This commit implements `boost_root`, `boost_includedir`, and `boost_librarydir` variable support to native and cross properties files. The search order is currently environment variables, then these variables, and finally a platform-dependent search. * Add preliminary boost_root / boost_includedir tests Each test contains a fake "version.hpp", as that's how boost detection is currently being done. We look for this file relative to the root directory, which probably shouldn't be allowed (it previously was for BOOST_LIBRARYDIR but not for BOOST_ROOT). It also cannot help with breakage detection in libraries, however it looks like this wasn't getting tested beforehand. I've given the two unique version numbers that shouldn't be present in any stock version of boost (001 and 002). * Add return type to detect_split_root * Return empty list when nothing found in BOOST_ROOT, rather than None * Update boost_root tests * Create nativefile.ini based on location of run_project_tests.py * Add fake libraries to ensure boost_librarydir is being used * Require all search paths for boost to be absolute * Redo boost search ordering To better match things like pkg-config, we now look through native/cross files, then environment variables, then system locations for boost installations. Path detection does not fall back from one method to the next for properties or environment variables--if boost_root, boost_librarydir, or boost_includedir is specified, they must be sufficient to find boost. Likewise for BOOST_ROOT and friends. pkg-config detection is still optional falling back to system-wide detection, for Conan. (Also, fix a typo in test 33's nativefile) * Correct return type for detect_roots * Correct boost dependency search order in documentation * Print debug information for boost library finding, to resolve CI issues * Handle native/cross file templates in a more consistent way All tests can now create a `nativefile.ini.in` if they need to use some parameter that the testing framework knows about but they can't. * Pass str--rather than PosixPath--to os.path.exists, for Python35 * Look for boost minor versions, rather than boost patch versions in test cases * Drop fake dylib versions of boost_regex * Prefer get_env_var to use of os.environ * Correct error reporting for relative BOOST_ROOT paths * Bump version this appears in. Also, change "properties file" to "machine file" as that appears to be the more common language.
2020-07-21summary: Wrap lines when printing listsXavier Claessens1-5/+29
When a list_sep is provided (e.g. ', ') all items are printed on the same line, which gets ugly on very long lists (e.g. list of plugins enabled).
2020-07-20string: add substring methodStéphane Cerveau1-0/+14
This method aims to offer a simple way to 'substring' an existing string with start and end values.
2020-07-20Do not add rpaths for static libs. Closes #5191.Jussi Pakkanen1-1/+2
2020-07-19Print a warning when importing a stabilized moduleMarc-André Lureau1-7/+17
2020-07-19Stabilize keyval moduleMarc-André Lureau1-0/+0
We have experimented with the module for about a year in a qemu branch (https://wiki.qemu.org/Features/Meson), and we would like to start moving the build system to meson. For that, keyval should have the stability guarantees. Cc: Paolo Bonzini <pbonzini@redhat.com>
2020-07-19coredata: add missing EnvironmentException importJames Hilliard1-2/+3
Fixes: NameError: name 'EnvironmentException' is not defined Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
2020-07-19fix msvc not recognising b_ndebugElliot Haisley1-1/+1
fixes #7404
2020-07-19Fix a comment about cross compilation with clang-cl [skip ci]Martin Storsjö1-1/+1
This comment was added in 0fbd09609f4, where the case of a forward slash was added for the case when cross compiling.
2020-07-16mdata: remove setuptools and use mesondata insteadDaniel Mensinger2-7/+4
2020-07-16mdata: Generate mesondata.py from */data foldersDaniel Mensinger1-0/+374
2020-07-16deps: Do not deepcopy internal libraries (fixes #7457)Daniel Mensinger1-0/+10
2020-07-14wrap: Raise MesonException when git command failsXavier Claessens1-1/+4
This avoid printing long backtrace by default, the user already has the output of the git command printed for debugging purpose since we don't redirect stdout/stderr.
2020-07-14Merge pull request #7422 from alanc/solaris-fixesJussi Pakkanen3-5/+19
Solaris fixes revisited
2020-07-13qt module: rcc supports depfiles now, given a recent enough version of Qt5Eli Schwartz3-7/+10
Add depfile support to generated targets for Qt >= 5.14. Move warning into the module init itself, to check if the version is too old before issuing. Also tweak the wording itself, to advise upgrading to a suitable version of Qt5 instead of advising to wait for a Qt bug to be fixed.
2020-07-13Enable target override_options for llvm-irNirbheek Chauhan1-2/+2
This was missed somehow when the feature was added a few years ago.
2020-07-13Fix native builds on Windows ARM64 machinesNirbheek Chauhan5-24/+10
I made the mistake of always selecting the debug CRT for compiler checks on Windows 4 years ago: https://github.com/mesonbuild/meson/pull/543 https://github.com/mesonbuild/meson/pull/614 The idea was to always build the tests with debugging enabled so that the compiler doesn't optimize the tests away. But we stopped doing that a while ago, and also the debug CRT has no relation to that. We should select the CRT in the same way that we do for building targets: based on the options. On Windows ARM64, the debug CRT for ARM64 isn't always available, and the release CRT is available only after installing the runtime package. Without this, we will always try to pick the debug CRT even when --buildtype=debugoptimized or release.
2020-07-12Bump version number for new development. [skip ci]Jussi Pakkanen1-1/+1
2020-07-12Updated everything for release 0.55.0.0.55.0Jussi Pakkanen1-1/+1
2020-07-07SolarisDynamicLinker: report ld's version instead of gcc'sAlan Coopersmith1-1/+7
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2020-07-07SolarisDynamicLinker: Check if linker supports -z type=pieAlan Coopersmith1-1/+7
As suggested by dcbaker in https://github.com/mesonbuild/meson/pull/7370#discussion_r445145889 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2020-07-07symbolextractor: use try/finally in solaris_syms when wrapping gnu_symsAlan Coopersmith1-3/+5
As suggested by dcbaker in https://github.com/mesonbuild/meson/pull/7370#pullrequestreview-436872661 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2020-07-05Update version number for rc 2.0.55.0.rc2Jussi Pakkanen1-1/+1
2020-07-05Don't make unactionable warnings fatalNirbheek Chauhan5-7/+7
Some warnings are out of the user's control, such as the RCC QT bug, or the GNU windres bug, or our informational warning about auto-disabling of options when -Db_bitcode is enabled. Such warnings should not be fatal when --fatal-meson-warnings is passed because there's no action that the user can take to fix it. The only purpose it serves is to prevent people who use those features from using --fatal-meson-warnings.