summaryrefslogtreecommitdiffstats
blob: 56158197ed1b787c108e19e6d298dfb83a93cc60 (plain)
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")
			])