diff options
Diffstat (limited to 'Swift/QtUI/SConscript')
-rw-r--r-- | Swift/QtUI/SConscript | 682 |
1 files changed, 345 insertions, 337 deletions
diff --git a/Swift/QtUI/SConscript b/Swift/QtUI/SConscript index c8313c2..88cb1ac 100644 --- a/Swift/QtUI/SConscript +++ b/Swift/QtUI/SConscript @@ -1,21 +1,21 @@ import os, datetime, re, time import Version -def generateDefaultTheme(dir) : - sourceDir = dir.abspath - result = "<!-- WARNING: This file is automatically generated. Any changes will be overwritten. -->\n" - result += "<RCC version =\"1.0\">" - result += "<qresource prefix=\"/themes/Default\">" - for (path, dirs, files) in os.walk(sourceDir) : - for file in files : - filePath = os.path.join(path,file) - result += "<file alias=\"%(alias)s\">%(path)s</file>" % { - "alias": filePath[len(sourceDir)+1:], - "path": filePath - } - result += "</qresource>" - result += "</RCC>" - return result +def generateQRCTheme(dir, prefix) : + sourceDir = dir.abspath + result = "<!-- WARNING: This file is automatically generated. Any changes will be overwritten. -->\n" + result += "<RCC version =\"1.0\">" + result += "<qresource prefix=\"/themes/" + prefix + "\">" + for (path, dirs, files) in os.walk(sourceDir) : + for file in files : + filePath = os.path.join(path,file) + result += "<file alias=\"%(alias)s\">%(path)s</file>" % { + "alias": filePath[len(sourceDir)+1:], + "path": filePath + } + result += "</qresource>" + result += "</RCC>" + return result Import("env") @@ -24,33 +24,30 @@ myenv = env.Clone() # Disable warnings that affect Qt myenv["CXXFLAGS"] = filter(lambda x : x != "-Wfloat-equal", myenv["CXXFLAGS"]) if "clang" in env["CC"] : - myenv.Append(CXXFLAGS = ["-Wno-float-equal", "-Wno-shorten-64-to-32", "-Wno-missing-prototypes", "-Wno-unreachable-code", "-Wno-disabled-macro-expansion", "-Wno-unused-private-field", "-Wno-extra-semi", "-Wno-duplicate-enum", "-Wno-missing-variable-declarations", "-Wno-conversion", "-Wno-undefined-reinterpret-cast"]) + myenv.Append(CXXFLAGS = ["-Wno-float-equal", "-Wno-shorten-64-to-32", "-Wno-missing-prototypes", "-Wno-unreachable-code", "-Wno-disabled-macro-expansion", "-Wno-unused-private-field", "-Wno-extra-semi", "-Wno-duplicate-enum", "-Wno-missing-variable-declarations", "-Wno-conversion", "-Wno-undefined-reinterpret-cast"]) myenv.UseFlags(env["SWIFT_CONTROLLERS_FLAGS"]) myenv.UseFlags(env["SWIFTOOLS_FLAGS"]) if myenv["HAVE_XSS"] : - myenv.UseFlags(env["XSS_FLAGS"]) + myenv.UseFlags(env["XSS_FLAGS"]) if env["PLATFORM"] == "posix" : - myenv.Append(LIBS = ["X11"]) + myenv.Append(LIBS = ["X11"]) if myenv["HAVE_SPARKLE"] : - myenv.UseFlags(env["SPARKLE_FLAGS"]) + myenv.UseFlags(env["SPARKLE_FLAGS"]) myenv.UseFlags(env["SWIFTEN_FLAGS"]) myenv.UseFlags(env["SWIFTEN_DEP_FLAGS"]) if myenv.get("HAVE_BREAKPAD") : - myenv.UseFlags(env["BREAKPAD_FLAGS"]) + myenv.UseFlags(env["BREAKPAD_FLAGS"]) if myenv.get("HAVE_GROWL", False) : - myenv.UseFlags(myenv["GROWL_FLAGS"]) - myenv.Append(CPPDEFINES = ["HAVE_GROWL"]) + myenv.UseFlags(myenv["GROWL_FLAGS"]) + myenv.Append(CPPDEFINES = ["HAVE_GROWL"]) if myenv["swift_mobile"] : - myenv.Append(CPPDEFINES = ["SWIFT_MOBILE"]) -if myenv.get("HAVE_SNARL", False) : - myenv.UseFlags(myenv["SNARL_FLAGS"]) - myenv.Append(CPPDEFINES = ["HAVE_SNARL"]) + myenv.Append(CPPDEFINES = ["SWIFT_MOBILE"]) if myenv.get("HAVE_HUNSPELL", True): - myenv.Append(CPPDEFINES = ["HAVE_HUNSPELL"]) - myenv.UseFlags(myenv["HUNSPELL_FLAGS"]) + myenv.Append(CPPDEFINES = ["HAVE_HUNSPELL"]) + myenv.UseFlags(myenv["HUNSPELL_FLAGS"]) if env["PLATFORM"] == "win32" : - myenv.Append(LIBS = ["cryptui"]) + myenv.Append(LIBS = ["cryptui"]) myenv.UseFlags(myenv["PLATFORM_FLAGS"]) myenv.Tool("qt4", toolpath = ["#/BuildTools/SCons/Tools"]) @@ -59,16 +56,18 @@ 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'] + qt_version = '5' + # QtSvg is required so the image format plugin for SVG images is installed + # correctly by Qt's deployment tools. + qt4modules += ['QtWidgets', 'QtWebKitWidgets', 'QtMultimedia', 'QtSvg'] + if env["PLATFORM"] != "win32" and env["PLATFORM"] != "darwin" : + qt4modules += ['QtX11Extras'] else : - qt_version = '4' + qt_version = '4' if env["PLATFORM"] == "posix" : - qt4modules += ["QtDBus"] + qt4modules += ["QtDBus"] if env["PLATFORM"] != "win32" and env["PLATFORM"] != "darwin" : - qt4modules += ["QtNetwork"] + qt4modules += ["QtNetwork"] myenv.EnableQt4Modules(qt4modules, debug = False, version = qt_version) @@ -76,167 +75,170 @@ 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() + 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.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") -myenv.WriteVal("DefaultTheme.qrc", myenv.Value(generateDefaultTheme(myenv.Dir("#/Swift/resources/themes/Default")))) +if env["PLATFORM"] == "darwin" and env["HAVE_SPARKLE"] : + myenv.Append(LINKFLAGS = ["-Wl,-rpath,@loader_path/../Frameworks"]) + +myenv.WriteVal("DefaultTheme.qrc", myenv.Value(generateQRCTheme(myenv.Dir("#/Swift/resources/themes/Default"), "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", - "QtChatWindow.cpp", - "QtChatView.cpp", - "QtWebKitChatView.cpp", - "QtPlainChatView.cpp", - "QtChatTheme.cpp", - "QtChatTabs.cpp", - "QtChatTabsBase.cpp", - "QtChatTabsShortcutOnlySubstitute.cpp", - "QtSoundPlayer.cpp", - "QtSystemTray.cpp", - "QtCachedImageScaler.cpp", - "QtTabbable.cpp", - "QtTabWidget.cpp", - "QtTextEdit.cpp", - "QtXMLConsoleWidget.cpp", - "QtHistoryWindow.cpp", - "QtFileTransferListWidget.cpp", - "QtFileTransferListItemModel.cpp", - "QtAdHocCommandWindow.cpp", - "QtAdHocCommandWithJIDWindow.cpp", - "QtUtilities.cpp", - "QtBookmarkDetailWindow.cpp", - "QtAddBookmarkWindow.cpp", - "QtEditBookmarkWindow.cpp", - "QtEmoticonsGrid.cpp", - "QtEmoticonCell.cpp", - "QtContactEditWindow.cpp", - "QtContactEditWidget.cpp", - "QtSingleWindow.cpp", - "QtHighlightEditor.cpp", - "QtColorToolButton.cpp", - "QtClosableLineEdit.cpp", - "ChatSnippet.cpp", - "MessageSnippet.cpp", - "SystemMessageSnippet.cpp", - "QtElidingLabel.cpp", - "QtFormWidget.cpp", - "QtFormResultItemModel.cpp", - "QtLineEdit.cpp", - "QtJoinMUCWindow.cpp", - "QtConnectionSettingsWindow.cpp", - "Roster/RosterModel.cpp", - "Roster/QtTreeWidget.cpp", -# "Roster/QtTreeWidgetItem.cpp", - "Roster/RosterDelegate.cpp", - "Roster/GroupItemDelegate.cpp", - "Roster/DelegateCommons.cpp", - "Roster/QtFilterWidget.cpp", - "Roster/QtRosterWidget.cpp", - "Roster/QtOccupantListWidget.cpp", - "Roster/RosterTooltip.cpp", - "EventViewer/EventModel.cpp", - "EventViewer/EventDelegate.cpp", - "EventViewer/TwoLineDelegate.cpp", - "EventViewer/QtEventWindow.cpp", - "EventViewer/QtEvent.cpp", - "ChatList/QtChatListWindow.cpp", - "ChatList/ChatListModel.cpp", - "ChatList/ChatListDelegate.cpp", - "ChatList/ChatListMUCItem.cpp", - "ChatList/ChatListRecentItem.cpp", - "ChatList/ChatListWhiteboardItem.cpp", - "MUCSearch/QtMUCSearchWindow.cpp", - "MUCSearch/MUCSearchModel.cpp", - "MUCSearch/MUCSearchRoomItem.cpp", - "MUCSearch/MUCSearchEmptyItem.cpp", - "MUCSearch/MUCSearchDelegate.cpp", - "UserSearch/ContactListDelegate.cpp", - "UserSearch/ContactListModel.cpp", - "UserSearch/QtContactListWidget.cpp", - "UserSearch/QtSuggestingJIDInput.cpp", - "UserSearch/QtUserSearchFirstPage.cpp", - "UserSearch/QtUserSearchFirstMultiJIDPage.cpp", - "UserSearch/QtUserSearchFieldsPage.cpp", - "UserSearch/QtUserSearchResultsPage.cpp", - "UserSearch/QtUserSearchDetailsPage.cpp", - "UserSearch/QtUserSearchWindow.cpp", - "UserSearch/UserSearchModel.cpp", - "UserSearch/UserSearchDelegate.cpp", - "Whiteboard/FreehandLineItem.cpp", - "Whiteboard/GView.cpp", - "Whiteboard/TextDialog.cpp", - "Whiteboard/QtWhiteboardWindow.cpp", - "Whiteboard/ColorWidget.cpp", - "QtSubscriptionRequestWindow.cpp", - "QtRosterHeader.cpp", - "QtWebView.cpp", - "qrc_DefaultTheme.cc", - "qrc_Swift.cc", - "QtChatWindowJSBridge.cpp", - "QtMUCConfigurationWindow.cpp", - "QtAffiliationEditor.cpp", - "QtUISettingConstants.cpp", - "QtURLValidator.cpp", - "QtResourceHelper.cpp", - "QtSpellCheckHighlighter.cpp", - "Trellis/QtDynamicGridLayout.cpp", - "Trellis/QtDNDTabBar.cpp", - "Trellis/QtGridSelectionDialog.cpp" + "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", + "QtChatWindow.cpp", + "QtChatView.cpp", + "QtWebKitChatView.cpp", + "QtPlainChatView.cpp", + "QtChatTheme.cpp", + "QtChatTabs.cpp", + "QtChatTabsBase.cpp", + "QtChatTabsShortcutOnlySubstitute.cpp", + "QtSoundPlayer.cpp", + "QtSystemTray.cpp", + "QtCachedImageScaler.cpp", + "QtTabbable.cpp", + "QtTabWidget.cpp", + "QtTextEdit.cpp", + "QtXMLConsoleWidget.cpp", + "QtHistoryWindow.cpp", + "QtFileTransferListWidget.cpp", + "QtFileTransferListItemModel.cpp", + "QtAdHocCommandWindow.cpp", + "QtAdHocCommandWithJIDWindow.cpp", + "QtUtilities.cpp", + "QtBookmarkDetailWindow.cpp", + "QtAddBookmarkWindow.cpp", + "QtEditBookmarkWindow.cpp", + "QtEmoticonsGrid.cpp", + "QtEmoticonCell.cpp", + "QtContactEditWindow.cpp", + "QtContactEditWidget.cpp", + "QtSingleWindow.cpp", + "QtHighlightEditor.cpp", + "QtColorToolButton.cpp", + "QtClosableLineEdit.cpp", + "ChatSnippet.cpp", + "MessageSnippet.cpp", + "SystemMessageSnippet.cpp", + "QtElidingLabel.cpp", + "QtFormWidget.cpp", + "QtFormResultItemModel.cpp", + "QtLineEdit.cpp", + "QtJoinMUCWindow.cpp", + "QtConnectionSettingsWindow.cpp", + "Roster/RosterModel.cpp", + "Roster/QtTreeWidget.cpp", + "Roster/RosterDelegate.cpp", + "Roster/GroupItemDelegate.cpp", + "Roster/DelegateCommons.cpp", + "Roster/QtFilterWidget.cpp", + "Roster/QtRosterWidget.cpp", + "Roster/QtOccupantListWidget.cpp", + "Roster/RosterTooltip.cpp", + "EventViewer/EventModel.cpp", + "EventViewer/EventDelegate.cpp", + "EventViewer/TwoLineDelegate.cpp", + "EventViewer/QtEventWindow.cpp", + "EventViewer/QtEvent.cpp", + "ChatList/QtChatListWindow.cpp", + "ChatList/ChatListModel.cpp", + "ChatList/ChatListDelegate.cpp", + "ChatList/ChatListMUCItem.cpp", + "ChatList/ChatListRecentItem.cpp", + "ChatList/ChatListWhiteboardItem.cpp", + "MUCSearch/MUCSearchDelegate.cpp", + "MUCSearch/MUCSearchEmptyItem.cpp", + "MUCSearch/MUCSearchModel.cpp", + "MUCSearch/MUCSearchRoomItem.cpp", + "MUCSearch/MUCSearchServiceItem.cpp", + "MUCSearch/QtLeafSortFilterProxyModel.cpp", + "MUCSearch/QtMUCSearchWindow.cpp", + "UserSearch/ContactListDelegate.cpp", + "UserSearch/ContactListModel.cpp", + "UserSearch/QtContactListWidget.cpp", + "UserSearch/QtSuggestingJIDInput.cpp", + "UserSearch/QtUserSearchFirstPage.cpp", + "UserSearch/QtUserSearchFirstMultiJIDPage.cpp", + "UserSearch/QtUserSearchFieldsPage.cpp", + "UserSearch/QtUserSearchResultsPage.cpp", + "UserSearch/QtUserSearchDetailsPage.cpp", + "UserSearch/QtUserSearchWindow.cpp", + "UserSearch/UserSearchModel.cpp", + "UserSearch/UserSearchDelegate.cpp", + "Whiteboard/FreehandLineItem.cpp", + "Whiteboard/GView.cpp", + "Whiteboard/TextDialog.cpp", + "Whiteboard/QtWhiteboardWindow.cpp", + "Whiteboard/ColorWidget.cpp", + "QtSubscriptionRequestWindow.cpp", + "QtRosterHeader.cpp", + "QtWebView.cpp", + "qrc_DefaultTheme.cc", + "qrc_Swift.cc", + "QtChatWindowJSBridge.cpp", + "QtMUCConfigurationWindow.cpp", + "QtAffiliationEditor.cpp", + "QtUISettingConstants.cpp", + "QtURLValidator.cpp", + "QtResourceHelper.cpp", + "QtSpellCheckHighlighter.cpp", + "QtUpdateFeedSelectionDialog.cpp", + "Trellis/QtDynamicGridLayout.cpp", + "Trellis/QtDNDTabBar.cpp", + "Trellis/QtGridSelectionDialog.cpp" ] if env["PLATFORM"] == "win32" : - sources.extend(["qrc_SwiftWindows.cc"]) + sources.extend(["qrc_SwiftWindows.cc"]) # QtVCardWidget sources.extend([ - "QtVCardWidget/QtCloseButton.cpp", - "QtVCardWidget/QtRemovableItemDelegate.cpp", - "QtVCardWidget/QtResizableLineEdit.cpp", - "QtVCardWidget/QtTagComboBox.cpp", - "QtVCardWidget/QtVCardHomeWork.cpp", - "QtVCardWidget/QtVCardAddressField.cpp", - "QtVCardWidget/QtVCardAddressLabelField.cpp", - "QtVCardWidget/QtVCardBirthdayField.cpp", - "QtVCardWidget/QtVCardDescriptionField.cpp", - "QtVCardWidget/QtVCardInternetEMailField.cpp", - "QtVCardWidget/QtVCardJIDField.cpp", - "QtVCardWidget/QtVCardOrganizationField.cpp", - "QtVCardWidget/QtVCardPhotoAndNameFields.cpp", - "QtVCardWidget/QtVCardRoleField.cpp", - "QtVCardWidget/QtVCardTelephoneField.cpp", - "QtVCardWidget/QtVCardTitleField.cpp", - "QtVCardWidget/QtVCardURLField.cpp", - "QtVCardWidget/QtVCardGeneralField.cpp", - "QtVCardWidget/QtVCardWidget.cpp" + "QtVCardWidget/QtCloseButton.cpp", + "QtVCardWidget/QtRemovableItemDelegate.cpp", + "QtVCardWidget/QtResizableLineEdit.cpp", + "QtVCardWidget/QtTagComboBox.cpp", + "QtVCardWidget/QtVCardHomeWork.cpp", + "QtVCardWidget/QtVCardAddressField.cpp", + "QtVCardWidget/QtVCardAddressLabelField.cpp", + "QtVCardWidget/QtVCardBirthdayField.cpp", + "QtVCardWidget/QtVCardDescriptionField.cpp", + "QtVCardWidget/QtVCardInternetEMailField.cpp", + "QtVCardWidget/QtVCardJIDField.cpp", + "QtVCardWidget/QtVCardOrganizationField.cpp", + "QtVCardWidget/QtVCardPhotoAndNameFields.cpp", + "QtVCardWidget/QtVCardRoleField.cpp", + "QtVCardWidget/QtVCardTelephoneField.cpp", + "QtVCardWidget/QtVCardTitleField.cpp", + "QtVCardWidget/QtVCardURLField.cpp", + "QtVCardWidget/QtVCardGeneralField.cpp", + "QtVCardWidget/QtVCardWidget.cpp" ]) myenv.Uic4("QtVCardWidget/QtVCardPhotoAndNameFields.ui") @@ -247,52 +249,52 @@ myenv.Uic4("QtProfileWindow.ui") # Determine the version myenv["SWIFT_VERSION"] = Version.getBuildVersion(env.Dir("#").abspath, "swift") if env["PLATFORM"] == "win32" : - swift_windows_version = Version.convertToWindowsVersion(myenv["SWIFT_VERSION"]) - myenv["SWIFT_VERSION_MAJOR"] = swift_windows_version[0] - myenv["SWIFT_VERSION_MINOR"] = swift_windows_version[1] - myenv["SWIFT_VERSION_PATCH"] = swift_windows_version[2] + swift_windows_version = Version.convertToWindowsVersion(myenv["SWIFT_VERSION"]) + myenv["SWIFT_VERSION_MAJOR"] = swift_windows_version[0] + myenv["SWIFT_VERSION_MINOR"] = swift_windows_version[1] + myenv["SWIFT_VERSION_PATCH"] = swift_windows_version[2] if env["PLATFORM"] == "win32" : - res_env = myenv.Clone() - res_env.Append(CPPDEFINES = [ - ("SWIFT_COPYRIGHT_YEAR", "\"\\\"2010-%s\\\"\"" % str(time.localtime()[0])), - ("SWIFT_VERSION_MAJOR", "${SWIFT_VERSION_MAJOR}"), - ("SWIFT_VERSION_MINOR", "${SWIFT_VERSION_MINOR}"), - ("SWIFT_VERSION_PATCH", "${SWIFT_VERSION_PATCH}"), - ]) - res = res_env.RES("#/Swift/resources/Windows/Swift.rc") - # For some reason, SCons isn't picking up the dependency correctly - # Adding it explicitly until i figure out why - myenv.Depends(res, "../Controllers/BuildVersion.h") - sources += [ - "WinUIHelpers.cpp", - "CAPICertificateSelector.cpp", - "WindowsNotifier.cpp", - "#/Swift/resources/Windows/Swift.res" - ] + res_env = myenv.Clone() + res_env.Append(CPPDEFINES = [ + ("SWIFT_COPYRIGHT_YEAR", "\"\\\"2010-%s\\\"\"" % str(time.localtime()[0])), + ("SWIFT_VERSION_MAJOR", "${SWIFT_VERSION_MAJOR}"), + ("SWIFT_VERSION_MINOR", "${SWIFT_VERSION_MINOR}"), + ("SWIFT_VERSION_PATCH", "${SWIFT_VERSION_PATCH}"), + ]) + res = res_env.RES("#/Swift/resources/Windows/Swift.rc") + # For some reason, SCons isn't picking up the dependency correctly + # Adding it explicitly until i figure out why + myenv.Depends(res, "../Controllers/BuildVersion.h") + sources += [ + "WinUIHelpers.cpp", + "CAPICertificateSelector.cpp", + "WindowsNotifier.cpp", + "#/Swift/resources/Windows/Swift.res" + ] if env["PLATFORM"] == "posix" : - sources += [ - "FreeDesktopNotifier.cpp", - "QtDBUSURIHandler.cpp", - ] + sources += [ + "FreeDesktopNotifier.cpp", + "QtDBUSURIHandler.cpp", + ] if env["PLATFORM"] == "darwin" : - sources += ["CocoaApplicationActivateHelper.mm"] - sources += ["CocoaUIHelpers.mm"] + sources += ["CocoaApplicationActivateHelper.mm"] + sources += ["CocoaUIHelpers.mm"] if env["PLATFORM"] == "darwin" or env["PLATFORM"] == "win32" : - swiftProgram = myenv.Program("Swift", sources) + swiftProgram = myenv.Program("Swift", sources) else : - sources += ["QtCertificateViewerDialog.cpp"]; - myenv.Uic4("QtCertificateViewerDialog.ui"); - swiftProgram = myenv.Program("swift-im", sources) + sources += ["QtCertificateViewerDialog.cpp"]; + myenv.Uic4("QtCertificateViewerDialog.ui"); + swiftProgram = myenv.Program("swift-im", sources) if env["PLATFORM"] != "darwin" and env["PLATFORM"] != "win32" : - openURIProgram = myenv.Program("swift-open-uri", "swift-open-uri.cpp") + openURIProgram = myenv.Program("swift-open-uri", "swift-open-uri.cpp") else : - openURIProgram = [] + openURIProgram = [] myenv.Uic4("MUCSearch/QtMUCSearchWindow.ui") myenv.Uic4("UserSearch/QtUserSearchWizard.ui") @@ -308,15 +310,16 @@ myenv.Uic4("QtConnectionSettings.ui") myenv.Uic4("QtHighlightEditor.ui") myenv.Uic4("QtBlockListEditorWindow.ui") myenv.Uic4("QtSpellCheckerWindow.ui") +myenv.Uic4("QtUpdateFeedSelectionDialog.ui") myenv.Qrc("DefaultTheme.qrc") myenv.Qrc("Swift.qrc") if env["PLATFORM"] == "win32" : - myenv.Qrc("SwiftWindows.qrc") + myenv.Qrc("SwiftWindows.qrc") # Resources commonResources = { - "": ["#/Swift/resources/sounds"] + "": ["#/Swift/resources/sounds"] } myenv["TEXTFILESUFFIX"] = "" @@ -329,138 +332,143 @@ myenv.MyTextfile(target = "COPYING", source = [myenv.File("../../COPYING.gpl"), # Collect available languages translation_languages = [] for file in os.listdir(Dir("#/Swift/Translations").abspath) : - if file.startswith("swift_") and file.endswith(".ts") : - translation_languages.append(file[6:-3]) + if file.startswith("swift_") and file.endswith(".ts") : + translation_languages.append(file[6:-3]) # Generate translation modules translation_sources = [env.File("#/Swift/Translations/swift.ts").abspath] translation_modules = [] for lang in translation_languages : - translation_resource = "#/Swift/resources/translations/swift_" + lang + ".qm" - translation_source = "#/Swift/Translations/swift_" + lang + ".ts" - translation_sources.append(env.File(translation_source).abspath) - translation_modules.append(env.File(translation_resource).abspath) - myenv.Qm(translation_resource, translation_source) - commonResources["translations"] = commonResources.get("translations", []) + [translation_resource] + translation_resource = "#/Swift/resources/translations/swift_" + lang + ".qm" + translation_source = "#/Swift/Translations/swift_" + lang + ".ts" + translation_sources.append(env.File(translation_source).abspath) + translation_modules.append(env.File(translation_resource).abspath) + myenv.Qm(translation_resource, translation_source) + commonResources["translations"] = commonResources.get("translations", []) + [translation_resource] # LUpdate translation (if requested) if ARGUMENTS.get("update_translations", False) : - myenv.Precious(translation_sources) - remove_obsolete_option = "" - codecfortr = "" - if ARGUMENTS.get("remove_obsolete_translations", False) : - remove_obsolete_option = " -no-obsolete" - if qt_version == '4': - codecfortr = "-codecfortr UTF-8" - for translation_source in filter(lambda x: not x.endswith("_en.ts"), translation_sources) : - t = myenv.Command([translation_source], [], [myenv.Action("$QT4_LUPDATE -I " + env.Dir("#").abspath + remove_obsolete_option + " -silent " + codecfortr + " -recursive Swift -ts " + translation_source, cmdstr = "$QT4_LUPDATECOMSTR")]) - myenv.AlwaysBuild(t) + myenv.Precious(translation_sources) + remove_obsolete_option = "" + codecfortr = "" + if ARGUMENTS.get("remove_obsolete_translations", False) : + remove_obsolete_option = " -no-obsolete" + if qt_version == '4': + codecfortr = "-codecfortr UTF-8" + for translation_source in filter(lambda x: not x.endswith("_en.ts"), translation_sources) : + t = myenv.Command([translation_source], [], [myenv.Action("$QT4_LUPDATE -I " + env.Dir("#").abspath + remove_obsolete_option + " -silent " + codecfortr + " -recursive Swift -ts " + translation_source, cmdstr = "$QT4_LUPDATECOMSTR")]) + myenv.AlwaysBuild(t) # NSIS installation script if env["PLATFORM"] == "win32" : - nsis_translation_install_script = "" - nsis_translation_uninstall_script = "" - for lang in translation_languages : - nsis_translation_install_script += "File \"..\\..\\QtUI\\Swift\\translations\\swift_" + lang + ".qm\"\n" - nsis_translation_uninstall_script += "delete $INSTDIR\\translations\\swift_" + lang + ".qm\n" - myenv.WriteVal("../Packaging/nsis/translations-install.nsh", myenv.Value(nsis_translation_install_script)) - myenv.WriteVal("../Packaging/nsis/translations-uninstall.nsh", myenv.Value(nsis_translation_uninstall_script)) - + nsis_translation_install_script = "" + nsis_translation_uninstall_script = "" + for lang in translation_languages : + nsis_translation_install_script += "File \"..\\..\\QtUI\\Swift\\translations\\swift_" + lang + ".qm\"\n" + nsis_translation_uninstall_script += "delete $INSTDIR\\translations\\swift_" + lang + ".qm\n" + myenv.WriteVal("../Packaging/nsis/translations-install.nsh", myenv.Value(nsis_translation_install_script)) + myenv.WriteVal("../Packaging/nsis/translations-uninstall.nsh", myenv.Value(nsis_translation_uninstall_script)) + ################################################################################ if env["PLATFORM"] == "darwin" : - frameworks = [] - if env["HAVE_SPARKLE"] : - frameworks.append(env["SPARKLE_FRAMEWORK"]) - if env["HAVE_GROWL"] : - frameworks.append(env["GROWL_FRAMEWORK"]) - commonResources[""] = commonResources.get("", []) + ["#/Swift/resources/MacOSX/Swift.icns"] - app = myenv.AppBundle("Swift", version = myenv["SWIFT_VERSION"], resources = commonResources, frameworks = frameworks, handlesXMPPURIs = True) - if env["DIST"] : - myenv.Command(["#/Packages/Swift/Swift-${SWIFT_VERSION}.dmg"], [app], ["Swift/Packaging/MacOSX/package.sh " + app.path + " Swift/Packaging/MacOSX/Swift.dmg.gz $TARGET $QTDIR"]) - dsym = myenv.Command(["Swift-${SWIFT_VERSION}.dSYM"], ["Swift"], ["dsymutil -o ${TARGET} ${SOURCE}"]) - myenv.Command(["#/Packages/Swift/Swift-${SWIFT_VERSION}.dSYM.zip"], dsym, ["cd ${SOURCE.dir} && zip -r ${TARGET.abspath} ${SOURCE.name}"]) + frameworks = [] + if env["HAVE_SPARKLE"] : + frameworks.append(env["SPARKLE_FRAMEWORK"]) + if env["HAVE_GROWL"] : + frameworks.append(env["GROWL_FRAMEWORK"]) + commonResources[""] = commonResources.get("", []) + ["#/Swift/resources/MacOSX/Swift.icns"] + app = myenv.AppBundle("Swift", version = myenv["SWIFT_VERSION"], resources = commonResources, frameworks = frameworks, handlesXMPPURIs = True, sparklePublicDSAKey = myenv["SWIFT_SPARKLE_PUBLIC_DSA_KEY"]) + if env["DIST"] : + myenv.Command(["#/Packages/Swift/Swift-${SWIFT_VERSION}.dmg"], [app], ["Swift/Packaging/MacOSX/package.sh " + app.path + " Swift/Packaging/MacOSX/Swift.dmg.gz $TARGET $QTDIR " + "\"$CODE_SIGN_IDENTITY\""]) + dsym = myenv.Command(["Swift-${SWIFT_VERSION}.dSYM"], ["Swift"], ["dsymutil -o ${TARGET} ${SOURCE}"]) + myenv.Command(["#/Packages/Swift/Swift-${SWIFT_VERSION}.dSYM.zip"], dsym, ["cd ${SOURCE.dir} && zip -r ${TARGET.abspath} ${SOURCE.name}"]) if env.get("SWIFT_INSTALLDIR", "") : - env.Install(os.path.join(env["SWIFT_INSTALLDIR"], "bin"), swiftProgram + openURIProgram) - env.InstallAs(os.path.join(env["SWIFT_INSTALLDIR"], "share", "pixmaps", "swift.xpm"), "#/Swift/resources/logo/logo-icon-32.xpm") - icons_path = os.path.join(env["SWIFT_INSTALLDIR"], "share", "icons", "hicolor") - env.InstallAs(os.path.join(icons_path, "32x32", "apps", "swift.xpm"), "#/Swift/resources/logo/logo-icon-32.xpm") - env.InstallAs(os.path.join(icons_path, "scalable", "apps", "swift.svg"), "#/Swift/resources/logo/logo-icon.svg") - for i in ["16", "22", "24", "64", "128"] : - env.InstallAs(os.path.join(icons_path, i + "x" + i, "apps", "swift.png"), "#/Swift/resources/logo/logo-icon-" + i + ".png") - env.Install(os.path.join(env["SWIFT_INSTALLDIR"], "share", "applications"), "#/Swift/resources/swift.desktop") - for dir, resource in commonResources.items() : - env.Install(os.path.join(env["SWIFT_INSTALLDIR"], "share", "swift", dir), resource) + env.Install(os.path.join(env["SWIFT_INSTALLDIR"], "bin"), swiftProgram + openURIProgram) + env.InstallAs(os.path.join(env["SWIFT_INSTALLDIR"], "share", "pixmaps", "swift.xpm"), "#/Swift/resources/logo/logo-icon-32.xpm") + icons_path = os.path.join(env["SWIFT_INSTALLDIR"], "share", "icons", "hicolor") + env.InstallAs(os.path.join(icons_path, "32x32", "apps", "swift.xpm"), "#/Swift/resources/logo/logo-icon-32.xpm") + env.InstallAs(os.path.join(icons_path, "scalable", "apps", "swift.svg"), "#/Swift/resources/logo/logo-icon.svg") + for i in ["16", "22", "24", "64", "128"] : + env.InstallAs(os.path.join(icons_path, i + "x" + i, "apps", "swift.png"), "#/Swift/resources/logo/logo-icon-" + i + ".png") + env.Install(os.path.join(env["SWIFT_INSTALLDIR"], "share", "applications"), "#/Swift/resources/swift.desktop") + for dir, resource in commonResources.items() : + env.Install(os.path.join(env["SWIFT_INSTALLDIR"], "share", "swift", dir), resource) if env["PLATFORM"] == "win32" : - if env["DIST"] or ARGUMENTS.get("dump_trace") : - commonResources[""] = commonResources.get("", []) + [ - #os.path.join(env["OPENSSL_DIR"], "bin", "ssleay32.dll"), - #os.path.join(env["OPENSSL_DIR"], "bin", "libeay32.dll"), - "#/Swift/resources/images", - ] - if env["SWIFTEN_DLL"] : - commonResources[""] = commonResources.get("", []) + ["#/Swiften/${SWIFTEN_LIBRARY_FILE}"] - qtplugins = {} - qtplugins["imageformats"] = ["gif", "ico", "jpeg", "mng", "svg", "tiff"] - qtlibs = ["QtCore", "QtGui", "QtNetwork", "QtWebKit", "QtXMLPatterns"] - if qt_version == '4' : - qtlibs.append("phonon") - qtlibs = [lib + '4' for lib in qtlibs] - else : - qtlibs += ['QtQuick', 'QtQml', 'QtPositioning', 'QtMultimedia', 'QtSql', 'QtSensors', 'QtWidgets', 'QtWebChannel', 'QtWebKitWidgets', 'QtMultimediaWidgets', 'QtOpenGL', 'QtPrintSupport'] - qtlibs = [lib.replace('Qt', 'Qt5') for lib in qtlibs] - qtlibs += ['icuin51', 'icuuc51', 'icudt51', 'libGLESv2', 'libEGL'] - qtplugins["platforms"] = ['windows'] - qtplugins["accessible"] = ["taccessiblewidgets"] - - windowsBundleFiles = myenv.WindowsBundle("Swift", - resources = commonResources, - qtplugins = qtplugins, - qtlibs = qtlibs, - qtversion = qt_version) - - if env["DIST"] : - #myenv.Append(NSIS_OPTIONS = [ - # "/DmsvccRedistributableDir=\"" + env["vcredist"] + "\"", - # "/DbuildVersion=" + myenv["SWIFT_VERSION"] - # ]) - #myenv.Nsis("../Packaging/nsis/swift.nsi") - if env["SCONS_STAGE"] == "build" and env.get("wix_bindir", None): - def convertToRTF(env, target, source) : - infile = open(source[0].abspath, 'r') - outfile = open(target[0].abspath, 'w') - outfile.write('{\\rtf1\\ansi{\\fonttbl\\f0\\fswiss Helvetica;}\\fs16\\f0\\pard\n') - for line in infile: - for char in line.decode("utf-8") : - if ord(char) > 127 : - # FIXME: This is incorrect, because it only works for latin1. - # The correct way is \u<decimal utf16 point>? , but this is more - # work - outfile.write("\\'%X" % ord(char)) - else : - outfile.write(char) - outfile.write('\\par ') - outfile.write('}') - outfile.close() - infile.close() - copying = env.Command(["Swift/COPYING.rtf"], ["COPYING"], convertToRTF) - wixvariables = { - 'VCCRTFile': env["vcredist"], - 'Version': str(myenv["SWIFT_VERSION_MAJOR"]) + "." + str(myenv["SWIFT_VERSION_MINOR"]) + "." + str(myenv["SWIFT_VERSION_PATCH"]) - } - wixincludecontent = "<Include>" - for key in wixvariables: - wixincludecontent += "<?define %s = \"%s\" ?>" % (key, wixvariables[key]) - wixincludecontent += "</Include>" - myenv.WriteVal("..\\Packaging\\Wix\\variables.wxs", env.Value(wixincludecontent)) - myenv["WIX_SOURCE_OBJECT_DIR"] = "Swift\\QtUI\\Swift" - myenv.WiX_Heat('..\\Packaging\\WiX\\gen_files.wxs', windowsBundleFiles + copying) - myenv.WiX_Candle('..\\Packaging\\WiX\\Swift.wixobj', '..\\Packaging\\WiX\\Swift.wxs') - myenv.WiX_Candle('..\\Packaging\\WiX\\gen_files.wixobj', '..\\Packaging\\WiX\\gen_files.wxs') - myenv.WiX_Light('#/Packages/Swift/Swift-' + myenv["SWIFT_VERSION"] + '.msi', ['..\\Packaging\\WiX\\gen_files.wixobj','..\\Packaging\\WiX\\Swift.wixobj']) - - if myenv["debug"] : - myenv.InstallAs('#/Packages/Swift/Swift-' + myenv["SWIFT_VERSION"] + '.pdb', "Swift.pdb") + if env["DIST"] or ARGUMENTS.get("dump_trace") : + commonResources[""] = commonResources.get("", []) + [ + #os.path.join(env["OPENSSL_DIR"], "bin", "ssleay32.dll"), + #os.path.join(env["OPENSSL_DIR"], "bin", "libeay32.dll"), + "#/Swift/resources/images", + ] + if env["SWIFTEN_DLL"] : + commonResources[""] = commonResources.get("", []) + ["#/Swiften/${SWIFTEN_LIBRARY_FILE}"] + qtplugins = {} + qtplugins["imageformats"] = ["gif", "ico", "jpeg", "mng", "svg", "tiff"] + qtlibs = ["QtCore", "QtGui", "QtNetwork", "QtWebKit", "QtXMLPatterns"] + if qt_version == '4' : + qtlibs.append("phonon") + qtlibs = [lib + '4' for lib in qtlibs] + else : + qtlibs += ['QtQuick', 'QtQml', 'QtPositioning', 'QtMultimedia', 'QtSql', 'QtSensors', 'QtWidgets', 'QtWebChannel', 'QtWebKitWidgets', 'QtMultimediaWidgets', 'QtOpenGL', 'QtPrintSupport'] + qtlibs = [lib.replace('Qt', 'Qt5') for lib in qtlibs] + qtlibs += ['icuin51', 'icuuc51', 'icudt51', 'libGLESv2', 'libEGL'] + qtplugins["platforms"] = ['windows'] + qtplugins["accessible"] = ["taccessiblewidgets"] + + windowsBundleFiles = myenv.WindowsBundle("Swift", + resources = commonResources, + qtplugins = qtplugins, + qtlibs = qtlibs, + qtversion = qt_version) + + if env["DIST"] : + #myenv.Append(NSIS_OPTIONS = [ + # "/DmsvccRedistributableDir=\"" + env["vcredist"] + "\"", + # "/DbuildVersion=" + myenv["SWIFT_VERSION"] + # ]) + #myenv.Nsis("../Packaging/nsis/swift.nsi") + if env["SCONS_STAGE"] == "build" and env.get("wix_bindir", None): + def convertToRTF(env, target, source) : + infile = open(source[0].abspath, 'r') + outfile = open(target[0].abspath, 'w') + outfile.write('{\\rtf1\\ansi{\\fonttbl\\f0\\fswiss Helvetica;}\\fs16\\f0\\pard\n') + for line in infile: + for char in line.decode("utf-8") : + if ord(char) > 127 : + # FIXME: This is incorrect, because it only works for latin1. + # The correct way is \u<decimal utf16 point>? , but this is more + # work + outfile.write("\\'%X" % ord(char)) + else : + outfile.write(char) + outfile.write('\\par ') + outfile.write('}') + outfile.close() + infile.close() + copying = env.Command(["Swift/COPYING.rtf"], ["COPYING"], convertToRTF) + wixvariables = { + 'VCCRTFile': env["vcredist"], + 'Version': str(myenv["SWIFT_VERSION_MAJOR"]) + "." + str(myenv["SWIFT_VERSION_MINOR"]) + "." + str(myenv["SWIFT_VERSION_PATCH"]) + } + wixincludecontent = "<Include>" + for key in wixvariables: + wixincludecontent += "<?define %s = \"%s\" ?>" % (key, wixvariables[key]) + wixincludecontent += "</Include>" + myenv.WriteVal("..\\Packaging\\Wix\\variables.wxs", env.Value(wixincludecontent)) + myenv["WIX_SOURCE_OBJECT_DIR"] = "Swift\\QtUI\\Swift" + myenv.WiX_Heat('..\\Packaging\\WiX\\gen_files.wxs', windowsBundleFiles + copying) + myenv.WiX_Candle('..\\Packaging\\WiX\\Swift.wixobj', '..\\Packaging\\WiX\\Swift.wxs') + myenv.WiX_Candle('..\\Packaging\\WiX\\gen_files.wixobj', '..\\Packaging\\WiX\\gen_files.wxs') + lightTask = myenv.WiX_Light('#/Packages/Swift/Swift-' + myenv["SWIFT_VERSION"] + '.msi', ['..\\Packaging\\WiX\\gen_files.wixobj','..\\Packaging\\WiX\\Swift.wixobj']) + if myenv.get("SIGNTOOL_KEY_PFX", None) and myenv.get("SIGNTOOL_TIMESTAMP_URL", None) : + def signToolAction(target = None, source = None, env = None): + env.Execute('signtool.exe sign /fd SHA256 /f "${SIGNTOOL_KEY_PFX}" /t "${SIGNTOOL_TIMESTAMP_URL}" ' + str(target[0])) + + myenv.AddPostAction(lightTask, signToolAction) + + if myenv["debug"] : + myenv.InstallAs('#/Packages/Swift/Swift-' + myenv["SWIFT_VERSION"] + '.pdb', "Swift.pdb") |