summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2016-06-30Add initial support for code signing on OS XTobias Markmann
See DEVELOPMENT.md for instructions. Test-Information: Tested using a self-signed code signing certificate created using Keychain Access.app. Compared the output of 'codesign -vvv -d' on Swift.app with preinstall apps. The output looks much the same except for the signing authority. Change-Id: Idbb3209ad917091c371ced61ec8a77e3e5d18884
2016-06-23Improve Linux spell checking UX and enable it by defaultTobias Markmann
This removes support for user dictionaries for now. The new UI shows a list human readable languages (in their native spelling) where the user can select one to use for spell checking. Updated our InstallSwiftDependencies.sh based on the package names in their repositories. Test-Information: Tested on Ubuntu 16.04 with Hunspell and tested it still builds on OS X 10.11.4. Did not test InstallSwiftDependencies.sh. Change-Id: I24fc705b1495f7c39a8da149cbd7116e41609998
2016-06-14Re-enable support for system libminiupnpc and libnatpmpTobias Markmann
Test-Information: Unit and integration tests pass with system libs on Debian 8.5. Change-Id: Ibcf7a1e07071d5de10c9d99c9b38e67b747f45eb
2016-06-10Fix remaining compiler warnings on OS X with clangTobias Markmann
This changes HippoMocks include to -isystem include so it will not cause compiler warnings. This changes UserLocation floating point values to double and remove remaining numerical casts. Change C++11 compiler test to not cause warnings. Test-Information: Builds with allow_warnings=0 on OS X 10.11.5 with Xcode clang. Change-Id: I26c60265a86c9be656089ade63fe9ad63851580f
2016-06-02Ignore warning 4503 when building with MS Visual Studio compilerTobias Markmann
This warning is generated when symbol names exceed a character limit. This can happen fast with layered C++ templates. Test-Information: Tested with Visual Studio 2013 that the warning is not issued anymore when building BoostConnectionTest. Change-Id: I21c1e37ed6306f2da92dc7f78a1c16f26db0daf2
2016-06-02Implement allow_warnings SCons flag for WindowsTobias Markmann
Test-Information: Build failed correctly on error on Windows 8 with Visual Studio 2013. Change-Id: I1afc7a8a4cf0449057959638709c80c7ded8a5a6
2016-04-25Convert hard tabs to four spaces in all our SConscript/*.py filesTobias Markmann
Test-Information: Test that it still builds and unit test pass on OS X 10.11.4. Change-Id: I2eb4a0b707991aee553db36a8cd1ae28b813acab
2016-04-25Add Lato font and use it in chat view themeTobias Markmann
The font has been imported from the TTF version available from http://www.latofonts.com/lato-free-fonts/ . This commit also adds default parameters to all Qt resource compiler calls, so that files that compress by more than 5% are compressed with the highest compression level. Ideally this will lead to smaller resource C++ source code files that will require less runtime memory when compiled. VS's cl.exe is particular resource hungry. Test-Information: Started Swift and verified the new font is used correctly in chat views. Change-Id: I0b450819b0f50041e768deca6e0ef5619b45d7bf
2016-04-25Require a configured TLS backend to buildTobias Markmann
Converted relevant SCons files from hard tabs to space based indentation with 4 spaces width. Test-Information: Tested that build failed with misconfigured OpenSSL backend (providing tls_backend=openssl on OS X and no information on where to find it). Tested that build succeeds on OS X 10.11.4. Change-Id: I17f85ca3194f100f63361a8c94667d7aa76e811a
2016-04-14Set QT_SELECT environment variable during scons buildTobias Markmann
This enables building on Gentoo. Test-Information: A user successfully built with this patch and both Qt4 and Qt5 installed. Change-Id: I81ada408d34208bbba22d30de5f4ecd0060e223f
2016-04-07Fix building with system boost on Debian 8.4Tobias Markmann
The signals library is still called signals and not signals2. Test-Information: Builds and unit tests pass on Debian 8.4 with system GCC. Change-Id: I1d1b3f6bade979bc8a181915176b84be0ddf6597
2016-04-06Add distcc support to our SCons scriptTobias Markmann
Just pass distcc=1 and set cxx=distcc clang++ and cc=distcc clang and use an appropriate parallelization argument (-j). Converted hard tabs to spaces in the process. Test-Information: Used distcc with -j 10 to build the whole Swift project with unit tests in 13 minutes across 2 hosts. Change-Id: Ib6b63b5079872632a11c0fd28eb90b8901b956df
2016-04-05Migrate to Boost.Signals2 from Boost.SignalsTobias Markmann
Boost.Signals was deprecated and is not improved further. This patch removes Boost.Signals from 3rdParty and adds Boost.Signals2 and its dependencies. Also removed the Qt signals compatibility file Swiften/Base/boost_bsignals.h. Test-Information: Build and ran unit tests on OS X 10.11.4. Confirmed successful login using Swift client. Change-Id: Ie6e3b2d15aac2462cda95401582f5287a479fb54
2016-03-14Build all Swift projects as C++11Tobias Markmann
Added a SCons compiler test so that the build process fails early if C++11 is not supported. Remove C++11 checks as we now default to C++11 and they are not needed anymore. Ignore a Clang warning if building 3rdParty Boost. Test-Information: Tested build and unit tests on OS X 10.11.3. Change-Id: Icbecbd1e25e8d8bbe5f402f75355373a86b5f8a1
2016-03-09Fix using external OpenSSL on Mac OS XTobias Markmann
This commit changes our TLS backend configuration behavior. It introduces the tls_backend Scons argument, which defaults to the native backend, but can also explicitly set to 'openssl' to use a project external OpenSSL installation or 'openssl_bundled' to build and configure with the OpenSSL source in the 3rdParty directory. Test-Information: Tested on OS X 10.11.3. ./scons ends up using Secure Transport. ./scons tls_backend=openssl \ openssl_include=/usr/local/opt/openssl/include \ openssl_libdir=/usr/local/opt/openssl/lib \ openssl=/usr/local/opt/openssl successfully builds with openssl from Homebrew. ./scons tls_backend=openssl_bundled successfully builds with OpenSSL in 3rdParty. Change-Id: I4fb0ef9d197609afe793554f86e54fe67fc1cab5
2016-02-29Fix scons2ninja toolingTobias Markmann
scons2ninja was broken since our last update to SCons in 3rdParty. This commit fixes it. This also includes a workaround to AppBundle.py working around an SCons encoding bug. Test-Information: Successfully run ./BuildTools/scons2ninja.py followed by ninja. Change-Id: I2f9dbbb33dc559ca339bb26ba11b885b39135011
2016-02-25Disable Hunspell support by default as it is not finished yetTobias Markmann
Our Hunspell support has not been finished and thoroughly tested yet. This commit disabled building with Hunspell by default, even if the dependencies for it are installed on the system. Remove libhunspell-dev from the build depends in Debian packaging. Test-Information: Tested on Debian 8. Tested with and without the hunspell_enable=True flag. With the spellchecking options are shown and however spell checking is not stable. Without it the spellchecking options are not shown and spellchecking is disabled in general, as expected. Change-Id: I100582852cbe128149fdb2e2a28d4ae407398be6
2016-02-15Improve SCons reporting on missing Qt toolsTobias Markmann
This will print errors like missing Qt linguist tools. Test-Information: Tested on Fedora 22 and OS X 10.11.3. Change-Id: I0817f368920b839805597d8eb2f3297b1fbd90e6
2016-01-16Remove warning about undefined QTDIR environment variableTobias Markmann
It used to be a common way to use the QTDIR environment variable to tell SCons the location of the Qt installation on the system. Swift however uses the 'qt' SCons config variable for the location and the 'qt5' variable for the version of Qt to use. On Unix/Linux systems with pkg-config, SCons will use it to detect the Qt installation and its flags. The QTDIR environment variable is rarely used and tested so the warning about missing environment variable is removed. Test-Information: Tested on Debian 8. Change-Id: I2cd793f12b8607743db2848765011cc719b106aa
2016-01-15Silence Boost Signals deprecation warning if using system BoostTobias Markmann
Test-Information: Tested on Debian 8 with system Boost packages. Change-Id: Ice6a98dc8ba3f09502d79e704c3e1b744d829d5d
2016-01-15Always link secur32.lib to Swiften on WindowsTobias Markmann
Even when using the OpenSSL TLS backend for Swiften secur32.lib is required by Swiften/SASL/WindowsAuthentication. This also adds additional flags needed to build a bundled OpenSSL on Windows. Test-Information: Tested on Windows 8 with VS 2013. Change-Id: I51da79cfa7931c07c8da3f0c5d941a637ac26d0c
2016-01-07Default to Qt5 for building SwiftTobias Markmann
Updated documentation accordingly. Test-Information: Build and ran unit tests on OS X 10.11.2. Change-Id: Iec4e82d3b63a6b0d24b854734879dd2fbfe17d79
2015-12-17Update SCons to version 2.4.0Tobias Markmann
Test-Information: Tested build works with upcoming fixes with VS 2015 Community. Change-Id: Ia4f78cc9efdae56ef78a2b7ae09f11fa1bd8bc37
2015-10-30Add support for OS X Secure Transport TLS backendTobias Markmann
Added integration tests for certificate validation and revocation behavior checking. Test-Information: Tested client login over TLS against Prosody and M-Link. Verified client certificate authentication works against M-Link. Change-Id: I6ad870f17adbf279f3bac913a3076909308a0021
2015-10-16Do not require complete Qt installation when building SwiftenTobias Markmann
Previously, if a base installation of Qt was available but not all Qt modules required by Swift are available Scons would fail configuration. If a basic Qt installation is available SCons will try to configure Swift even if you only want to build Swiften. This commit changes the hard failure in Swift configuration to a warning. This allows only Swiften to be build. In addition, the warning now lists the Qt packages required by Swift. Test-Information: Tested on Arch Linux. Change-Id: I220ea61a7e4af849912e1fb1ae66cbecf5136d29
2015-09-24Always include Qt5 audio plugins for Windows packagesTobias Markmann
At some point during the Qt5 timeline they moved platform dependent audio playback code into a plugin. This fix will ensure that audio plugins are always shipped with out packages. Test-Information: Tested playing sound works on Windows 7 and Windows 8. Change-Id: I8976f1c1fb85d5efaadec5db26adec907a0a9f7b
2015-08-11Add 'check_headers' flag to scons for missing include detectionTobias Markmann
Running './scons check_headers=1 will compile each header file as an object file. Test-Information: Tested on OS X 10.9.5 and Elementary OS 0.2. Change-Id: Ia429ccc6dc0a5bd76c08a2c2e91bf192c6ad2901
2015-07-07Use environment variables for addresses used in NetworkTestTobias Markmann
Introducing SWIFT_NETWORK_TEST_IPV4 and SWIFT_NETWORK_TEST_IPV6 for the host addresses used in BoostConnectionTest.cpp. Passing these variables and ASAN/LSAN_OPTIONS for memory leak detection when calling the test from SCons. Test-Information: Tested on Elementary OS with correct available hosts and unavailable hosts. In both cases the behavior is the same as before. Change-Id: I24128c766642c5a2ee273f7c11624525ae33e270
2015-07-07Fix './scons --help' if no Qt installation can be foundTobias Markmann
Test-Information: Tested on Elementary OS 0.2. Change-Id: Ieae4fc2a2c6fdfaaac9895153b09c9504ef71495
2015-06-29Add WindowsServicePrincipalName classMili Verma
Test-information: Tested on Windows using WIP GSSAPI code. Unit tests pass. Change-Id: If872863d6a8b5a164f8ebec4f88e9939b4e73c62
2015-06-25Fix qt4.py tool for ArchTobias Markmann
The tool had syntax errors (missing subprocess. in front of PIPE) and SCons errors (missing conf.Finish() calls). Test-Information: Tested on Arch Linux 1.4. Change-Id: Ibab23e1dc776ee9fe96de45221c4fb9659f4a185
2015-06-18Have SCons qt4 tool check for real moc or qtchooserTobias Markmann
Some platforms, e.g. KUbuntu, provide a wrapper around Qt's commands that allow easy switching between different Qt versions. With this change SCons will execute the found moc tool and check whether it works or not. Test-Information: Tested with correctly installed Qt and uninstalled Qt on KUbuntu 14.04. Change-Id: I88f0a36af462e909829c30115aa5481abdcd3ac6
2015-06-14Fix SCons qt4 tool pkg-config detectionTobias Markmann
Correctly use pkg-config to test for Qt, if no qt path is specified in config.py. 'Import(…)' at the top caused an error which was hidden by try/catch at upper layer. Test-Information: Tested on Kubuntu 14.04, with and w/o qt path set and verified that no exception is thrown if Qt is registered at pkg-config. Change-Id: I82800c23e9f75bd5f6b136fe384a70165a92bb45
2015-06-02Fix qt4.py Scons module pkg-config support in case Qt is not presentTobias Markmann
Test-Information: Tested on Elementary OS 0.2.1 with all Qt components uninstalled. Previously it would abort configuration and build. Now it simply builds without Swift and other parts depending on Qt. Change-Id: I84c91985a0ba1fdab98e97f80621cd41e0a7507b
2015-05-26Have cl.exe write debug info to independent files for reliable parallel buildsTobias Markmann
By default cl.exe writes debug info to a static file name resulting in all cl.exe trying to write to the same file when using parallel builds. This leads to race conditions and can have parallel builds fail. This only takes effect if parallel builds are made by scons. Test-Information: Tested with VS 2013. Change-Id: I8ea7e9370f5b149ded608e4c6f5e66a3fc6301c4
2015-05-26Fix SCons architecture detection on FreeBSD 10Tobias Markmann
Test-Information: Tested on FreeBSD 10.0. Change-Id: Ic1c8a1637f0fbc9128973b41d6988a8afd61e387
2015-05-19Consolidate Python and SCons files to tab based indentationTobias Markmann
Test-Information: Verified that SCons still runs on OS X. Change-Id: I7e9b97f90ee5581a691a959b6f2c999d93e0be53
2015-05-19Gracefully handle pkg-config when Qt is not installedTobias Markmann
Test-Information: Tested on Elementary OS 0.2.0. Without this patch scons crashed if not all required Qt libs are installed. Now it marks Qt as unavailable and will configure a build without Swift. Change-Id: I5aa28ab8438e4c326d16413deb3a3fa739c94480
2015-05-07Add support for Qt 5.4.1 to build and distribution process on WindowsTobias Markmann
Test-Information: Tested with Qt 5.3.2 and Qt 5.4.1 from qt.io website. Change-Id: Iada3e64e530d8a5b53b8b5c8943bcafbd9bd6c64
2015-05-04Correctly handle full paths when detecting Clang/GCC compilersTobias Markmann
Test-Information: Tested behavior on Elementary OS 0.2.1. Change-Id: I887b85b78bfe5210844e0ea31f496fdbc8c21fa0
2015-05-04Ignore 3rdParty warnings on Linux platforms when using Clang or GCCTobias Markmann
Test-Information: Tested behavior on Elementary OS 0.2.1. Change-Id: Icc0611181fbf7dbe22d6c0c8cb18be9c1cdbc138
2015-04-30Disable potentially-evaluated-expression Clang warningTobias Markmann
Test-Information: Verified with Clang 3.7.0 on OS X. Change-Id: I345ef288163214288d41c3980c8e67529db0657d
2015-04-29Ignore compiler warnings from 3rdParty librariesTobias Markmann
When compiling with Clang or GCC, include 3rdParty libraries as system headers and frameworks (-isystem and -f). Test-Information: Tested with Clang on OS X. Change-Id: I184221ddc4b34d30ee6ba66e202953619b5afd56
2015-04-28Add Qt flags detection using pkg-config on Linux platformsTobias Markmann
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
2015-04-09Disable documentation-unknown-command warnings in clangTobias Markmann
Test-Information: Tested on OS X 10.9.5 with Clang 3.7.0. Change-Id: Ic3a5ec77ca488c1688da35f75dd7424f8f59784b
2015-03-27Improve Windows MSI installer upgrade experienceTobias Markmann
Previously every time WiX heat.exe ran it generated new GUIDs for all the file components that MSI was going to install. Windows installer deletes components if there is no software/component left that is referencing it. This patch uses the -ag flag instead of the -gg flag for heat.exe so it will generate deterministic GUIDs based on the filename and other things instead of completely random new one on each run. In addition we schedule the upgrade to run after the new version has been installed. This way old files are first replaced with the new ones, shortcuts remain and are not deleted, pinned shortcuts remain usable. Afterwards MSI uninstalls the old version, specifically the components that are not reference anymore. Test-Information: Tested (a) two version upgrade with this patch and (b) an upgrade from a version without this patch to a version with this patch. a) The upgrade works as expected. MSI installs the new version and then uninstalls the old version. The pinned shortcut stays alive and works. b) In this case during the deinstallation files of the new installation are deleted, since there are two components with different GUIDs which however use the same filenames. Running a repair on this installation, or first deinstalling the old version and then the new one manually fixes this. Change-Id: I842a288d837962e77efaa15b17d3877e923c7e49
2015-02-12Fix missing to return some dependencies in windeployqt-based ↵Tobias Markmann
createWindowsBundle implementation Test-Information: Did a clear rebuild with dist=1 and confirmed that it now starts the WiX process after all dependencies are copied over. Change-Id: Icbb9ec127b0d56e10f2620790f0fc6b6a29d5aa5
2015-02-06Use windeployqt.exe if available and Win distribution documentation fixTobias Markmann
If windeployqt.exe is available for Qt5, it will be used to detect which Qt DLLs to put in the Windows distribution and its dependencies correctly. Added a note to our Windows building documentation about the VS redistributable. Test-Information: Tested building a MSI package on Windows 8.1 Pro with Qt 5.3.2 32-bit msvc2013_opengl which successfully installs and runs. Change-Id: I786da40d6467f1de8e64bfae275f8363ac1d5ba8
2014-12-10Use ar tool from the cross-compiling toolchain when building for Android.Tobias Markmann
Test-Information: Tested with nm tool from cross-compiling toolchain. Before it would report 'Malformed archive' for libSwiften.a. Now it correctly lists all symbols without reporting an error. Change-Id: I3901bb206487a05124986bbdc53f336aed932f5b
2014-11-24Disable file-transfer support for iOS.Tobias Markmann
iOS SDK does not have net/route.h interface as part of its public API. File-transfer requires UPnP/NAT-PMP for a good user experience which in turn require detection of the default gateway/router. Disabiling file-transfer support for iOS until we know a valid way to detect the default gateway/router on iOS. Test-Information: Tested against iPhone/iPhoneSimulator8.1 SDKs. Change-Id: I1303f37c025e8c6309acefcd80b9b30a3ac18fbb