aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/dependencies
AgeCommit message (Collapse)AuthorFilesLines
2021-06-06typing: Fully annotate dependencies.pkgconfigDaniel Mensinger1-26/+33
2021-06-05typing: Fully annotate dependencies.cudaDaniel Mensinger1-22/+36
2021-06-05typing: Fully annotate dependencies.configtoolDaniel Mensinger1-16/+23
2021-06-05typing: Fully annotate dependencies.coarraysDaniel Mensinger1-5/+5
2021-06-04dependencies/detect: Add type annotations to find_external_dependencyDylan Baker1-4/+5
2021-06-03typing: Fully annotate dependencies.baseDaniel Mensinger1-64/+64
2021-06-03deps: Split dependencies.baseDaniel Mensinger18-1852/+2050
Split the Factory and dependency classes out of the base.py script to improve maintainability.
2021-05-29cmake: Fix CMakeToolchain (fixes #8293)Daniel Mensinger1-2/+2
Instead of guessing the internal compiler variables, Meson now runns CMake once to determine what they actually are.
2021-05-28dependencies/zlib: System Dependency needs a clib_compiler on windowsDylan Baker1-3/+8
Otherwise it'll except when it tries to get an attribute from None that doesn't exist.
2021-05-23Fix double negative in 'No CMake binary not found'Jon Turney1-1/+1
2021-05-08interpreter: Skip not_found_message and include_type in cache idXavier Claessens1-1/+7
2021-04-20dependencies/OpenMP: If the version returned is not supported fail gracefullyDylan Baker1-1/+7
Currently if the version returned is not a supported version, then you get a lovely stack trace. This is not nice. This can be triggered easily by adding gcc's `-fdirectives-only` flag, which stops the preprocessor from doing certain macro expansions, including those used to detect OpenMP. Fixes #8652
2021-04-12dependency: Add JDK system dependencyTristan Partin2-1/+60
The JDK system dependency is important for detecting JDK include paths that may be useful when developing a JNI interface.
2021-03-23deprecated QMAKE dependency typeDylan Baker1-1/+4
Instead of using qmake, use config-tool. This is no different than when we deprecated the other per-dependency config-tool types (sdl2-config, llvm-config, etc) for just config-tool
2021-03-23Refactor Qt Dependency into proper split classes with factoriesDylan Baker3-144/+172
Currently the Qt Dependencies still use the old "combined" method for dependencies with multiple ways to be found. This is problematic as it means that `get_variable()` and friends don't work, as the dependency can't implement any of those methods. The correct solution is to make use of multiple Dependency instances, and a factory to tie them together. This does that. To handle QMake, I've leveraged the existing config-tool mechanism, which allows us to save a good deal of code, and use well tested code instead of rolling more of our own code. The one thing this doesn't do, but we probably should, is expose the macOS ExtraFrameworks directly, instead of forcing them to be found through QMake. That is a problem for another series, and someone who cares more about macOS than I do.
2021-03-22qt: move compilers_detect to the qt moduleDylan Baker1-53/+1
It's a method on the QtDependeny that exists purely for the consumption of the qt module (in the form, return some stuff the module makes into an instance variable). So put it where it actually belongs, and pass the qt dependency into it.
2021-03-22dependencies/qt: Split _get_modules_lib_suffix out of the classDylan Baker1-29/+32
As we break these classes up we're going to need this.
2021-03-22dependencies/base: Use FeatureDeprecated instead of mlog.warningDylan Baker1-4/+2
This code is really old, and it might be fine to delete this altogether, but for now lets do this.
2021-03-22dependencies/qt: split get_qmake_host_bins into a free functionDylan Baker1-10/+11
It's static anyway, and never overwritten.
2021-03-22dependencies/base: Use Compiler instead of CompilerTypeDylan Baker1-2/+2
Since Compiler is actually useful now as a base class, unlike when this code was written.
2021-03-22dependencies/qt: Add type annotationsDylan Baker1-50/+71
And fix some style and correctness issues
2021-03-22dependencies: split qt out of the ui moduleDylan Baker3-422/+451
It's a big enough and complicated enough bit of code that it deserves its own module.
2021-03-19split program related classes and functions out of dependenciesDylan Baker3-330/+9
Dependencies is already a large and complicated package without adding programs to the list. This also allows us to untangle a bit of spaghetti that we have.
2021-03-12Fix duplicate pkg_config_path entriesTristan Partin1-2/+2
Previously builds would *potentially* get sammed with messaging at configure time that duplicate entries in an array would be an error in the future, and the cause was because the same entries were getting added over and over to pkg_config_path.p
2021-03-09dependencies: Add docstring explaining how to write a system dependencyDylan Baker1-0/+149
This is a useful thing to document. I wasn't really sure where to put it, but since it's developer oriented I figured in the code itself was probably more useful and more likely to be seen than in the markdown that generates the website.
2021-03-04mass rewrite of string formatting to use f-strings everywhereEli Schwartz7-116/+116
performed by running "pyupgrade --py36-plus" and committing the results
2021-03-04various python neatness cleanupsEli Schwartz2-2/+2
All changes were created by running "pyupgrade --py3-only --keep-percent-format" and committing the results. I have not touched string formatting for now. - use set literals - simplify .format() parameter naming - remove __future__ - remove default "r" mode for open() - use OSError rather than compatibility aliases - remove stray parentheses in function(generator) scopes
2021-02-26pkg-config: dump all PKG_CONFIG environment variables to simplify debuggingJeff Moguillansky1-2/+4
With this change, all the system's built-in pkg-config environment variables are outputted as well, to simplify debugging.
2021-02-26hdf5: get include directory from config-toolMichael Kuhn1-2/+5
hdf5's config-tools will not show compile arguments (including the include directory) if called without `-c`. Make sure to get both the compile and link arguments.
2021-02-07Add Qt6 moduleLuca Weiss2-1/+13
2021-02-06add loongarch supportXiaotian Wu1-1/+1
2021-01-21interpreter: accept external programs and dependencies for summaryPaolo Bonzini1-0/+17
2021-01-13Fix misspellsAntonin Décimo3-3/+3
Signed-off-by: Antonin Décimo <antonin.decimo@gmail.com>
2021-01-12dependencies: use env.machines for is_$os methodsDylan Baker1-7/+7
Currently we use the mesonlib ones, but these are always the build machine definitions, rather than being available for either the build or host machine. We already have an `Environment` instance, and the correct `MachineChoice`, so lets use that. Fixes #8165
2021-01-11boost: default machine file properties to env var valuesDylan Baker1-50/+15
This both moves the env reading to configuration time, which is useful, and also simplifies the implementation of the boost dependency. The simplification comes from being able to delete basically duplicated code since the values will be in the Properties if they exist at all.
2021-01-11dependencies: Don't read PKG_CONFIG_PATH from the env againDylan Baker1-10/+2
We already read this in, don't read it again. Just rely on the value we have stored.
2021-01-11dependencies/mpi: Add a type annotationDylan Baker1-1/+1
Some change in this series causes mypy to notice that this isn't annotated, and it makes a wrong assumption.
2021-01-11import MachineChoice from mesonlibDylan Baker1-1/+1
there are a couple of places importing it from envconfig, which is not correct. It's defined in mesonlib, and then imported into envconfig.
2021-01-10cmake: add PATH logic to preliminary dep check (fixes #8133)Daniel Mensinger1-2/+16
2021-01-04Use a single coredata dictionary for optionsDylan Baker3-11/+11
This patches takes the options work to it's logical conclusion: A single flat dictionary of OptionKey: UserOptions. This allows us to simplify a large number of cases, as we don't need to check if an option is in this dict or that one (or any of 5 or 6, actually).
2021-01-04use OptionKey for builtin and base optionsDylan Baker3-9/+10
I would have prefered to do these seperatately, but they are combined in some cases, so it was much easier to convert them together. this eliminates the builtins_per_machine dict, as it's duplicated with the OptionKey's machine parameter.
2020-12-16cmake: Revert to using self.for_machine instead of MachineChoice.BUILD ↵Daniel Mensinger1-2/+3
(fixes #8028)
2020-11-24compiler: allow non-built internal dependencies as argumentsPaolo Bonzini1-3/+10
Allow methods on the compiler object to receive internal dependencies, as long as they only specify compiler/linker arguments or other dependencies that satisfy the same requirements. This is useful if you're using internal dependencies to add special "-D" flags such as -DNCURSES_WIDECHAR, -D_XOPEN_SOURCE_EXTENDED or -DGLIB_STATIC_COMPILATION.
2020-11-22Merge pull request #8011 from dcbaker/submit/post-python36-cleanupsJussi Pakkanen6-6/+6
Python 3.6 cleanups
2020-11-21Handle cmake dependencies which require a specified versionJason Ekstrand2-3/+11
Some CMake packages fail to find at all if no version is specified. This commit adds a cmake_version parameter to dependency() to allow you to specify the requested version.
2020-11-20use real pathlib moduleDylan Baker6-6/+6
We added the _pathlib module to work around defeciencies in python 3.5's implementation, since we now rely on 3.6 lets drop this
2020-11-12dependencies: Put pkgconfig options before operandsHaelwenn (lanodan) Monnier1-1/+5
This fixes building with meson when the POSIX behavior of getopt is used, such as when GNU libc is used with POSIXLY_CORRECT=1 defined
2020-10-30qt: dependency: Strip tool versions from newlinesLaurent Pinchart1-1/+1
When finding the Qt compilation tools (moc, uic, rcc, lrelease), the version strings contain a trailing newline character. This results in a stray newline in the meson log: Detecting Qt5 tools Program /usr/lib64/qt5/bin/moc found: YES 5.14.2 (/usr/lib64/qt5/bin/moc) Program /usr/lib64/qt5/bin/uic found: YES 5.14.2 (/usr/lib64/qt5/bin/uic) Program /usr/lib64/qt5/bin/rcc found: YES 5.14.2 (/usr/lib64/qt5/bin/rcc) Program /usr/lib64/qt5/bin/lrelease found: YES 5.14.2 (/usr/lib64/qt5/bin/lrelease) Strip the version to avoid this, resulting in a cleaner log: Detecting Qt5 tools Program /usr/lib64/qt5/bin/moc found: YES 5.14.2 (/usr/lib64/qt5/bin/moc) Program /usr/lib64/qt5/bin/uic found: YES 5.14.2 (/usr/lib64/qt5/bin/uic) Program /usr/lib64/qt5/bin/rcc found: YES 5.14.2 (/usr/lib64/qt5/bin/rcc) Program /usr/lib64/qt5/bin/lrelease found: YES 5.14.2 (/usr/lib64/qt5/bin/lrelease) Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2020-10-22depenencies/llvm: Handle llvm-config --shared-mode failing (#7379)Dylan Baker1-1/+7
* depenencies/llvm: Handle llvm-config --shared-mode failing Fixes: #7371 Fixes: #7878 * test cases/llvm: Refactor to use test.json Instead of trying to cover everything internally
2020-10-16cmake: ignore CMAKE_TOOLCHAIN_FILE and CMAKE_PROJECT_INCLUDE to avoid ↵Daniel Mensinger1-1/+2
conflicts with the meson CMake logic