aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
AgeCommit message (Collapse)AuthorFilesLines
2021-02-05ninjabackend: Remove useless call to replace_paths()Xavier Claessens2-5/+4
Replacements are already done by eval_custom_target_command() and must be done BEFORE calling as_meson_exe_cmdline() anyway. replace_paths() is still used by generators. Make eval_custom_target_command() more readable by handling error in the final else case instead of in the middle of elif.
2021-02-05backend: Do not check for exe wrapper twiceXavier Claessens3-17/+4
It is already checked by as_meson_exe_cmdline().
2021-02-05run_target: Add env kwargXavier Claessens9-218/+102
Re-implement it in backend using the same code path as for custom_target(). This for example handle setting PATH on Windows when command is an executable.
2021-02-05gnome: Add post_install() methodXavier Claessens1-18/+67
Various GNOME projects have scripts that does similar task, better do it directly in meson. This ensures it's done correctly regarding usage of subprojects and pkg-config. See for example this gtk bug: https://gitlab.gnome.org/GNOME/gtk/-/issues/3626. Fixes: #8268
2021-02-04xcode-backend: add implicit includesJeff Moguillansky3-14/+18
Move helper functions get_source_dir_include_args and get_build_dir_include_args to backend base class
2021-02-04xcode-backend: set global link argsJeff Moguillansky1-0/+3
2021-02-04xcode-backend: fix include pathsJeff Moguillansky1-1/+2
Add project directory as include path Add include paths from dependencies for all languages (c, c++, objc, objc++)
2021-02-04Introduce `fs.read` to read a file as a stringLuke Drummond2-2/+65
Following #7890, this patch introduces the ability to read the contents of a file to the fs module. This patch introduces the ability to read files at configure time, but has some restrictions: - binary files are not supported (I don't think this will prove a problem, and if people are wanting to do something with binary files, they should probably be shelling out to their own script). - Only files outside the build directory allowed. This limitation should prevent build loops. Given that reading an arbitrary file at configure time can affect the configuration in almost arbitrary ways, meson should force a reconfigure when the given file changes. This is non-configurable, but this can easily be changed with a future keyword argument.
2021-02-04minstall: Add --dry-run optionXavier Claessens1-24/+100
Closes: #1281
2021-02-03environment: fix typosAli Alnubani1-4/+4
Fixed typos and reworded some sentences. Signed-off-by: Ali Alnubani <alialnu@nvidia.com>
2021-02-02Merge pull request #8087 from dcbaker/submit/lto-extensionsJussi Pakkanen3-6/+56
Add option for thinLTO
2021-02-02Add support for LLVM's thinLTODylan Baker3-8/+21
This uses a separate option, b_lto_mode. It works in conjunction with b_lto_threads. Fixes #7493
2021-02-02compilers: Add support for using multiple threads with ltoDylan Baker3-5/+42
Both Clang and GCC support using multiple threads for preforming link time optimizaions, and they can now be configured using the `-Db_lto_threads` option. Fixes #7820
2021-02-02Quick update of table of CUDA Toolkit vs. NVIDIA driver versions.Olexa Bilaniuk1-0/+2
2021-02-02interpreter, mtest: introduce add_test_setup(exclude_suites: ...)Paolo Bonzini3-14/+23
This new keyword argument makes it possible to run specific test setups only on a subset of the tests. For example, to mark some tests as slow and avoid running them by default: add_test_setup('quick', exclude_suites: ['slow'], is_default: true) add_test_setup('slow') It will then be possible to run the slow tests with either `meson test --setup slow` or `meson test --suite slow`.
2021-02-02mtest: extract get_test_setup, rename merge_suite_optionsPaolo Bonzini1-10/+13
merge_suite_options is really about test setups, so rename accordingly. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2021-02-02mtest: load build data earlyPaolo Bonzini1-23/+21
This will be needed to exclude testsuites from test setups (which are stored in the build data). While at it, since a chdir is needed simplify a bit the loading of tests and benchmarks.
2021-02-02mtest: compute logfile name earlyPaolo Bonzini1-15/+18
Do this before overriding self.options.setup with the default setup.
2021-02-02mtest: remove useless argumentPaolo Bonzini1-3/+3
2021-02-02build: fix flake8Paolo Bonzini1-2/+1
2021-02-01bugfix concerning octal umasks (#8282)Volker-Weissmann1-4/+11
* bugfix concerning octal umasks * minor fix * spelling mistake
2021-01-30add_install_script: add skip_if_destdir kwargXavier Claessens3-4/+13
It is common, at least in GNOME projects, to have scripts that must be run only in the final destination, to update system icon cache, etc. Skipping them from Meson ensures we can properly log that they have not been run instead of relying on such scripts to to it (they don't always).
2021-01-30minstall: Add --destdir command line optionXavier Claessens1-0/+7
2021-01-30build: add function get_build_targets to Build classJeff Moguillansky2-33/+40
Add function to Build class to get targets of type BuildTarget Update xcode backend to call get_build_targets when iterating over targets. This resolves crash in xcode backend when using custom targets: AttributeError: ‘CustomTarget’ object has no attribute ‘objects’
2021-01-30Merge pull request #8264 from xclaesse/ep-miscJussi Pakkanen3-24/+42
external_project: misc improvements
2021-01-30Merge pull request #8200 from bonzini/mtest-asyncio-logsJussi Pakkanen1-116/+234
mtest: improvements to logging
2021-01-30Fix executable as script on WindowsXavier Claessens9-79/+71
On Windows this would fail because of missing DLL: ``` mylib = library(...) exe = executable(..., link_with: mylib) meson.add_install_script(exe) ``` The reason is on Windows we cannot rely on rpath to find libraries from build directory, they are searched in $PATH. We already have all that mechanism in place for custom_target() using ExecutableSerialisation class, so reuse it for install/dist/postconf scripts too. This has bonus side effect to also use exe_wrapper for those scripts. Fixes: #8187
2021-01-29Can read project version from a file.Jussi Pakkanen1-4/+24
2021-01-29Popen_safe: Fix stdout/stderr annotationXavier Claessens1-4/+4
2021-01-29external_project: Add default configure optionsXavier Claessens1-12/+12
2021-01-29external_project: Do not set LD in the envXavier Claessens1-1/+4
This was breaking some autotools projects such as libyaml.
2021-01-29external_project: Improve loggingXavier Claessens2-7/+22
Write output of 'make' and 'make install' into log files as well when not verbose.
2021-01-28xcode-backend: fix include pathsJeff Moguillansky1-0/+3
Add include paths from dependencies
2021-01-27intepreter: Allow using file objects for the script_name of add_*_scriptDylan Baker1-8/+20
It's a bit silly and conveluted to have to call find_program on the output of configure_file, so let's just allow passing files as the script name.
2021-01-27custom_target: Add env kwargXavier Claessens6-9/+20
2021-01-27test: Make timeout <= 0 infinite duractionXavier Claessens2-8/+14
2021-01-26dist: Use windows_proof_rmtree() instead of shutil.rmtree()Xavier Claessens1-4/+4
2021-01-26dist: Allow packaging subproject in same git repo as main projectXavier Claessens1-5/+29
2021-01-26do not require git installed in order to use wrapsEli Schwartz1-1/+3
It doesn't make sense to check for the presence of git every time we use it, but short-circuit any attempt to use a wrap right from the get-go because we are trying to be fancy with submodules. If git is not installed, simply do not try to figure out whether the wrap is a submodule that can potentially be checked out/updated for the user. Just take it on faith that it isn't one. Fixes #2623
2021-01-26Warn about .C and .H files (#8249)Volker-Weissmann1-0/+7
2021-01-25Merge pull request #8236 from ↵Jussi Pakkanen1-1/+1
dcbaker/submit/rust-fix-generated-sources-in-subdir Submit/rust fix generated sources in subdir
2021-01-25Add ARM64EC as a new conceptual cpu type of arm64Ben Niu1-1/+7
ARM64EC is a new ARM64 ABI made by Microsoft. The ARM64EC binaries can be loaded in x64 processes on the latest Windows Insider Preview on ARM64, and they don't need to be emulated for the sake of performance. To support the ARM64EC build target, a new conceptual arm64 cpu type 'arm64ec' is added. The cpu can be specified in cross files like below to generate msbuild solution/vcxproj files with platform set to ARM64EC. [target_machine] system = 'windows' cpu_family = 'aarch64' cpu = 'arm64ec' endian = 'little'
2021-01-23Merge pull request #8226 from jonaslb/fortranstaticJussi Pakkanen3-13/+20
Fixes for fortran: Include dirs for link_whole_targets and capital file suffix
2021-01-23split mesonlib into a packageDylan Baker12-59/+269
Currently mesonlib does some import tricks to figure out whether it needs to use windows or posix specific functions. This is a little hacky, but works fine. However, the way the typing stubs are implemented for the msvcrt and fnctl modules will cause mypy to fail on the other platform, since the functions are not implemented. To aleviate this (and for slightly cleaner design), I've split mesonlib into a pacakge with three modules. A universal module contains all of the platform agnositc code, a win32 module contains window specific code, a posix module contains the posix specific code, and a platform module contains no-op implementations. Then the package's __init__ file imports all of the universal functions and all of the functions from the approriate platform module, or the no-op versions as fallbacks. This makes mypy happy, and avoids `if`ing all over the code to switch between the platform specific code.
2021-01-22mtest: log individual TAP subtestsPaolo Bonzini1-11/+34
2021-01-22mtest: infrastructure to print subtest resultsPaolo Bonzini1-7/+18
2021-01-22mtest: move --print-errorlogs output during the test runPaolo Bonzini1-18/+13
Print the (shortened) output of the failed tests as they happen. If neither --verbose nor --print-errorlogs was specified, omit the summary of failures, because it is pretty much the same as the earlier output of "meson test".
2021-01-22mtest: log test start in verbose modePaolo Bonzini1-13/+37
In non-parallel verbose mode the output of the test/benchmark is not buffered, therefore the command line is only printed by ConsoleLogger for failing tests and only after the test has run. Verbose mode is designed mostly for CI systems, where output must be human readable but is generally consumed from a browser with "Find" commands rather than from a terminal. With this usecase in mind, it is better to provide as much detail as possible, so add more output and just tell the user which tests have started. Do so, using the recently introduced TestResult.RUNNING state.
2021-01-22mtest: call TestLogger.start_test when TestRun is in the RUNNING statePaolo Bonzini1-8/+13
2021-01-22mtest: use buffered stdout/stderr in parallel modePaolo Bonzini1-2/+5
Similar to ninja, buffer stdout/stderr even in verbose mode if more than one test is being run in parallel.