diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-10-05 00:12:47 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-10-05 00:12:47 +0300 |
commit | 0f2d43669d9c34dcce8f4ec754396538254893af (patch) | |
tree | 87fbf79a8e8028beb860444013da9364361ee383 | |
parent | 509340d1ec425677c57e1e07a4bea6b64b1ee0e4 (diff) | |
download | meson-0f2d43669d9c34dcce8f4ec754396538254893af.zip meson-0f2d43669d9c34dcce8f4ec754396538254893af.tar.gz meson-0f2d43669d9c34dcce8f4ec754396538254893af.tar.bz2 |
Added support for Qt resource compiler.
-rw-r--r-- | dependencies.py | 36 | ||||
-rw-r--r-- | test cases/frameworks/4 qt5/main.cpp | 4 | ||||
-rw-r--r-- | test cases/frameworks/4 qt5/meson.build | 1 | ||||
-rw-r--r-- | test cases/frameworks/4 qt5/stuff.qrc | 5 | ||||
-rw-r--r-- | test cases/frameworks/4 qt5/thing.png | bin | 0 -> 40303 bytes |
5 files changed, 36 insertions, 10 deletions
diff --git a/dependencies.py b/dependencies.py index fb80718..3734b12 100644 --- a/dependencies.py +++ b/dependencies.py @@ -127,16 +127,17 @@ class PkgConfigDependency(Dependency): return self.is_found class ExternalProgram(): - def __init__(self, name, fullpath=None): + def __init__(self, name, fullpath=None, silent=False): self.name = name if fullpath is not None: self.fullpath = fullpath else: self.fullpath = shutil.which(name) - if self.found(): - mlog.log('Program', name, 'found:', mlog.green('YES'), '(%s)' % self.fullpath) - else: - mlog.log('Program', name, 'found:,', mlog.red('NO')) + if not silent: + if self.found(): + mlog.log('Program', name, 'found:', mlog.green('YES'), '(%s)' % self.fullpath) + else: + mlog.log('Program', name, 'found:,', mlog.red('NO')) def found(self): return self.fullpath is not None @@ -389,10 +390,11 @@ class Qt5Dependency(Dependency): 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. + self.moc = ExternalProgram('moc', silent=True) + self.uic = ExternalProgram('uic', silent=True) + self.rcc = ExternalProgram('rcc', silent=True) + # Moc, uic and rcc write their version strings to stderr. + # Moc and rcc return 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'], @@ -412,6 +414,15 @@ class Qt5Dependency(Dependency): mlog.log(' uic:', mlog.green('YES'), '(%s)' % uic_ver) else: mlog.log(' uic:', mlog.red('NO')) + if self.rcc.found(): + up = subprocess.Popen([self.rcc.get_command(), '-v'], + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + rcc_ver = up.communicate()[1].decode().strip() + if 'version 5.' not in rcc_ver: + raise DependencyException('Rcc compiler is not for Qt 5. Output: %s' % rcc_ver) + mlog.log(' rcc:', mlog.green('YES'), '(%s)' % rcc_ver) + else: + mlog.log(' rcc:', mlog.red('NO')) def get_version(self): return self.modules[0].get_version() @@ -436,6 +447,8 @@ class Qt5Dependency(Dependency): return False if not self.uic.found(): return False + if not self.rcc.found(): + return False for i in self.modules: if not i.found(): return False @@ -448,7 +461,10 @@ class Qt5Dependency(Dependency): ui_rule = CustomRule([self.uic.get_command(), '@INFILE@', '-o', '@OUTFILE@'], 'ui_@BASENAME@.h', 'ui_files', 'ui_compile', 'Compiling @INFILE@ with the ui compiler') - return [moc_rule, ui_rule] + rrc_rule = CustomRule([self.rcc.get_command(), '@INFILE@', '-o', '@OUTFILE@'], + '@BASENAME@.cpp', 'resources', 'rc_compile', + 'Compiling @INFILE@ with the rrc compiler') + return [moc_rule, ui_rule, rrc_rule] def get_exe_flags(self): # Qt5 seems to require this always. diff --git a/test cases/frameworks/4 qt5/main.cpp b/test cases/frameworks/4 qt5/main.cpp index 95cc1f9..51d83b4 100644 --- a/test cases/frameworks/4 qt5/main.cpp +++ b/test cases/frameworks/4 qt5/main.cpp @@ -4,6 +4,10 @@ int main(int argc, char **argv) { QApplication app(argc, argv); MainWindow *win = new MainWindow(); + QImage qi(":/thing.png"); + if(qi.width() != 640) { + return 1; + } win->setWindowTitle("Meson Qt5 build test"); // Don't actually start the GUI so this diff --git a/test cases/frameworks/4 qt5/meson.build b/test cases/frameworks/4 qt5/meson.build index a630d73..f9591f0 100644 --- a/test cases/frameworks/4 qt5/meson.build +++ b/test cases/frameworks/4 qt5/meson.build @@ -6,6 +6,7 @@ q5exe = executable('qt5test', sources : ['main.cpp', 'mainWindow.cpp'], # Sources that don't need preprocessing. moc_headers : ['mainWindow.h'], # These need to be fed through the moc tool before use. ui_files : 'mainWindow.ui', # XML files that need to be compiled with the uic tol. +resources : 'stuff.qrc', # Resource file for rcc compiler. deps : qt5dep) test('qt5test', q5exe) diff --git a/test cases/frameworks/4 qt5/stuff.qrc b/test cases/frameworks/4 qt5/stuff.qrc new file mode 100644 index 0000000..cd1c6b5 --- /dev/null +++ b/test cases/frameworks/4 qt5/stuff.qrc @@ -0,0 +1,5 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource> + <file>thing.png</file> +</qresource> +</RCC> diff --git a/test cases/frameworks/4 qt5/thing.png b/test cases/frameworks/4 qt5/thing.png Binary files differnew file mode 100644 index 0000000..4b001bd --- /dev/null +++ b/test cases/frameworks/4 qt5/thing.png |