diff options
author | Tobias Markmann <tm@ayena.de> | 2015-04-13 13:14:23 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2015-04-28 12:38:26 (GMT) |
commit | 4ac05ebaf6c913b4bfcc7c4e7abeb6ace9efe5c8 (patch) | |
tree | 24be42f31167f2ca82bb3026e939a65233f84846 /BuildTools/SCons | |
parent | 908b442c7b5e74c9d557a1468b321ef4255e402e (diff) | |
download | swift-4ac05ebaf6c913b4bfcc7c4e7abeb6ace9efe5c8.zip swift-4ac05ebaf6c913b4bfcc7c4e7abeb6ace9efe5c8.tar.bz2 |
Add Qt flags detection using pkg-config on Linux platforms
Fix qt4.py SCons module to use the specific tools of the correct Qt
verison.
On non-Windows and non-Darwin platforms SCons will try to detect the
correct Qt compiler and linker flags from pkg-config.
Added the ability to build Slimber with Qt5.
Fixed Qt5 support on Linux when using prebuilt Qt distribution from Qt.
This patch adds support for building Swift on Arch Linux, with Qt4 and
Qt5.
Test-Information:
Tested under Mac OS X 10.9.5 and Manjaor Linux (Arch Linux) in Qt4
and Qt5 configuration, and tested Qt5 Linux binary from their website
on Arch Linux with the qt variable set in config.py.
Change-Id: I2e19ab4aa7a26fdd989e2a12faa51a0f3f89c3ce
Diffstat (limited to 'BuildTools/SCons')
-rw-r--r-- | BuildTools/SCons/Tools/qt4.py | 75 |
1 files changed, 56 insertions, 19 deletions
diff --git a/BuildTools/SCons/Tools/qt4.py b/BuildTools/SCons/Tools/qt4.py index ad4f1c0..ea86223 100644 --- a/BuildTools/SCons/Tools/qt4.py +++ b/BuildTools/SCons/Tools/qt4.py @@ -200,7 +200,11 @@ def _detect(env): try: return os.environ['QTDIR'] except KeyError: pass - moc = env.WhereIs('moc-qt4') or env.WhereIs('moc4') or env.WhereIs('moc') + moc = None + if env["qt5"]: + moc = env.WhereIs('moc-qt5') or env.WhereIs('moc5') or env.WhereIs('moc') + else : + moc = env.WhereIs('moc-qt4') or env.WhereIs('moc4') or env.WhereIs('moc') if moc: import sys if sys.platform == "darwin" : @@ -222,14 +226,24 @@ def generate(env): def locateQt4Command(env, command, qtdir) : if len(qtdir) == 0 : qtdir = "/usr" - suffixes = [ - '-qt4', - '-qt4.exe', - '4', - '4.exe', - '', - '.exe', - ] + if env["qt5"]: + suffixes = [ + '-qt5', + '-qt5.exe', + '5', + '5.exe', + '', + '.exe', + ] + else : + suffixes = [ + '-qt4', + '-qt4.exe', + '4', + '4.exe', + '', + '.exe', + ] triedPaths = [] for suffix in suffixes : fullpath = os.path.join(qtdir,'bin',command + suffix) @@ -426,6 +440,8 @@ def enable_modules(self, modules, debug=False, crosscompiling=False, version='4' 'QtMultimedia', 'QtWebKitWidgets', ] + if sys.platform != "win32" and sys.platform != "darwin" and not crosscompiling : + validModules += ['QtX11Extras'] staticModules = [ 'QtUiTools', ] @@ -456,16 +472,37 @@ def enable_modules(self, modules, debug=False, crosscompiling=False, version='4' debugSuffix = '' if sys.platform != "win32" and sys.platform != "darwin" and not crosscompiling : - if debug : debugSuffix = '_debug' - if version == '4' : - self.AppendUnique(CPPPATH=[os.path.join("$QTDIR","include", "phonon")]) - for module in modules : - self.AppendUnique(LIBS=[module+debugSuffix]) - self.AppendUnique(LIBPATH=[os.path.join("$QTDIR","lib")]) - self.AppendUnique(CPPPATH=[os.path.join("$QTDIR","include")]) - self.AppendUnique(CPPPATH=[os.path.join("$QTDIR","include",module)]) - self["QT4_MOCCPPPATH"] = self["CPPPATH"] - return + if self["qt"]: + # The user specified qt path in config.py and we are going to use the + # installation under that location. + UsePkgConfig = False + else: + # The user did not specify a qt path in config py and we are going to + # ask pkg-config for the correct flags. + UsePkgConfig = True + if not UsePkgConfig: + if debug : debugSuffix = '_debug' + if version == '4' : + self.AppendUnique(CPPPATH=[os.path.join("$QTDIR","include", "phonon")]) + for module in modules : + module_str = module + if not version == '4' : + module_str = module_str.replace('Qt', 'Qt5') + self.AppendUnique(LIBS=[module_str+debugSuffix]) + self.AppendUnique(LIBPATH=[os.path.join("$QTDIR","lib")]) + self.AppendUnique(CPPPATH=[os.path.join("$QTDIR","include")]) + self.AppendUnique(CPPPATH=[os.path.join("$QTDIR","include",module)]) + self["QT4_MOCCPPPATH"] = self["CPPPATH"] + return + else: + test_env = self.Clone() + modules_str = " ".join(modules) + if not version == '4' : + modules_str = modules_str.replace('Qt', 'Qt5') + test_env.ParseConfig("pkg-config --cflags --libs " + modules_str) + self.AppendUnique(LIBS=test_env["LIBS"], LIBPATH=test_env["LIBPATH"], CPPPATH=test_env["CPPPATH"]) + self["QT4_MOCCPPPATH"] = self["CPPPATH"] + return if sys.platform == "win32" or crosscompiling : if crosscompiling: |