From 3f94565804fce16c98e77e59934e87f95c2b1320 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Tue, 11 Aug 2009 21:16:25 +0200
Subject: Add Swift Windows bundling.


diff --git a/SConstruct b/SConstruct
index 1d8c2d6..a7727bd 100644
--- a/SConstruct
+++ b/SConstruct
@@ -92,6 +92,7 @@ if int(ARGUMENTS.get("V", 0)) == 0:
     env["QT4_MOCFROMCXXCOMSTR"] = "  \033[0;34;140mMOC\033[0m    $TARGET"
     env["GENCOMSTR"]            = "  \033[0;34;140mGEN\033[0m    $TARGET"
     env["RCCOMSTR"]             = "  \033[0;34;140mRC\033[0m     $TARGET"
+    env["BUNDLECOMSTR"]         = "  \033[0;34;140mBUNDLE\033[0m $TARGET"
     #Progress(                     "  \033[0;35;140mDEP\033[0m    $TARGET\n")
   else :
     env["CCCOMSTR"]             = "  CC     $TARGET"
@@ -105,10 +106,13 @@ if int(ARGUMENTS.get("V", 0)) == 0:
     env["QT4_MOCFROMCXXCOMSTR"] = "  MOC    $TARGET"
     env["GENCOMSTR"]            = "  GEN    $TARGET"
     env["RCCOMSTR"]             = "  RC     $TARGET"
+    env["BUNDLECOMSTR"]         = "  BUNDLE $TARGET"
     #Progress('  DEP $TARGET\n')
 
 if env["PLATFORM"] == "win32" :
 	env["MSVC_BATCH"] = 1
+	env["LINKCOM"] = [env["LINKCOM"], 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;1']
+	env["SHLINKCOM"] = [env["SHLINKCOM"], 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;2']
 
 
 ################################################################################
@@ -163,6 +167,7 @@ if openssl_prefix :
 	openssl_flags = { "CPPPATH": [os.path.join(openssl_prefix, "include")] }
 	if env["PLATFORM"] == "win32" : 
 		openssl_flags["LIBPATH"] = [os.path.join(openssl_prefix, "lib", "VC")]
+		env["OPENSSL_DIR"] = openssl_prefix
 	else :
 		openssl_flags["LIBPATH"] = [os.path.join(openssl_prefix, "lib")]
 	openssl_env.MergeFlags(openssl_flags)
diff --git a/Swift/QtUI/SConscript b/Swift/QtUI/SConscript
index 2fd1bc1..0c458a1 100644
--- a/Swift/QtUI/SConscript
+++ b/Swift/QtUI/SConscript
@@ -1,4 +1,4 @@
-import os
+import os, shutil
 
 def generateDefaultTheme(env, target, source) :
 	sourceDir = source[0].abspath
@@ -15,7 +15,7 @@ def generateDefaultTheme(env, target, source) :
 	output.write("</qresource>")
 	output.write("</RCC>")
 
-def createBundle(env, target, source) :
+def createAppBundle(env, target, source) :
 	target = target[0].abspath
 	source = source[0].abspath
 	os.makedirs(target + "/Contents/MacOS")
@@ -24,9 +24,17 @@ def createBundle(env, target, source) :
 	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"])
@@ -79,13 +87,25 @@ if env["PLATFORM"] == "win32" :
 	sources += ["../resources/Windows/Swift.res"]
 
 if env["PLATFORM"] == "darwin" or env["PLATFORM"] == "win32" :
-	myenv.Program("Swift", sources)
+	swiftProgram = myenv.Program("Swift", sources)
 else :
-	myenv.Program("swift", sources)
+	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", createBundle)
+	myenv.Command("Swift.app", "Swift", createAppBundle)
+
+if env["PLATFORM"] == "win32" :
+	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")),	
+		])
-- 
cgit v0.10.2-6-g49f6