aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/dependencies/ui.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2020-01-24 13:59:30 -0500
committerJussi Pakkanen <jpakkane@gmail.com>2020-01-30 00:01:42 +0200
commit8201b725ed6604a6f5ecfd041a3133d818a410bd (patch)
tree144d71cbf4d2f8e3b046ab425ca48fc82f326f7e /mesonbuild/dependencies/ui.py
parent273aeb8473e005a426ece4b196f904a49545f61a (diff)
downloadmeson-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.py28
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 = ''