1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
import os, shutil, datetime
def generateDefaultTheme(env, target, source) :
sourceDir = source[0].abspath
output = open(target[0].abspath, "w")
output.write("<RCC version =\"1.0\">")
output.write("<qresource prefix=\"/themes/Default\">")
for (path, dirs, files) in os.walk(sourceDir) :
for file in files :
filePath = os.path.join(path,file)
output.write("<file alias=\"%(alias)s\">%(path)s</file>" % {
"alias": filePath[len(sourceDir)+1:],
"path": filePath
})
output.write("</qresource>")
output.write("</RCC>")
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 = ["."])
if env["PLATFORM"] == "win32" :
#env["LINKFLAGS"] = ["/SUBSYSTEM:WINDOWS", "/MANIFESTDEPENDENCY:type=\'win32\' name=\'Microsoft.Windows.Common-Controls\' version=\'6.0.0.0\' publicKeyToken=\'6595b64144ccf1df\' language=\'*\' processorArchitecture=\'*\'"]
myenv["LINKFLAGS"] = ["/SUBSYSTEM:CONSOLE"]
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.Nsis("../Packaging/nsis/swift.nsi", NSIS_OPTIONS = [
"/DmsvccRedistributableDir=\"" + env["vcredist"] + "\"",
"/DbuildDate=" + datetime.date.today().strftime("%Y%m%d")
])
|