diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2020-01-24 13:59:30 -0500 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2020-01-30 00:01:42 +0200 |
commit | 8201b725ed6604a6f5ecfd041a3133d818a410bd (patch) | |
tree | 144d71cbf4d2f8e3b046ab425ca48fc82f326f7e /mesonbuild/dependencies/ui.py | |
parent | 273aeb8473e005a426ece4b196f904a49545f61a (diff) | |
download | meson-8201b725ed6604a6f5ecfd041a3133d818a410bd.zip meson-8201b725ed6604a6f5ecfd041a3133d818a410bd.tar.gz meson-8201b725ed6604a6f5ecfd041a3133d818a410bd.tar.bz2 |
Qt5: Do not use system qmake if not specified in cross file
There is a comment saying we do it because we used to do it. But it's
wrong and lead to using system library when cross compiling.
Factor out the code we use to find pkg-config, because it is the same
use-case.
Diffstat (limited to 'mesonbuild/dependencies/ui.py')
-rw-r--r-- | mesonbuild/dependencies/ui.py | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/mesonbuild/dependencies/ui.py b/mesonbuild/dependencies/ui.py index b633f25..5433150 100644 --- a/mesonbuild/dependencies/ui.py +++ b/mesonbuild/dependencies/ui.py @@ -28,7 +28,7 @@ from ..mesonlib import ( from ..environment import detect_cpu_family from .base import DependencyException, DependencyMethods -from .base import ExternalDependency, ExternalProgram, NonExistingExternalProgram +from .base import ExternalDependency, NonExistingExternalProgram from .base import ExtraFrameworkDependency, PkgConfigDependency from .base import ConfigToolDependency, DependencyFactory @@ -321,28 +321,24 @@ class QtBaseDependency(ExternalDependency): if prefix: self.bindir = os.path.join(prefix, 'bin') - def _qmake_detect(self, mods, kwargs): + def search_qmake(self): for qmake in ('qmake-' + self.name, 'qmake'): - self.qmake = ExternalProgram.from_bin_list( - self.env.binaries.host, qmake) - if not self.qmake.found(): - # Even when cross-compiling, if a cross-info qmake is not - # specified, we fallback to using the qmake in PATH because - # that's what we used to do - self.qmake = ExternalProgram.from_bin_list( - self.env.binaries.build, qmake) - if not self.qmake.found(): - self.qmake = ExternalProgram(qmake, silent=True) - if not self.qmake.found(): + for potential_qmake in self.search_tool(qmake, 'QMake', [qmake]): + yield potential_qmake + + def _qmake_detect(self, mods, kwargs): + for qmake in self.search_qmake(): + if not qmake.found(): continue # Check that the qmake is for qt5 - pc, stdo = Popen_safe(self.qmake.get_command() + ['-v'])[0:2] + pc, stdo = Popen_safe(qmake.get_command() + ['-v'])[0:2] if pc.returncode != 0: continue if not 'Qt version ' + self.qtver in stdo: mlog.log('QMake is not for ' + self.qtname) continue # Found qmake for Qt5! + self.qmake = qmake break else: # Didn't find qmake :( @@ -364,7 +360,7 @@ class QtBaseDependency(ExternalDependency): if self.env.machines.host.is_darwin() and not any(s in xspec for s in ['ios', 'tvos']): mlog.debug("Building for macOS, looking for framework") self._framework_detect(qvars, mods, kwargs) - return qmake + return self.qmake.name incdir = qvars['QT_INSTALL_HEADERS'] self.compile_args.append('-I' + incdir) libdir = qvars['QT_INSTALL_LIBS'] @@ -405,7 +401,7 @@ class QtBaseDependency(ExternalDependency): if not self._link_with_qtmain(is_debug, libdir): self.is_found = False - return qmake + return self.qmake.name def _get_modules_lib_suffix(self, is_debug): suffix = '' |