summaryrefslogtreecommitdiffstats
path: root/Swift
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2016-10-10 17:42:09 (GMT)
committerTobias Markmann <tm@ayena.de>2016-10-11 14:17:31 (GMT)
commitfc9df1253fa6d3a8f86c06d9e9a0d531ba0f5b13 (patch)
tree8187b58f63aad6621addfd12d4fd77a860dedc68 /Swift
parent72343b4eb5b322e3d52e0db95f35423a3b7d6540 (diff)
downloadswift-fc9df1253fa6d3a8f86c06d9e9a0d531ba0f5b13.zip
swift-fc9df1253fa6d3a8f86c06d9e9a0d531ba0f5b13.tar.bz2
Fix building Swift on 32-bit Linux distributions
Some distributions ship Qt configured so it requires your application to be build with the -fPIC flag. This adds a SCons check for this so the flag is automatically added if required. Test-Information: Successfully build Swift and ran unit tests on Ubuntu 16.04 (32 bit and 64 bit) and Debian 8.6 (32 bit and 64 bit). Change-Id: I8016bcb43fa36a3becf946ec179d74cdceb1d147
Diffstat (limited to 'Swift')
-rw-r--r--Swift/QtUI/SConscript8
1 files changed, 8 insertions, 0 deletions
diff --git a/Swift/QtUI/SConscript b/Swift/QtUI/SConscript
index 1ecdf4e..c8313c2 100644
--- a/Swift/QtUI/SConscript
+++ b/Swift/QtUI/SConscript
@@ -47,60 +47,68 @@ if myenv.get("HAVE_SNARL", False) :
myenv.UseFlags(myenv["SNARL_FLAGS"])
myenv.Append(CPPDEFINES = ["HAVE_SNARL"])
if myenv.get("HAVE_HUNSPELL", True):
myenv.Append(CPPDEFINES = ["HAVE_HUNSPELL"])
myenv.UseFlags(myenv["HUNSPELL_FLAGS"])
if env["PLATFORM"] == "win32" :
myenv.Append(LIBS = ["cryptui"])
myenv.UseFlags(myenv["PLATFORM_FLAGS"])
myenv.Tool("qt4", toolpath = ["#/BuildTools/SCons/Tools"])
myenv.Tool("nsis", toolpath = ["#/BuildTools/SCons/Tools"])
myenv.Tool("wix", toolpath = ["#/BuildTools/SCons/Tools"])
myenv.Tool("textfile", toolpath = ["#/BuildTools/SCons/Tools"])
qt4modules = ['QtCore', 'QtWebKit', 'QtGui']
if myenv["qt5"] :
qt_version = '5'
qt4modules += ['QtWidgets', 'QtWebKitWidgets', 'QtMultimedia']
if env["PLATFORM"] != "win32" and env["PLATFORM"] != "darwin" :
qt4modules += ['QtX11Extras']
else :
qt_version = '4'
if env["PLATFORM"] == "posix" :
qt4modules += ["QtDBus"]
if env["PLATFORM"] != "win32" and env["PLATFORM"] != "darwin" :
qt4modules += ["QtNetwork"]
myenv.EnableQt4Modules(qt4modules, debug = False, version = qt_version)
myenv.Append(CPPPATH = ["."])
+# Qt requires applications to be build with the -fPIC flag on some 32-bit Linux distributions.
+if env["PLATFORM"] == "posix" :
+ testEnv = myenv.Clone()
+ conf = Configure(testEnv)
+ if conf.CheckDeclaration("QT_REDUCE_RELOCATIONS", "#include <QtCore/qconfig.h>") and conf.CheckDeclaration("__i386__"):
+ myenv.AppendUnique(CXXFLAGS = "-fPIC")
+ testEnv = conf.Finish()
+
if env["PLATFORM"] == "win32" :
#myenv.Append(LINKFLAGS = ["/SUBSYSTEM:CONSOLE"])
myenv.Append(LINKFLAGS = ["/SUBSYSTEM:WINDOWS"])
myenv.Append(LIBS = "qtmain")
if myenv.get("HAVE_SCHANNEL", 0) :
myenv.Append(LIBS = "Cryptui")
myenv.Append(CPPDEFINES = "HAVE_SCHANNEL")
if env["debug"] and not env["optimize"]:
myenv.Append(LINKFLAGS = ["/NODEFAULTLIB:msvcrt"])
myenv.WriteVal("DefaultTheme.qrc", myenv.Value(generateDefaultTheme(myenv.Dir("#/Swift/resources/themes/Default"))))
sources = [
"main.cpp",
"QtAboutWidget.cpp",
"QtSpellCheckerWindow.cpp",
"QtAvatarWidget.cpp",
"QtUIFactory.cpp",
"QtChatWindowFactory.cpp",
"QtClickableLabel.cpp",
"QtLoginWindow.cpp",
"QtMainWindow.cpp",
"QtProfileWindow.cpp",
"QtBlockListEditorWindow.cpp",
"QtNameWidget.cpp",
"QtSettingsProvider.cpp",
"QtStatusWidget.cpp",
"QtScaledAvatarCache.cpp",
"QtSwift.cpp",
"QtURIHandler.cpp",