diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-04-01 19:56:23 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-04-01 19:56:23 +0300 |
commit | e3184c4f94cf000e5be2eb7f41ccf023770c65c9 (patch) | |
tree | 661aa1614349c4ee74785a3387b6fc9c5af27ee8 | |
parent | 9abf5ec89af92d0046a2c1bd5cea07c7717f70f5 (diff) | |
download | meson-e3184c4f94cf000e5be2eb7f41ccf023770c65c9.zip meson-e3184c4f94cf000e5be2eb7f41ccf023770c65c9.tar.gz meson-e3184c4f94cf000e5be2eb7f41ccf023770c65c9.tar.bz2 |
Qt5 apps compile with only a slight amount of cheating.
-rwxr-xr-x | backends.py | 15 | ||||
-rw-r--r-- | dependencies.py | 19 | ||||
-rw-r--r-- | test cases/frameworks/4 qt5/mainWindow.h | 2 | ||||
-rw-r--r-- | test cases/frameworks/4 qt5/meson.build | 2 |
4 files changed, 31 insertions, 7 deletions
diff --git a/backends.py b/backends.py index 8d59c77..8860661 100755 --- a/backends.py +++ b/backends.py @@ -142,7 +142,7 @@ class Backend(): else: header_deps.append(src) for src in gen_src_deps: - obj_list.append(self.generate_single_compile(target, outfile, src, True, [])) + obj_list.append(self.generate_single_compile(target, outfile, src, True)) for src in target.get_sources(): if not self.environment.is_header(src): obj_list.append(self.generate_single_compile(target, outfile, src, False, header_deps)) @@ -540,14 +540,17 @@ class NinjaBackend(Backend): commands = self.generate_basic_compiler_flags(target, compiler) commands.append(compiler.get_include_arg(self.get_target_private_dir(target))) if is_generated: - rel_src = os.path.join(self.get_target_private_dir(target), src) + if '/' in src: + rel_src = src + else: + rel_src = os.path.join(self.get_target_private_dir(target), src) else: rel_src = os.path.join(self.build_to_src, target.get_source_subdir(), src) if os.path.isabs(src): src_filename = os.path.basename(src) else: src_filename = src - rel_obj = os.path.join(self.get_target_private_dir(target), src_filename) + rel_obj = os.path.join(self.get_target_private_dir(target), os.path.basename(src_filename)) rel_obj += '.' + self.environment.get_object_suffix() dep_file = rel_obj + '.' + compiler.get_depfile_suffix() pchlist = target.get_pch() @@ -573,8 +576,10 @@ class NinjaBackend(Backend): compiler_name = '%s_COMPILER' % compiler.get_language() element = NinjaBuildElement(rel_obj, compiler_name, rel_src) - if len(header_deps) > 0: - element.add_dep([os.path.join(self.get_target_private_dir(target), d) for d in header_deps]) + for d in header_deps: + if not '/' in d: + d = os.path.join(self.get_target_private_dir(target), d) + element.add_dep(d) element.add_orderdep(pch_dep) element.add_item('DEPFILE', dep_file) element.add_item('FLAGS', commands) diff --git a/dependencies.py b/dependencies.py index 7f70aa8..05ff9b3 100644 --- a/dependencies.py +++ b/dependencies.py @@ -298,8 +298,26 @@ class Qt5Dependency(Dependency): self.modules.append(PkgConfigDependency('Qt5' + module, False)) if len(self.modules) == 0: raise DependencyException('No Qt5 modules specified.') + self.find_exes() + + def find_exes(self): self.moc = ExternalProgram('moc') self.uic = ExternalProgram('uic') + # Moc and uic write their version strings to stderr. + # Moc returns a non-zero result when doing so. + # What kind of an idiot thought that was a good idea? + if self.moc.found(): + mp = subprocess.Popen([self.moc.get_command(), '-v'], + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + moc_ver = mp.communicate()[1].decode() + if 'Qt 5' not in moc_ver: + raise DependencyException('Moc preprocessor is not for Qt 5.') + if self.uic.found(): + up = subprocess.Popen([self.uic.get_command(), '-v'], + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + uic_ver = up.communicate()[1].decode() + if 'version 5.' not in uic_ver: + raise DependencyException('Uic compiler is not for Qt 5.') def get_version(self): return self.modules[0].get_version() @@ -354,4 +372,5 @@ packages = {'boost': BoostDependency, 'gtest': GTestDependency, 'gmock': GMockDependency, 'qt5': Qt5Dependency, + 'Qt5': Qt5Dependency, # Qt people sure do love their upper case. } diff --git a/test cases/frameworks/4 qt5/mainWindow.h b/test cases/frameworks/4 qt5/mainWindow.h index 6fcedc2..fc6b245 100644 --- a/test cases/frameworks/4 qt5/mainWindow.h +++ b/test cases/frameworks/4 qt5/mainWindow.h @@ -8,7 +8,7 @@ class MainWindow : public QMainWindow, private Ui_MainWindow { Q_OBJECT public: - MainWindow(QWidget *parent=nullptr); + MainWindow(QWidget *parent=0); ~MainWindow(); private: diff --git a/test cases/frameworks/4 qt5/meson.build b/test cases/frameworks/4 qt5/meson.build index 8bb4226..6431278 100644 --- a/test cases/frameworks/4 qt5/meson.build +++ b/test cases/frameworks/4 qt5/meson.build @@ -1,6 +1,6 @@ project('qt5 build test', 'cxx') -qt5dep = find_dep('qt5', modules : 'Gui', required : true) +qt5dep = find_dep('qt5', modules : 'Widgets', required : true) q5exe = executable('qt5test', sources : ['main.cpp', 'mainWindow.cpp'], |