summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2009-11-27 21:50:54 (GMT)
committerRemko Tronçon <git@el-tramo.be>2009-11-27 21:50:54 (GMT)
commit05fa7a57b3c7df3a9cc717cba202c96be05fa21a (patch)
tree70ddc33247920490c946bd73421083851dcaef31
parentaa09a889108c4d0e3c5888ad98958d8f3e12bd3b (diff)
downloadswift-05fa7a57b3c7df3a9cc717cba202c96be05fa21a.zip
swift-05fa7a57b3c7df3a9cc717cba202c96be05fa21a.tar.bz2
Added (Sparkle) AutoUpdater.
Not plugged into Swift yet.
-rw-r--r--SConstruct24
-rw-r--r--SwifTools/AutoUpdater/AutoUpdater.cpp8
-rw-r--r--SwifTools/AutoUpdater/AutoUpdater.h10
-rw-r--r--SwifTools/AutoUpdater/SparkleAutoUpdater.h18
-rw-r--r--SwifTools/AutoUpdater/SparkleAutoUpdater.mm33
-rw-r--r--SwifTools/SConscript4
6 files changed, 97 insertions, 0 deletions
diff --git a/SConstruct b/SConstruct
index e4ef041..98cd348 100644
--- a/SConstruct
+++ b/SConstruct
@@ -111,142 +111,166 @@ if env.get("valgrind", 0) :
if ARGUMENTS.get("SWIFT_INSTALLDIR", "") :
env["SWIFT_INSTALLDIR"] = Dir(ARGUMENTS["SWIFT_INSTALLDIR"]).abspath
conf_env = env.Clone()
Export("env")
Export("conf_env")
################################################################################
# Extend the default build environment (not affecting the configure env)
#
# Keeping both environments separated mostly because of SCons Issue 2391,
# although it doesn't hurt to separate them (e.g. not have pretty printed
# strings in config.log)
################################################################################
#if env["PLATFORM"] == "win32" :
# env["MSVC_BATCH"] = 1
# Pretty output
def colorize(command, target, color) :
colors = { "red": "31", "green": "32", "yellow": "33", "blue": "34" }
prefix = ""
suffix = ""
if sys.stdout.isatty() and env["PLATFORM"] != "win32":
prefix = "\033[0;" + colors[color] + ";140m"
suffix = "\033[0m"
return " " + prefix + command + suffix + " " + target
if int(ARGUMENTS.get("V", 0)) == 0:
env["CCCOMSTR"] = colorize("CC", "$TARGET", "green")
env["CXXCOMSTR"] = colorize("CXX", "$TARGET", "green")
env["LINKCOMSTR"] = colorize("LINK", "$TARGET", "red")
env["ARCOMSTR"] = colorize("AR", "$TARGET", "red")
env["RANLIBCOMSTR"] = colorize("RANLIB", "$TARGET", "red")
env["QT4_RCCCOMSTR"] = colorize("RCC", "$TARGET", "blue")
env["QT4_UICCOMSTR"] = colorize("UIC", "$TARGET", "blue")
env["QT4_MOCFROMHCOMSTR"] = colorize("MOC", "$TARGET", "blue")
env["QT4_MOCFROMCXXCOMSTR"] = colorize("MOC", "$TARGET", "blue")
env["GENCOMSTR"] = colorize("GEN", "$TARGET", "blue")
env["RCCOMSTR"] = colorize("RC", "$TARGET", "blue")
env["BUNDLECOMSTR"] = colorize("BUNDLE", "$TARGET", "blue")
env["NIBCOMSTR"] = colorize("NIB", "$TARGET", "blue")
env["NSISCOMSTR"] = colorize("NSIS", "$TARGET", "blue")
env["TESTCOMSTR"] = colorize("TEST", "$SOURCE", "yellow")
#Progress(colorize("DEP", "$TARGET", "red")
+def checkObjCHeader(context, header) :
+ context.Message("Checking for Objective-C header " + header + " ... ")
+ ret = context.TryCompile("#include <Cocoa/Cocoa.h>\n#include <" + header + ">", ".m")
+ context.Result(ret)
+ return ret
+
################################################################################
# Platform configuration
################################################################################
if ARGUMENTS.get("force-configure", 0) :
SCons.SConf.SetCacheMode("force")
conf = Configure(conf_env)
+conf.CheckCXX()
+conf.CheckCC()
+
if conf.CheckLib("z") :
env.Append(LIBS = "z")
env["ZLIB_FLAGS"] = ""
else :
SConscript("3rdParty/ZLib/SConscript")
if conf.CheckLib("dl") :
env.Append(LIBS = ["dl"])
if conf.CheckLib("c") :
env.Append(LIBS = ["c"])
if conf.CheckLib("resolv") :
env.Append(LIBS = ["resolv"])
# Expat
if conf.CheckCHeader("expat.h") and conf.CheckLib("expat") :
env["HAVE_EXPAT"] = 1
env["EXPAT_FLAGS"] = { "LIBS": ["expat"] }
conf.Finish()
# Xss
env["HAVE_XSS"] = 0
if env["PLATFORM"] != "win32" and env["PLATFORM"] != "darwin" :
xss_flags = {
"LIBPATH": ["/usr/X11R6/lib"],
"LIBS": ["X11", "Xss"]
}
xss_env = conf_env.Clone()
xss_env.MergeFlags(xss_flags)
conf = Configure(xss_env)
if conf.CheckFunc("XScreenSaverQueryExtension") :
env["HAVE_XSS"] = 1
env["XSS_FLAGS"] = xss_flags
conf.Finish()
+# Sparkle
+env["HAVE_SPARKLE"] = 0
+if env["PLATFORM"] == "darwin" :
+ sparkle_flags = {
+ "FRAMEWORKPATH": ["/Library/Frameworks"],
+ "FRAMEWORKS": ["Sparkle"]
+ }
+ sparkle_env = conf_env.Clone()
+ sparkle_env.MergeFlags(sparkle_flags)
+ conf = Configure(sparkle_env, custom_tests = { "CheckObjCHeader" : checkObjCHeader })
+ if conf.CheckObjCHeader("Sparkle/Sparkle.h") :
+ env["HAVE_SPARKLE"] = 1
+ env["SPARKLE_FLAGS"] = sparkle_flags
+ conf.Finish()
+
# LibXML
conf = Configure(conf_env)
if conf.CheckCHeader("libxml/parser.h") and conf.CheckLib("xml2") :
env["HAVE_LIBXML"] = 1
env["LIBXML_FLAGS"] = { "LIBS": ["xml2"] }
conf.Finish()
if not env.get("HAVE_LIBXML", 0) :
libxml_env = conf_env.Clone()
libxml_env.Append(CPPPATH = ["/usr/include/libxml2"])
conf = Configure(libxml_env)
if conf.CheckCHeader("libxml/parser.h") and conf.CheckLib("xml2") :
env["HAVE_LIBXML"] = 1
env["LIBXML_FLAGS"] = { "CPPPATH": ["/usr/include/libxml2"], "LIBS": ["xml2"] }
conf.Finish()
# Bundled expat
bundledExpat = False
if not env.get("HAVE_EXPAT", 0) :
print "Expat or LibXML not found. Using bundled Expat"
SConscript("3rdParty/Expat/SConscript")
env["HAVE_EXPAT"] = 1
bundledExpat = True
# Qt
if env["qt"] :
env["QTDIR"] = env["qt"]
# OpenSSL
openssl_env = conf_env.Clone()
use_openssl = bool(env["openssl"])
openssl_prefix = env["openssl"] if isinstance(env["openssl"], str) else ""
openssl_flags = {}
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)
openssl_conf = Configure(openssl_env)
if use_openssl and openssl_conf.CheckCHeader("openssl/ssl.h") :
env["HAVE_OPENSSL"] = 1
env["OPENSSL_FLAGS"] = openssl_flags
if env["PLATFORM"] == "win32" :
env["OPENSSL_FLAGS"]["LIBS"] = ["libeay32MT", "ssleay32MT"]
diff --git a/SwifTools/AutoUpdater/AutoUpdater.cpp b/SwifTools/AutoUpdater/AutoUpdater.cpp
new file mode 100644
index 0000000..cd0eb0b
--- /dev/null
+++ b/SwifTools/AutoUpdater/AutoUpdater.cpp
@@ -0,0 +1,8 @@
+#include "SwifTools/AutoUpdater/AutoUpdater.h"
+
+namespace Swift {
+
+AutoUpdater::~AutoUpdater() {
+}
+
+}
diff --git a/SwifTools/AutoUpdater/AutoUpdater.h b/SwifTools/AutoUpdater/AutoUpdater.h
new file mode 100644
index 0000000..c1a73f1
--- /dev/null
+++ b/SwifTools/AutoUpdater/AutoUpdater.h
@@ -0,0 +1,10 @@
+#pragma once
+
+namespace Swift {
+ class AutoUpdater {
+ public:
+ virtual ~AutoUpdater();
+
+ virtual void checkForUpdates() = 0;
+ };
+}
diff --git a/SwifTools/AutoUpdater/SparkleAutoUpdater.h b/SwifTools/AutoUpdater/SparkleAutoUpdater.h
new file mode 100644
index 0000000..37053fc
--- /dev/null
+++ b/SwifTools/AutoUpdater/SparkleAutoUpdater.h
@@ -0,0 +1,18 @@
+#pragma once
+
+#include "Swiften/Base/String.h"
+#include "SwifTools/AutoUpdater/AutoUpdater.h"
+
+namespace Swift {
+ class SparkleAutoUpdater : public AutoUpdater {
+ public:
+ SparkleAutoUpdater(const String& url);
+ ~SparkleAutoUpdater();
+
+ void checkForUpdates();
+
+ private:
+ class Private;
+ Private* d;
+ };
+}
diff --git a/SwifTools/AutoUpdater/SparkleAutoUpdater.mm b/SwifTools/AutoUpdater/SparkleAutoUpdater.mm
new file mode 100644
index 0000000..30e2ae2
--- /dev/null
+++ b/SwifTools/AutoUpdater/SparkleAutoUpdater.mm
@@ -0,0 +1,33 @@
+#include "SwifTools/AutoUpdater/SparkleAutoUpdater.h"
+
+#include <Cocoa/Cocoa.h>
+#include <Sparkle/Sparkle.h>
+
+namespace Swift {
+
+class SparkleAutoUpdater::Private {
+ public:
+ SUUpdater* updater;
+};
+
+SparkleAutoUpdater::SparkleAutoUpdater(const String& url) {
+ d = new Private;
+
+ d->updater = [SUUpdater sharedUpdater];
+ [d->updater retain];
+
+ NSURL* nsurl = [NSURL URLWithString:
+ [NSString stringWithUTF8String: url.getUTF8Data()]];
+ [d->updater setFeedURL: nsurl];
+}
+
+SparkleAutoUpdater::~SparkleAutoUpdater() {
+ [d->updater release];
+ delete d;
+}
+
+void SparkleAutoUpdater::checkForUpdates() {
+ [d->updater checkForUpdatesInBackground];
+}
+
+}
diff --git a/SwifTools/SConscript b/SwifTools/SConscript
index 2ae4e4e..92e82be 100644
--- a/SwifTools/SConscript
+++ b/SwifTools/SConscript
@@ -1,35 +1,39 @@
Import("env")
env["SWIFTOOLS_FLAGS"] = {
"LIBPATH": [Dir(".")],
"LIBS": ["SwifTools"]
}
myenv = env.Clone()
myenv.MergeFlags(myenv["BOOST_FLAGS"])
sources = [
"Idle/IdleDetector.cpp",
"Idle/ActualIdleDetector.cpp",
"Idle/IdleQuerier.cpp",
"Idle/PlatformIdleQuerier.cpp",
+ "AutoUpdater/AutoUpdater.cpp",
"Linkify.cpp",
]
+if myenv.get("HAVE_SPARKLE", 0) :
+ sources += ["AutoUpdater/SparkleAutoUpdater.mm"]
+
if myenv["PLATFORM"] == "win32" :
sources += ["Idle/WindowsIdleQuerier.cpp"]
elif myenv["PLATFORM"] == "darwin" :
sources += ["Idle/MacOSXIdleQuerier.cpp"]
elif myenv["HAVE_XSS"] :
myenv.Append(CPPDEFINES = ["HAVE_XSS"])
sources += ["Idle/XSSIdleQuerier.cpp"]
else :
sources += ["Idle/DummyIdleQuerier.cpp"]
myenv.StaticLibrary("SwifTools", sources)
SConscript(dirs = [
"Idle/IdleQuerierTest",
"Idle/UnitTest",
"UnitTest"
])