diff options
| author | Remko Tronçon <git@el-tramo.be> | 2009-11-27 21:50:54 (GMT) |
|---|---|---|
| committer | Remko Tronçon <git@el-tramo.be> | 2009-11-27 21:50:54 (GMT) |
| commit | 05fa7a57b3c7df3a9cc717cba202c96be05fa21a (patch) | |
| tree | 70ddc33247920490c946bd73421083851dcaef31 | |
| parent | aa09a889108c4d0e3c5888ad98958d8f3e12bd3b (diff) | |
| download | swift-05fa7a57b3c7df3a9cc717cba202c96be05fa21a.zip swift-05fa7a57b3c7df3a9cc717cba202c96be05fa21a.tar.bz2 | |
Added (Sparkle) AutoUpdater.
Not plugged into Swift yet.
| -rw-r--r-- | SConstruct | 24 | ||||
| -rw-r--r-- | SwifTools/AutoUpdater/AutoUpdater.cpp | 8 | ||||
| -rw-r--r-- | SwifTools/AutoUpdater/AutoUpdater.h | 10 | ||||
| -rw-r--r-- | SwifTools/AutoUpdater/SparkleAutoUpdater.h | 18 | ||||
| -rw-r--r-- | SwifTools/AutoUpdater/SparkleAutoUpdater.mm | 33 | ||||
| -rw-r--r-- | SwifTools/SConscript | 4 |
6 files changed, 97 insertions, 0 deletions
@@ -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" ]) |
Swift