import os, shutil, datetime def generateDefaultTheme(env, target, source) : sourceDir = source[0].abspath output = open(target[0].abspath, "w") output.write("") output.write("") for (path, dirs, files) in os.walk(sourceDir) : for file in files : filePath = os.path.join(path,file) output.write("%(path)s" % { "alias": filePath[len(sourceDir)+1:], "path": filePath }) output.write("") output.write("") def createAppBundle(env, target, source) : target = target[0].abspath source = source[0].abspath os.makedirs(target + "/Contents/MacOS") Execute(Copy(target + "/Contents/MacOS", source)) pkgInfo = open(target + "/Contents/PkgInfo", "w") pkgInfo.write("APPL\77\77\77\77") pkgInfo.close() def buildWindowsBundle(env, target, source) : sources = source if not os.path.exists(target[0].abspath) : os.mkdir(target[0].abspath) for source in sources : shutil.copy(source.abspath, target[0].abspath) Import("env") myenv = env.Clone() myenv["BUILDERS"]["WindowsBundle"] = Builder(action = Action(buildWindowsBundle, cmdstr = "$BUNDLECOMSTR")) myenv.MergeFlags(env["SWIFT_CONTROLLERS_FLAGS"]) myenv.MergeFlags(env["SWIFTEN_FLAGS"]) myenv.MergeFlags(env["CPPUNIT_FLAGS"]) myenv.MergeFlags(env["LIBIDN_FLAGS"]) myenv.MergeFlags(env["BOOST_FLAGS"]) myenv.MergeFlags(env["SQLITE_FLAGS"]) myenv.MergeFlags(env["EXPAT_FLAGS"]) myenv.MergeFlags(env["ZLIB_FLAGS"]) myenv.MergeFlags(env["OPENSSL_FLAGS"]) myenv.Tool("qt4", toolpath = ["#/BuildTools/SCons/Tools"]) myenv.Tool("nsis", toolpath = ["#/BuildTools/SCons/Tools"]) myenv.EnableQt4Modules(['QtCore', 'QtGui', 'QtWebKit'], debug = False) myenv.Append(CPPPATH = ["/usr/include/phonon"]) myenv.Append(CPPPATH = ["."]) myenv.Command("DefaultTheme.qrc", "../resources/themes/Default", Action(generateDefaultTheme, cmdstr = "$GENCOMSTR")) sources = [ "main.cpp", "QtChatWindow.cpp", "QtChatWindowFactory.cpp", "QtJoinMUCDialog.cpp", "QtLoginWindow.cpp", "QtLoginWindowFactory.cpp", "QtMainWindow.cpp", "QtMainWindowFactory.cpp", "QtSettingsProvider.cpp", "QtStatusWidget.cpp", "QtSwift.cpp", "QtChatView.cpp", "QtChatTabs.cpp", "QtSoundPlayer.cpp", "QtSystemTray.cpp", "QtTabbable.cpp", "ChatSnippet.cpp", "MessageSnippet.cpp", "SystemMessageSnippet.cpp", "Roster/RosterModel.cpp", "Roster/QtTreeWidget.cpp", "Roster/QtTreeWidgetItem.cpp", "Roster/RosterDelegate.cpp", "qrc_DefaultTheme.cc", "qrc_Swift.cc", ] if env["PLATFORM"] == "win32" : myenv.RES("../resources/Windows/Swift.rc") sources += ["../resources/Windows/Swift.res"] if env["PLATFORM"] == "darwin" or env["PLATFORM"] == "win32" : swiftProgram = myenv.Program("Swift", sources) else : swiftProgram = myenv.Program("swift", sources) myenv.Uic4("QtJoinMUCDialog.ui") myenv.Qrc("DefaultTheme.qrc") myenv.Qrc("Swift.qrc") if env["PLATFORM"] == "darwin" : myenv.Command("Swift.app", "Swift", createAppBundle) if env["PLATFORM"] == "win32" : if "dist" in COMMAND_LINE_TARGETS or env.GetOption("clean") : myenv.WindowsBundle(Dir("Swift"), [ swiftProgram[0], File(os.path.join(env["QTDIR"], "bin", "QtCore4.dll")), File(os.path.join(env["QTDIR"], "bin", "QtGui4.dll")), File(os.path.join(env["QTDIR"], "bin", "QtNetwork4.dll")), File(os.path.join(env["QTDIR"], "bin", "QtWebKit4.dll")), File(os.path.join(env["QTDIR"], "bin", "phonon4.dll")), File(os.path.join(env["OPENSSL_DIR"], "bin", "ssleay32.dll")), File(os.path.join(env["OPENSSL_DIR"], "bin", "libeay32.dll")), ]) myenv.Append(NSIS_OPTIONS = [ "/DmsvccRedistributableDir=\"" + env["vcredist"] + "\"", "/DbuildDate=" + datetime.date.today().strftime("%Y%m%d") ]) myenv.Nsis("../Packaging/nsis/swift.nsi")