summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2010-03-28 12:42:31 (GMT)
committerRemko Tronçon <git@el-tramo.be>2010-03-28 12:42:31 (GMT)
commit44dd6bc44854c0e2b0f076d39db9ef3b227ab3aa (patch)
treede96319fb866ac431e52a1b14e0b9970ac24bbce /BuildTools
parent625d6a9f18c2377cdc3180e74b773ce3cbb2dcba (diff)
downloadswift-44dd6bc44854c0e2b0f076d39db9ef3b227ab3aa.zip
swift-44dd6bc44854c0e2b0f076d39db9ef3b227ab3aa.tar.bz2
Removing BuildTools module.
Diffstat (limited to 'BuildTools')
-rwxr-xr-xBuildTools/CheckTabs.py41
-rwxr-xr-xBuildTools/Copyrighter.py96
-rw-r--r--BuildTools/Coverage/.gitignore1
-rwxr-xr-xBuildTools/Coverage/FilterLCovData.py32
-rwxr-xr-xBuildTools/Coverage/GenerateCoverageResults.sh32
-rwxr-xr-xBuildTools/Coverage/GenerateOverview.py63
-rwxr-xr-xBuildTools/Coverage/GenerateSummary.py35
-rw-r--r--BuildTools/Coverage/descriptions.txt2
-rwxr-xr-xBuildTools/Git/Hooks/pre-commit7
-rw-r--r--BuildTools/MSVS/.gitignore4
-rw-r--r--BuildTools/MSVS/GenerateProjects.py100
-rw-r--r--BuildTools/MSVS/Swift.sln26
-rw-r--r--BuildTools/SCons/SConstruct412
-rw-r--r--BuildTools/SCons/Tools/AppBundle.py52
-rw-r--r--BuildTools/SCons/Tools/BuildVersion.py17
-rw-r--r--BuildTools/SCons/Tools/Nib.py12
-rw-r--r--BuildTools/SCons/Tools/Test.py13
-rw-r--r--BuildTools/SCons/Tools/WindowsBundle.py17
-rw-r--r--BuildTools/SCons/Tools/WriteVal.py14
-rw-r--r--BuildTools/SCons/Tools/nsis.py37
-rw-r--r--BuildTools/SCons/Tools/qt4.py517
-rw-r--r--BuildTools/SCons/Version.py15
-rwxr-xr-xBuildTools/package_debian.sh10
23 files changed, 0 insertions, 1555 deletions
diff --git a/BuildTools/CheckTabs.py b/BuildTools/CheckTabs.py
deleted file mode 100755
index 2cc1cf7..0000000
--- a/BuildTools/CheckTabs.py
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/env python
-
-import os, sys
-
-foundExpandedTabs = False
-
-for (path, dirs, files) in os.walk(".") :
- if not "3rdParty" in path and not ".sconf" in path :
- for filename in [os.path.join(path, file) for file in files if (file.endswith(".cpp") or file.endswith(".h")) and not "ui_" in file and not "moc_" in file and not "qrc_" in file] :
- file = open(filename, "r")
- contents = []
- contentsChanged = False
- for line in file.readlines() :
- newline = ""
- previousChar = None
- pastInitialSpace = False
- for char in line :
- if not pastInitialSpace :
- if char == ' ' and previousChar == ' ' :
- contentsChanged = True
- previousChar = '\t'
- continue
- pastInitialSpace = (char != ' ')
- if previousChar :
- newline += previousChar
- previousChar = char
- if previousChar :
- newline += previousChar
- contents.append(newline)
- file.close()
- if contentsChanged :
- if len(sys.argv) > 1 and sys.argv[1] == "--fix" :
- print "Fixing tabs in " + filename
- file = open(filename, "w")
- file.write(''.join(contents))
- file.close()
- else :
- foundExpandedTabs = True
- print filename + " contains expanded tabs"
-
-sys.exit(foundExpandedTabs)
diff --git a/BuildTools/Copyrighter.py b/BuildTools/Copyrighter.py
deleted file mode 100755
index 189dcf5..0000000
--- a/BuildTools/Copyrighter.py
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/usr/bin/env python
-#coding=utf-8
-
-import os, re, datetime
-
-TEMPLATE = """/*
- * Copyright (c) %(year)s %(author)s.
- * See the included COPYING file for license details.
- */
-
-"""
-
-def updateCopyright(fileName) :
- file = open(fileName)
- fileData = ""
-
- author = ""
- startYear = ""
- endYear = ""
- previousCopyright = ""
-
- # Retrieve previous copyright information
- header = ""
- inHeader = False
- inSpaceBelowHeader = False
- lines = file.readlines()
- lines2 = lines
- for line in lines2 :
- lines.pop(0)
- if inSpaceBelowHeader :
- if line.strip() != "" :
- break
- elif inHeader :
- if line.startswith(" */") :
- inSpaceBelowHeader = True
- else :
- header += line
- else :
- if line.strip() == "" :
- continue
- elif line.startswith("/*") :
- inHeader = True
- header += line
- else :
- fileData += line
- break
- if "Copyright" in header :
- previousCopyright = header
- m = re.match("\* Copyright \(c\) (?P<startYear>\d\d\d\d)(-(?P<endYear>\d\d\d\d))? (?P<author>.*)", header)
- if m :
- author = m.group("author")
- startYear = m.group("startYear")
- endYear = m.group("endYear")
- elif header != "" :
- fileData = header
- file.close()
-
- # Read in the rest of the data
- fileData += "".join(lines)
-
- # Guess empty values
- if author == "" :
- if "Swift/" in fileName :
- author = "Kevin Smith"
- else :
- author = u"Remko Tronçon"
- if startYear == "" :
- startYear = datetime.date.today().strftime("%Y")
- elif endYear == "" :
- ## TODO: Guess end year by looking at git log --pretty=format:%ai -- <filename>
- pass
-
- # Generate a copyright
- year = startYear + "-" + endYear if len(endYear) > 0 else startYear
- copyright = TEMPLATE % {
- "author" : author,
- "year" : year
- }
-
- # Write the copyright to the file
- if copyright.encode("utf-8") != previousCopyright :
- file = open(fileName, "w")
- file.write(copyright.encode("utf-8"))
- file.write(fileData)
- file.close()
-
-for (path, dirs, files) in os.walk("Swiften/JID") :
- if "3rdParty" in path :
- continue
- for filename in files :
- if not filename.endswith(".cpp") and not filename.endswith(".h") :
- continue
- if filename.startswith("moc_") :
- continue
- fullFilename = path + "/" + filename
- updateCopyright(fullFilename)
diff --git a/BuildTools/Coverage/.gitignore b/BuildTools/Coverage/.gitignore
deleted file mode 100644
index 1a06816..0000000
--- a/BuildTools/Coverage/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-results
diff --git a/BuildTools/Coverage/FilterLCovData.py b/BuildTools/Coverage/FilterLCovData.py
deleted file mode 100755
index a3a7ee5..0000000
--- a/BuildTools/Coverage/FilterLCovData.py
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env python
-
-# TODO: Add uncovered non-ignored files
-
-import sys, re, os.path
-
-assert(len(sys.argv) == 2)
-
-def isIgnored(file) :
- return (file.find("/Swiften/") == -1 and file.find("/Slimber/") == -1 and file.find("/Swift/") == -1) or (file.find("/UnitTest/") != -1 or file.find("/QA/") != -1)
-
-
-output = []
-inputFile = open(sys.argv[1])
-inIgnoredFile = False
-for line in inputFile.readlines() :
- if inIgnoredFile :
- if line == "end_of_record\n" :
- inIgnoredFile = False
- else :
- if line.startswith("SF:") and isIgnored(line) :
- inIgnoredFile = True
- else :
- m = re.match("SF:(.*)", line)
- if m :
- line = "SF:" + os.path.realpath(m.group(1)) + "\n"
- output.append(line)
-inputFile.close()
-
-outputFile = open(sys.argv[1], 'w')
-outputFile.write(''.join(output))
-outputFile.close()
diff --git a/BuildTools/Coverage/GenerateCoverageResults.sh b/BuildTools/Coverage/GenerateCoverageResults.sh
deleted file mode 100755
index f06c484..0000000
--- a/BuildTools/Coverage/GenerateCoverageResults.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-
-# This script assumes that it is run from the toplevel directory
-
-SOURCE_DIR=.
-SCRIPT_DIR=BuildTools/Coverage
-LCOVDIR=3rdParty/LCov
-
-RESULTS_DIR=BuildTools/Coverage/results
-OUTPUT_DIR=$RESULTS_DIR/coverage-`git log --pretty=format:%ct-%h | head -n 1`
-
-if [ ! -d $OUTPUT_DIR ]; then
- mkdir -p $OUTPUT_DIR
-fi
-
-# Reset counters
-$LCOVDIR/lcov --zerocounters --directory $SOURCE_DIR
-
-# Build & run all tests
-scons coverage=1 test=all
-
-# Run SCons
-$LCOVDIR/lcov --capture --directory $SOURCE_DIR -b $SOURCE_DIR --output-file $OUTPUT_DIR/all.info --test-name all
-cp $OUTPUT_DIR/all.info $OUTPUT_DIR/all.info.orig
-$SCRIPT_DIR/FilterLCovData.py $OUTPUT_DIR/all.info
-
-# Generate HTML
-$LCOVDIR/gendesc -o $OUTPUT_DIR/descriptions $SCRIPT_DIR/descriptions.txt
-$LCOVDIR/genhtml --no-function-coverage --title "Swift Coverage" --output-directory $OUTPUT_DIR $OUTPUT_DIR/all.info
-
-# Generate summary
-$SCRIPT_DIR/GenerateSummary.py $OUTPUT_DIR/all.info $OUTPUT_DIR/summary
diff --git a/BuildTools/Coverage/GenerateOverview.py b/BuildTools/Coverage/GenerateOverview.py
deleted file mode 100755
index 8928afd..0000000
--- a/BuildTools/Coverage/GenerateOverview.py
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/env python
-
-import sys, os.path
-
-assert(len(sys.argv) == 4)
-
-resultsDir = sys.argv[1]
-summaryFile = sys.argv[2]
-overviewFile = sys.argv[3]
-
-results = []
-for dir in os.listdir(resultsDir) :
- summary = os.path.join(resultsDir, dir, summaryFile)
- if os.path.exists(summary) :
- file = open(summary)
- lines = file.readlines()
- if len(lines) == 0 or len(lines[0].split("/")) != 2 :
- continue
- coveredCount = int(lines[0].split("/")[0])
- totalCount = int(lines[0].split("/")[1])
- results.append((dir,coveredCount,totalCount))
-
-# Compute coverage chart URL
-chartparams = ["chs=320x240", "cht=lc", "chtt=Coverage (Relative)", "chxt=y", "chxl=0:|50%|80%|100%|", "chxp=0,50,80,100"]
-chartdata = []
-for (url,covered,total) in results :
- chartdata.append(str(100*covered/total))
-chartparams.append("chd=t:" + ",".join(chartdata))
-coverageChartURL = "http://chart.apis.google.com/chart?" + '&'.join(chartparams)
-
-# Compute the maximum of lines over time
-maximumNumberOfLines = 0
-for (url,covered,total) in results :
- maximumNumberOfLines = max(maximumNumberOfLines,total)
-
-# Compute code chart URL
-chartparams = ["chs=320x240", "cht=lc", "chtt=Coverage (Absolute)", "chxt=y", "chxl=0:|" + str(maximumNumberOfLines) + "|", "chxp=0,100", "chm=b,FF0000,0,1,0|b,80C65A,1,2,0", "chco=00000000,00000000,00000000"]
-coveredLinesData = []
-totalLinesData = []
-nullLinesData = []
-for (url,covered,total) in results :
- coveredLinesData.append(str(100*covered/maximumNumberOfLines))
- totalLinesData.append(str(100*total/maximumNumberOfLines))
- nullLinesData.append("0")
-chartparams.append("chd=t:" + ",".join(totalLinesData) + "|" + ",".join(coveredLinesData) + "|" + ",".join(nullLinesData))
-codeChartURL = "http://chart.apis.google.com/chart?" + '&'.join(chartparams)
-
-
-# Output page
-output = open(os.path.join(resultsDir,overviewFile), 'w')
-output.write("<img src=\"%(url)s\"s/>" % {'url' : coverageChartURL})
-output.write("<img src=\"%(url)s\"s/>" % {'url' : codeChartURL})
-output.write("<ul>\n")
-for (url,covered,total) in results :
- output.write("<li><a href='%(url)s/index.html'>%(url)s</a> %(percentage)s%% (%(covered)s/%(total)s)</li>\n" % {
- 'url' : url,
- 'percentage' : 100*covered / total,
- 'covered' : covered,
- 'total' : total
- })
-output.write("</ul>")
-output.close()
-
diff --git a/BuildTools/Coverage/GenerateSummary.py b/BuildTools/Coverage/GenerateSummary.py
deleted file mode 100755
index ec94a4f..0000000
--- a/BuildTools/Coverage/GenerateSummary.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env python
-
-import sys, re
-
-assert(len(sys.argv) == 3)
-
-inputFile = open(sys.argv[1])
-currentFile = ""
-coverage = {}
-for line in inputFile.readlines() :
- line = line.strip()
- m = re.match("^SF:(.*)", line)
- if m :
- currentFile = m.group(1)
- else :
- m = re.match("^DA:(\d+),(\d+)", line)
- if m :
- currentFileCoverage = coverage.get(currentFile, {})
- line = int(m.group(1))
- count = int(m.group(2))
- currentFileCoverage[line] = currentFileCoverage.get(line, 0) + count
- coverage[currentFile] = currentFileCoverage
-inputFile.close()
-
-totalLines = 0
-coveredLines = 0
-for c in coverage.values() :
- totalLines += len(c)
- for l in c.values() :
- if l > 0 :
- coveredLines += 1
-
-outputFile = open(sys.argv[2], 'w')
-outputFile.write(str(coveredLines) + "/" + str(totalLines))
-outputFile.close()
diff --git a/BuildTools/Coverage/descriptions.txt b/BuildTools/Coverage/descriptions.txt
deleted file mode 100644
index 5b07e04..0000000
--- a/BuildTools/Coverage/descriptions.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-all
- All tests
diff --git a/BuildTools/Git/Hooks/pre-commit b/BuildTools/Git/Hooks/pre-commit
deleted file mode 100755
index 9ffc1c7..0000000
--- a/BuildTools/Git/Hooks/pre-commit
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-echo "Checking tabs ..."
-if ! BuildTools/CheckTabs.py; then
- echo "Expanded tabs found. Aborting commit."
- exit -1
-fi
diff --git a/BuildTools/MSVS/.gitignore b/BuildTools/MSVS/.gitignore
deleted file mode 100644
index 95a4834..0000000
--- a/BuildTools/MSVS/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*.suo
-*.ncp
-Slimber
-Swift
diff --git a/BuildTools/MSVS/GenerateProjects.py b/BuildTools/MSVS/GenerateProjects.py
deleted file mode 100644
index d13df08..0000000
--- a/BuildTools/MSVS/GenerateProjects.py
+++ /dev/null
@@ -1,100 +0,0 @@
-import os, os.path
-
-projects = [("Swift", "Swift\QtUI\Swift.exe"), ("Slimber", "Slimber\Qt\Slimber.exe")]
-
-for (project, outputbin) in projects :
- if not os.path.exists(project) :
- os.mkdir(project)
- output = open(os.path.join(project, project + ".vcproj"), "w")
-
- headers = []
- sources = []
- for root, dirs, files in os.walk(os.path.join("..", "..", project)) :
- for file in files :
- if file.endswith(".h") :
- headers.append('<File RelativePath="' + os.path.join("..", root, file) + '" />')
- elif file.endswith(".cpp") :
- sources.append('<File RelativePath="' + os.path.join("..", root, file) + '" />')
-
- output.write("""<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="%(project)s"
- Keyword="MakeFileProj"
- TargetFrameworkVersion="196613"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="0"
- >
- <Tool
- Name="VCNMakeTool"
- BuildCommandLine="cd ..\..\..\ &amp;&amp; scons debug=1 %(project)s"
- ReBuildCommandLine=""
- CleanCommandLine="cd ..\..\..\ &amp;&amp; scons -c debug=1 %(project)s"
- Output="..\..\..\%(output)s"
- PreprocessorDefinitions="WIN32;_DEBUG"
- IncludeSearchPath=""
- ForcedIncludes=""
- AssemblySearchPath=""
- ForcedUsingAssemblies=""
- CompileAsManaged=""
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="0"
- >
- <Tool
- Name="VCNMakeTool"
- BuildCommandLine="cd ..\..\..\ &amp;&amp; scons %(project)s"
- ReBuildCommandLine=""
- CleanCommandLine="cd ..\..\..\ &amp;&amp; scons -c %(project)s"
- Output="..\..\..\%(output)s"
- PreprocessorDefinitions="WIN32;NDEBUG"
- IncludeSearchPath=""
- ForcedIncludes=""
- AssemblySearchPath=""
- ForcedUsingAssemblies=""
- CompileAsManaged=""
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
- >
- %(sources)s
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- >
- %(headers)s
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
- >
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>""" % { "project": project, "output" : outputbin, "headers" : '\n'.join(headers), "sources": '\n'.join(sources) })
- output.close()
diff --git a/BuildTools/MSVS/Swift.sln b/BuildTools/MSVS/Swift.sln
deleted file mode 100644
index 2724f81..0000000
--- a/BuildTools/MSVS/Swift.sln
+++ /dev/null
@@ -1,26 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual C++ Express 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Swift", "Swift\Swift.vcproj", "{C67C3A5B-1382-4B4A-88F7-3BFC98DA43A2}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Slimber", "Slimber\Slimber.vcproj", "{597242B2-A667-47A1-B69E-D2C4281183D0}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {C67C3A5B-1382-4B4A-88F7-3BFC98DA43A2}.Debug|Win32.ActiveCfg = Debug|Win32
- {C67C3A5B-1382-4B4A-88F7-3BFC98DA43A2}.Debug|Win32.Build.0 = Debug|Win32
- {C67C3A5B-1382-4B4A-88F7-3BFC98DA43A2}.Release|Win32.ActiveCfg = Release|Win32
- {C67C3A5B-1382-4B4A-88F7-3BFC98DA43A2}.Release|Win32.Build.0 = Release|Win32
- {597242B2-A667-47A1-B69E-D2C4281183D0}.Debug|Win32.ActiveCfg = Debug|Win32
- {597242B2-A667-47A1-B69E-D2C4281183D0}.Debug|Win32.Build.0 = Debug|Win32
- {597242B2-A667-47A1-B69E-D2C4281183D0}.Release|Win32.ActiveCfg = Release|Win32
- {597242B2-A667-47A1-B69E-D2C4281183D0}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/BuildTools/SCons/SConstruct b/BuildTools/SCons/SConstruct
deleted file mode 100644
index b730e98..0000000
--- a/BuildTools/SCons/SConstruct
+++ /dev/null
@@ -1,412 +0,0 @@
-import sys, os
-sys.path.append(Dir("BuildTools/SCons").abspath)
-import SCons.SConf
-
-################################################################################
-# Build variables
-################################################################################
-
-vars = Variables(os.path.join(Dir("#").abspath, "config.py"))
-vars.Add('ccflags', "Extra C(++) compiler flags")
-vars.Add('linkflags', "Extra linker flags")
-vars.Add(EnumVariable("test", "Compile and run tests", "none", ["none", "all", "unit", "system"]))
-vars.Add(BoolVariable("optimize", "Compile with optimizations turned on", "no"))
-vars.Add(BoolVariable("debug", "Compile with debug information", "yes" if os.name != "nt" else "no"))
-vars.Add(BoolVariable("warnings", "Compile with warnings turned on",
- "yes" if os.name != "nt" else "no"))
-vars.Add(BoolVariable("max_jobs", "Build with maximum number of parallel jobs", "no"))
-vars.Add(EnumVariable("target", "Choose a target platform for compilation", "native", ["native", "iphone-simulator", "iphone-device"]))
-if os.name != "nt" :
- vars.Add(BoolVariable("coverage", "Compile with coverage information", "no"))
-if os.name == "posix" :
- vars.Add(BoolVariable("valgrind", "Run tests with valgrind", "no"))
-if os.name == "mac" or (os.name == "posix" and os.uname()[0] == "Darwin"):
- vars.Add(BoolVariable("universal", "Create universal binaries", "no"))
-if os.name == "nt" :
- vars.Add(PathVariable("vcredist", "MSVC redistributable dir", "", PathVariable.PathAccept))
-if os.name == "nt" :
- vars.Add(PackageVariable("bonjour", "Bonjour SDK location", "yes"))
-vars.Add(PackageVariable("openssl", "OpenSSL location", "yes"))
-vars.Add(PathVariable("qt", "Qt location", "", PathVariable.PathAccept))
-
-################################################################################
-# Set up default build & configure environment
-################################################################################
-
-env = Environment(CPPPATH = "#", ENV = {'PATH' : os.environ['PATH']}, variables = vars)
-
-Help(vars.GenerateHelpText(env))
-
-env.Alias("dist", ["."])
-
-# Default custom tools
-env.Tool("Test", toolpath = ["#/BuildTools/SCons/Tools"])
-env.Tool("WriteVal", toolpath = ["#/BuildTools/SCons/Tools"])
-env.Tool("BuildVersion", toolpath = ["#/BuildTools/SCons/Tools"])
-if env["PLATFORM"] == "darwin" :
- env.Tool("Nib", toolpath = ["#/BuildTools/SCons/Tools"])
- env.Tool("AppBundle", toolpath = ["#/BuildTools/SCons/Tools"])
-if env["PLATFORM"] == "win32" :
- env.Tool("WindowsBundle", toolpath = ["#/BuildTools/SCons/Tools"])
-
-# Override SConscript to handle tests
-oldSConscript = SConscript
-def SConscript(*arguments, **keywords) :
- if not keywords.get("test_only", False) or env["TEST"] :
- return apply(oldSConscript, arguments, keywords)
-
-# Max out the number of jobs
-if env["max_jobs"] :
- try :
- import multiprocessing
- SetOption("num_jobs", multiprocessing.cpu_count())
- except NotImplementedError :
- pass
-
-# Default compiler flags
-env["CCFLAGS"] = env.get("ccflags", [])
-env["LINKFLAGS"] = env.get("linkflags", [])
-if env["optimize"] :
- env.Append(CCFLAGS = "-O2")
- if env["PLATFORM"] == "win32" :
- env.Append(CCFLAGS = ["GL"])
- env.Append(LINKFLAGS = ["/INCREMENTAL:NO", "/LTCG"])
-
-if env["debug"] :
- if env["PLATFORM"] == "win32" :
- env.Append(CCFLAGS = ["/Zi", "/MDd"])
- env.Append(LINKFLAGS = ["/DEBUG"])
- else :
- env.Append(CCFLAGS = "-g")
-elif env["PLATFORM"] == "win32" :
- env.Append(CCFLAGS = ["/MD"])
-
-if env.get("universal", 0) :
- assert(env["PLATFORM"] == "darwin")
- env.Append(CCFLAGS = [
- "-isysroot", "/Developer/SDKs/MacOSX10.4u.sdk",
- "-arch", "i386",
- "-arch", "ppc"])
- env.Append(LINKFLAGS = [
- "-mmacosx-version-min=10.4",
- "-Wl", "-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk",
- "-arch", "i386",
- "-arch", "ppc"])
-
-if env["warnings"] :
- if env["PLATFORM"] == "win32" :
- env.Append(CCFLAGS = ["/Wall"])
- else :
- env.Append(CCFLAGS = ["-W", "-Wall"])
- #env.Append(CCFLAGS = ["-W", "-Wall", "-Wredundant-decls", "-pedantic", "-Wno-long-long", "-Woverloaded-virtual", "-Wundef", "-Wfloat-equal", "-Wold-style-cast"])
-
-if env.get("coverage", 0) :
- assert(env["PLATFORM"] != "win32")
- env.Append(CCFLAGS = ["-fprofile-arcs", "-ftest-coverage"])
- env.Append(LINKFLAGS = ["-fprofile-arcs", "-ftest-coverage"])
-
-if env["PLATFORM"] == "win32" :
- env.Append(LIBS = ["user32", "dnsapi", "ws2_32", "wsock32"])
- env.Append(CCFLAGS = ["/EHsc", "/nologo"])
- 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']
-
-if env["PLATFORM"] == "darwin" :
- env.Append(FRAMEWORKS = ["IOKit", "AppKit"])
-
-# Testing
-env["TEST_TYPE"] = env["test"]
-env.Alias("check", ".")
-if "check" in ARGUMENTS or "check" in COMMAND_LINE_TARGETS :
- env["TEST_TYPE"] = "unit"
-env["TEST"] = (env["TEST_TYPE"] != "none") or env.GetOption("clean")
-if env.get("valgrind", 0) :
- env["TEST_RUNNER"] = "valgrind --suppressions=QA/valgrind.supp -q --leak-check=full --track-origins=yes "
-
-# Packaging
-if ARGUMENTS.get("SWIFT_INSTALLDIR", "") :
- env["SWIFT_INSTALLDIR"] = Dir(ARGUMENTS["SWIFT_INSTALLDIR"]).abspath
-
-# cross-compiling
-target = env["target"]
-if target in ("iphone-device", "iphone-simulator"):
- if target == "iphone-device":
- sdkPart = "iPhoneOS"
- env["CC"] = "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin9-gcc-4.0.1"
- env["CXX"] = "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin9-g++-4.0.1"
- env["PATH"] = "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/"
- env["LD"] = env["CC"]
-# env["openssl"] = "#/3rdParty/openssl-0.9.8l-arm"
- targetIncludesArch = "arm"
-
- if target == "iphone-simulator":
- sdkPart = "iPhoneSimulator"
- env.Append(CCFLAGS = ["-arch", "i386"])
- env.Append(LINKFLAGS = ["-arch", "i386"])
- targetIncludesArch = "i686"
-
- sdkVer = "3.0"
- sdk = "/Developer/Platforms/" + sdkPart + ".platform/Developer/SDKs/" + sdkPart + sdkVer + ".sdk"
-
- env["FRAMEWORKS"] = ["CoreFoundation", "Foundation", "UIKit", "CoreGraphics"]
- env.Append(LINKFLAGS = ["-L\"" + sdk + "/usr/lib\"", "-F\"" + sdk + "/System/Library/Frameworks\"", "-F\"" + sdk + "/System/Library/PrivateFrameworks\""])
- env["CPPPATH"] = ["/Users/kismith/devel/swift/iPhone/Swiftly/swift/", "/Developer/Platforms/" + sdkPart + ".platform/Developer/usr/lib/gcc/" + targetIncludesArch + "-apple-darwin9/4.0.1/include/", sdk + "/usr/include", sdk + "/usr/include/c++/4.0.0/" + targetIncludesArch + "-apple-darwin9", sdk + "/usr/include/c++/4.0.0", "/Developer/Platforms/" + sdkPart + ".platform/Developer/usr/include/"]
-
-# end cross compiling stuff
-
-
-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["INSTALLSTR"] = colorize("INSTALL", "$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)
-
-if not conf.CheckCXX() or not conf.CheckCC() :
- print "Error: You need a working compiler"
- Exit(1)
-
-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
- env["SPARKLE_FRAMEWORK"] = "/Library/Frameworks/Sparkle.framework"
- 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"]
- else:
- env["OPENSSL_FLAGS"]["LIBS"] = ["ssl", "crypto"]
-else :
- env["OPENSSL_FLAGS"] = ""
-
-openssl_conf.Finish()
-
-# Bonjour
-if env["PLATFORM"] == "darwin" :
- env["HAVE_BONJOUR"] = 1
-elif env.get("bonjour", False) :
- bonjour_env = conf_env.Clone()
- bonjour_conf = Configure(bonjour_env)
- bonjour_flags = {}
- if env.get("bonjour") != True :
- bonjour_prefix = env["bonjour"]
- bonjour_flags["CPPPATH"] = [os.path.join(bonjour_prefix, "include")]
- bonjour_flags["LIBPATH"] = [os.path.join(bonjour_prefix, "lib", "win32")]
- bonjour_env.MergeFlags(bonjour_flags)
- if bonjour_conf.CheckCHeader("dns_sd.h") and bonjour_conf.CheckLib("dnssd") :
- env["HAVE_BONJOUR"] = 1
- env["BONJOUR_FLAGS"] = bonjour_flags
- env["BONJOUR_FLAGS"]["LIBS"] = ["dnssd"]
- bonjour_conf.Finish()
-
-################################################################################
-# Project files
-# FIXME: We need to explicitly list the order of libraries here, because of
-# the exported FLAGS. We should put FLAGS in separate SConscript files, and
-# read these in before anything else, such that we don't need to manually
-# list modules in order.
-################################################################################
-
-# Third-party modules
-SConscript(dirs = [
- "#/3rdParty/CppUnit",
- "#/3rdParty/Boost",
- "#/3rdParty/LibIDN"
- ])
-
-if env.get("target", 0) == "native":
- SConscript(dirs = [
- "#/3rdParty/CAres",
- "#/3rdParty/SQLite"
- ])
-
-# Checker
-SConscript(dirs = ["#/QA/Checker"], test_only = True)
-
-# Libraries
-SConscript(dirs = [
- "#/Swiften",
- "#/SwifTools"
- ])
-
-# Projects
-for dir in os.listdir(Dir("#").abspath) :
- full_dir = os.path.join(Dir("#").abspath, dir)
- if not os.path.isdir(full_dir) :
- continue
- if dir in ["QA", "Swiften", "SwifTools"] :
- continue
- sconscript = os.path.join(full_dir, "SConscript")
- if os.path.isfile(sconscript) :
- SConscript(sconscript)
-
-# Unit test runner
-SConscript(dirs = ["#/QA/UnitTest"], test_only = True)
-
-################################################################################
-# Print summary
-################################################################################
-
-print
-print " Build Configuration"
-print " -------------------"
-
-parsers = []
-if env.get("HAVE_LIBXML", 0):
- parsers.append("LibXML")
-if env.get("HAVE_EXPAT", 0):
- parsers.append("Expat")
- if bundledExpat:
- parsers.append("(Bundled)")
-print " XML Parsers: " + ' '.join(parsers)
-
-print " TLS Support: " + ("OpenSSL" if env.get("HAVE_OPENSSL",0) else "Disabled")
-print " DNSSD Support: " + ("Bonjour" if env.get("HAVE_BONJOUR") else ("Avahi" if env.get("HAVE_AVAHI") else "Disabled"))
-print
diff --git a/BuildTools/SCons/Tools/AppBundle.py b/BuildTools/SCons/Tools/AppBundle.py
deleted file mode 100644
index 12667f0..0000000
--- a/BuildTools/SCons/Tools/AppBundle.py
+++ /dev/null
@@ -1,52 +0,0 @@
-import SCons.Util
-
-def generate(env) :
- def createAppBundle(env, bundle, version = "1.0", resources = [], frameworks = [], info = {}) :
- bundleDir = bundle + ".app"
- bundleContentsDir = bundleDir + "/Contents"
- resourcesDir = bundleContentsDir + "/Resources"
- frameworksDir = bundleContentsDir + "/Frameworks"
- env.Install(bundleContentsDir + "/MacOS", bundle)
- env.WriteVal(bundleContentsDir + "/PkgInfo", env.Value("APPL\77\77\77\77"))
-
- infoDict = {
- "CFBundleDevelopmentRegion" : "English",
- "CFBundleExecutable" : bundle,
- "CFBundleIdentifier" : "im.swift." + bundle,
- "CFBundleInfoDictionaryVersion" : "6.0",
- "CFBundleName" : bundle,
- "CFBundlePackageType" : "APPL",
- "CFBundleSignature": "\77\77\77\77",
- "CFBundleVersion" : version,
- "CFBundleIconFile" : bundle,
- "NSPrincipalClass" : "NSApplication",
- "NSHumanReadableCopyright" : unichr(0xA9) + " 2009 Swift Development Team.\nAll Rights Reserved."
- }
- infoDict.update(info)
-
- plist = """<?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
- <plist version="1.0">
- <dict>
- """
- for key, value in infoDict.items() :
- plist += "<key>" + key + "</key>\n"
- plist += "<string>" + value.encode("utf-8") + "</string>\n"
- plist += """</dict>
- </plist>
- """
- env.WriteVal(bundleContentsDir + "/Info.plist", env.Value(plist))
-
- for resource in resources :
- env.Install(resourcesDir, resource)
-
- for framework in frameworks :
- env.Install(frameworksDir, framework)
-
- return env.Dir(bundleDir)
-
- env.AddMethod(createAppBundle, "AppBundle")
-
-
-def exists(env) :
- return env["PLATFORM"] == "darwin"
diff --git a/BuildTools/SCons/Tools/BuildVersion.py b/BuildTools/SCons/Tools/BuildVersion.py
deleted file mode 100644
index 530ef8a..0000000
--- a/BuildTools/SCons/Tools/BuildVersion.py
+++ /dev/null
@@ -1,17 +0,0 @@
-import SCons.Util
-
-import Version
-
-def generate(env) :
- def createBuildVersion(env, target, version = None) :
- buildVersion = """#pragma once
-
-static const char* buildVersion = \"%(buildVersion)s\";\n
-""" % { "buildVersion" : Version.getBuildVersion(version) }
- env.WriteVal(target, env.Value(buildVersion))
-
- env.AddMethod(createBuildVersion, "BuildVersion")
-
-
-def exists(env) :
- return true
diff --git a/BuildTools/SCons/Tools/Nib.py b/BuildTools/SCons/Tools/Nib.py
deleted file mode 100644
index ccfd884..0000000
--- a/BuildTools/SCons/Tools/Nib.py
+++ /dev/null
@@ -1,12 +0,0 @@
-import SCons.Util
-
-def generate(env) :
- env["IBTOOL"] = "ibtool"
- env["BUILDERS"]["Nib"] = SCons.Builder.Builder(
- action = SCons.Action.Action("$IBTOOL --errors --warnings --notices --output-format human-readable-text --compile $TARGET $SOURCE", cmdstr = "$NIBCOMSTR"),
- suffix = ".nib",
- src_suffix = ".xib",
- single_source = True)
-
-def exists(env) :
- return env["PLATFORM"] == "darwin"
diff --git a/BuildTools/SCons/Tools/Test.py b/BuildTools/SCons/Tools/Test.py
deleted file mode 100644
index aaed222..0000000
--- a/BuildTools/SCons/Tools/Test.py
+++ /dev/null
@@ -1,13 +0,0 @@
-import SCons.Util
-
-def generate(env) :
- def registerTest(env, target, type = "unit") :
- if env["TEST_TYPE"] == "all" or env["TEST_TYPE"] == type :
- cmd = target[0].abspath if SCons.Util.is_List(target) else target.abspath
- env.Command("**dummy**", target,
- SCons.Action.Action(env.get("TEST_RUNNER", "") + cmd, cmdstr = "$TESTCOMSTR"))
-
- env.AddMethod(registerTest, "Test")
-
-def exists(env) :
- return True
diff --git a/BuildTools/SCons/Tools/WindowsBundle.py b/BuildTools/SCons/Tools/WindowsBundle.py
deleted file mode 100644
index bc690af..0000000
--- a/BuildTools/SCons/Tools/WindowsBundle.py
+++ /dev/null
@@ -1,17 +0,0 @@
-import SCons.Util, os
-
-def generate(env) :
- def createWindowsBundle(env, bundle, resources = [], qtimageformats = [], qtlibs = []) :
- env.Install(bundle, bundle + ".exe")
- for lib in qtlibs :
- env.Install(bundle, os.path.join(env["QTDIR"], "bin", lib + ".dll"))
- env.Install(os.path.join(bundle, "imageformats"), [os.path.join(env["QTDIR"], "plugins", "imageformats", "q" + codec + "4.dll") for codec in qtimageformats])
-
- for resource in resources :
- env.Install(bundle, resource)
-
- env.AddMethod(createWindowsBundle, "WindowsBundle")
-
-def exists(env) :
- return env["PLATFORM"] == "win32"
-
diff --git a/BuildTools/SCons/Tools/WriteVal.py b/BuildTools/SCons/Tools/WriteVal.py
deleted file mode 100644
index e39ad82..0000000
--- a/BuildTools/SCons/Tools/WriteVal.py
+++ /dev/null
@@ -1,14 +0,0 @@
-import SCons.Util
-
-def generate(env) :
- def writeVal(env, target, source) :
- f = open(str(target[0]), 'wb')
- f.write(source[0].get_contents())
- f.close()
-
- env["BUILDERS"]["WriteVal"] = SCons.Builder.Builder(
- action = SCons.Action.Action(writeVal, cmdstr = "$GENCOMSTR"),
- single_source = True)
-
-def exists(env) :
- return True
diff --git a/BuildTools/SCons/Tools/nsis.py b/BuildTools/SCons/Tools/nsis.py
deleted file mode 100644
index 567876d..0000000
--- a/BuildTools/SCons/Tools/nsis.py
+++ /dev/null
@@ -1,37 +0,0 @@
-import re, os
-import SCons.Util
-nsisFiles_re = re.compile(r'^\s*File "([^"]*)"', re.M)
-
-"""
-TODO:
- - Extract the target from the nsis file
- - When a target is provided use the output function
-"""
-
-def generate(env) :
- """Add Builders and construction variables for qt to an Environment."""
- Builder = SCons.Builder.Builder
-
- env['NSIS_MAKENSIS'] = 'makensis'
- env['NSIS_OPTIONS'] = ["/V2"]
- def winToLocalReformat(path) :
- return os.path.join(*path.split("\\"))
- def scanNsisContent(node, env, path, arg):
- contents = node.get_contents()
- includes = nsisFiles_re.findall(contents)
- includes = [ winToLocalReformat(include) for include in includes ]
- return filter(lambda x: x.rfind('*')==-1, includes)
- nsisscanner = env.Scanner(name = 'nsisfile',
- function = scanNsisContent,
- argument = None,
- skeys = ['.nsi'])
- nsisbuilder = Builder(
- action = SCons.Action.Action('$NSIS_MAKENSIS $NSIS_OPTIONS $SOURCE', cmdstr = '$NSISCOMSTR'),
- source_scanner = nsisscanner,
- single_source = True
- )
- env.Append( BUILDERS={'Nsis' : nsisbuilder} )
-
-def exists(env) :
- return True
-
diff --git a/BuildTools/SCons/Tools/qt4.py b/BuildTools/SCons/Tools/qt4.py
deleted file mode 100644
index 0a84c03..0000000
--- a/BuildTools/SCons/Tools/qt4.py
+++ /dev/null
@@ -1,517 +0,0 @@
-
-"""SCons.Tool.qt
-
-Tool-specific initialization for Qt.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "/home/scons/scons/branch.0/branch.96/baseline/src/engine/SCons/Tool/qt.py 0.96.92.D001 2006/04/10 23:13:27 knight"
-
-import os.path
-import re
-
-import SCons.Action
-import SCons.Builder
-import SCons.Defaults
-import SCons.Scanner
-import SCons.Tool
-import SCons.Util
-
-class ToolQtWarning(SCons.Warnings.Warning):
- pass
-
-class GeneratedMocFileNotIncluded(ToolQtWarning):
- pass
-
-class QtdirNotFound(ToolQtWarning):
- pass
-
-SCons.Warnings.enableWarningClass(ToolQtWarning)
-
-qrcinclude_re = re.compile(r'<file>([^<]*)</file>', re.M)
-
-def transformToWinePath(path) :
- return os.popen('winepath -w "%s"'%path).read().strip().replace('\\','/')
-
-header_extensions = [".h", ".hxx", ".hpp", ".hh"]
-if SCons.Util.case_sensitive_suffixes('.h', '.H'):
- header_extensions.append('.H')
-# TODO: The following two lines will work when integrated back to SCons
-# TODO: Meanwhile the third line will do the work
-#cplusplus = __import__('c++', globals(), locals(), [])
-#cxx_suffixes = cplusplus.CXXSuffixes
-cxx_suffixes = [".c", ".cxx", ".cpp", ".cc"]
-
-def checkMocIncluded(target, source, env):
- moc = target[0]
- cpp = source[0]
- # looks like cpp.includes is cleared before the build stage :-(
- # not really sure about the path transformations (moc.cwd? cpp.cwd?) :-/
- path = SCons.Defaults.CScan.path_function(env, moc.cwd)
- includes = SCons.Defaults.CScan(cpp, env, path)
- if not moc in includes:
- SCons.Warnings.warn(
- GeneratedMocFileNotIncluded,
- "Generated moc file '%s' is not included by '%s'" %
- (str(moc), str(cpp)))
-
-def find_file(filename, paths, node_factory):
- for dir in paths:
- node = node_factory(filename, dir)
- if node.rexists():
- return node
- return None
-
-class _Automoc:
- """
- Callable class, which works as an emitter for Programs, SharedLibraries and
- StaticLibraries.
- """
-
- def __init__(self, objBuilderName):
- self.objBuilderName = objBuilderName
-
- def __call__(self, target, source, env):
- """
- Smart autoscan function. Gets the list of objects for the Program
- or Lib. Adds objects and builders for the special qt files.
- """
- try:
- if int(env.subst('$QT4_AUTOSCAN')) == 0:
- return target, source
- except ValueError:
- pass
- try:
- debug = int(env.subst('$QT4_DEBUG'))
- except ValueError:
- debug = 0
-
- # some shortcuts used in the scanner
- splitext = SCons.Util.splitext
- objBuilder = getattr(env, self.objBuilderName)
-
- # some regular expressions:
- # Q_OBJECT detection
- q_object_search = re.compile(r'[^A-Za-z0-9]Q_OBJECT[^A-Za-z0-9]')
- # cxx and c comment 'eater'
- #comment = re.compile(r'(//.*)|(/\*(([^*])|(\*[^/]))*\*/)')
- # CW: something must be wrong with the regexp. See also bug #998222
- # CURRENTLY THERE IS NO TEST CASE FOR THAT
-
- # The following is kind of hacky to get builders working properly (FIXME)
- objBuilderEnv = objBuilder.env
- objBuilder.env = env
- mocBuilderEnv = env.Moc4.env
- env.Moc4.env = env
-
- # make a deep copy for the result; MocH objects will be appended
- out_sources = source[:]
-
- for obj in source:
- if isinstance(obj,basestring): # big kludge!
- print "scons: qt4: '%s' MAYBE USING AN OLD SCONS VERSION AND NOT CONVERTED TO 'File'. Discarded." % str(obj)
- continue
- if not obj.has_builder():
- # binary obj file provided
- if debug:
- print "scons: qt: '%s' seems to be a binary. Discarded." % str(obj)
- continue
- cpp = obj.sources[0]
- if not splitext(str(cpp))[1] in cxx_suffixes:
- if debug:
- print "scons: qt: '%s' is no cxx file. Discarded." % str(cpp)
- # c or fortran source
- continue
- #cpp_contents = comment.sub('', cpp.get_contents())
- try:
- cpp_contents = cpp.get_contents()
- except: continue # may be an still not generated source
- h=None
- for h_ext in header_extensions:
- # try to find the header file in the corresponding source
- # directory
- hname = splitext(cpp.name)[0] + h_ext
- h = find_file(hname, (cpp.get_dir(),), env.File)
- if h:
- if debug:
- print "scons: qt: Scanning '%s' (header of '%s')" % (str(h), str(cpp))
- #h_contents = comment.sub('', h.get_contents())
- h_contents = h.get_contents()
- break
- if not h and debug:
- print "scons: qt: no header for '%s'." % (str(cpp))
- if h and q_object_search.search(h_contents):
- # h file with the Q_OBJECT macro found -> add moc_cpp
- moc_cpp = env.Moc4(h)
- moc_o = objBuilder(moc_cpp)
- out_sources.append(moc_o)
- #moc_cpp.target_scanner = SCons.Defaults.CScan
- if debug:
- print "scons: qt: found Q_OBJECT macro in '%s', moc'ing to '%s'" % (str(h), str(moc_cpp))
- if cpp and q_object_search.search(cpp_contents):
- # cpp file with Q_OBJECT macro found -> add moc
- # (to be included in cpp)
- moc = env.Moc4(cpp)
- env.Ignore(moc, moc)
- if debug:
- print "scons: qt: found Q_OBJECT macro in '%s', moc'ing to '%s'" % (str(cpp), str(moc))
- #moc.source_scanner = SCons.Defaults.CScan
- # restore the original env attributes (FIXME)
- objBuilder.env = objBuilderEnv
- env.Moc4.env = mocBuilderEnv
-
- return (target, out_sources)
-
-AutomocShared = _Automoc('SharedObject')
-AutomocStatic = _Automoc('StaticObject')
-
-def _detect(env):
- """Not really safe, but fast method to detect the QT library"""
- try: return env['QTDIR']
- except KeyError: pass
-
- try: return os.environ['QTDIR']
- except KeyError: pass
-
- moc = env.WhereIs('moc-qt4') or env.WhereIs('moc4') or env.WhereIs('moc')
- if moc:
- import sys
- if sys.platform == "darwin" :
- return ""
- QTDIR = os.path.dirname(os.path.dirname(moc))
- SCons.Warnings.warn(
- QtdirNotFound,
- "QTDIR variable is not defined, using moc executable as a hint (QTDIR=%s)" % QTDIR)
- return QTDIR
-
- raise SCons.Errors.StopError(
- QtdirNotFound,
- "Could not detect Qt 4 installation")
- return None
-
-def generate(env):
- """Add Builders and construction variables for qt to an Environment."""
-
- def locateQt4Command(env, command, qtdir) :
- if len(qtdir) == 0 :
- qtdir = "/usr"
- suffixes = [
- '-qt4',
- '-qt4.exe',
- '4',
- '4.exe',
- '',
- '.exe',
- ]
- triedPaths = []
- for suffix in suffixes :
- fullpath = os.path.join(qtdir,'bin',command + suffix)
- if os.access(fullpath, os.X_OK) :
- return fullpath
- triedPaths.append(fullpath)
-
- fullpath = env.Detect([command+'-qt4', command+'4', command])
- if not (fullpath is None) : return fullpath
-
- raise Exception("Qt4 command '" + command + "' not found. Tried: " + ', '.join(triedPaths))
-
-
- CLVar = SCons.Util.CLVar
- Action = SCons.Action.Action
- Builder = SCons.Builder.Builder
- splitext = SCons.Util.splitext
-
- env['QTDIR'] = _detect(env)
- # TODO: 'Replace' should be 'SetDefault'
-# env.SetDefault(
- env.Replace(
- QTDIR = _detect(env),
- # TODO: This is not reliable to QTDIR value changes but needed in order to support '-qt4' variants
- QT4_MOC = locateQt4Command(env,'moc', env['QTDIR']),
- QT4_UIC = locateQt4Command(env,'uic', env['QTDIR']),
- QT4_RCC = locateQt4Command(env,'rcc', env['QTDIR']),
- QT4_LUPDATE = locateQt4Command(env,'lupdate', env['QTDIR']),
- QT4_LRELEASE = locateQt4Command(env,'lrelease', env['QTDIR']),
- QT4_LIB = '', # KLUDGE to avoid linking qt3 library
-
- QT4_AUTOSCAN = 1, # Should the qt tool try to figure out, which sources are to be moc'ed?
-
- # Some QT specific flags. I don't expect someone wants to
- # manipulate those ...
- QT4_UICFLAGS = CLVar(''),
- QT4_MOCFROMHFLAGS = CLVar(''),
- QT4_MOCFROMCXXFLAGS = CLVar('-i'),
- QT4_QRCFLAGS = '',
-
- # suffixes/prefixes for the headers / sources to generate
- QT4_UISUFFIX = '.ui',
- QT4_UICDECLPREFIX = 'ui_',
- QT4_UICDECLSUFFIX = '.h',
- QT4_MOCHPREFIX = 'moc_',
- QT4_MOCHSUFFIX = '$CXXFILESUFFIX',
- QT4_MOCCXXPREFIX = '',
- QT4_MOCCXXSUFFIX = '.moc',
- QT4_QRCSUFFIX = '.qrc',
- QT4_QRCCXXSUFFIX = '$CXXFILESUFFIX',
- QT4_QRCCXXPREFIX = 'qrc_',
- QT4_MOCCPPPATH = [],
- QT4_MOCINCFLAGS = '$( ${_concat("-I", QT4_MOCCPPPATH, INCSUFFIX, __env__, RDirs)} $)',
-
- # Commands for the qt support ...
- QT4_UICCOM = '$QT4_UIC $QT4_UICFLAGS -o $TARGET $SOURCE',
- QT4_MOCFROMHCOM = '$QT4_MOC $QT4_MOCFROMHFLAGS $QT4_MOCINCFLAGS -o $TARGET $SOURCE',
- QT4_MOCFROMCXXCOM = [
- '$QT4_MOC $QT4_MOCFROMCXXFLAGS $QT4_MOCINCFLAGS -o $TARGET $SOURCE',
- Action(checkMocIncluded,None)],
- QT4_LUPDATECOM = '$QT4_LUPDATE $SOURCE -ts $TARGET',
- QT4_LRELEASECOM = '$QT4_LRELEASE $SOURCE',
- QT4_RCCCOM = '$QT4_RCC $QT4_QRCFLAGS -name $SOURCE $SOURCE -o $TARGET',
- )
- if len(env["QTDIR"]) > 0 :
- env.Replace(QT4_LIBPATH = os.path.join('$QTDIR', 'lib'))
-
- # Translation builder
- tsbuilder = Builder(
- action = SCons.Action.Action('$QT4_LUPDATECOM'), #,'$QT4_LUPDATECOMSTR'),
- multi=1
- )
- env.Append( BUILDERS = { 'Ts': tsbuilder } )
- qmbuilder = Builder(
- action = SCons.Action.Action('$QT4_LRELEASECOM'),# , '$QT4_LRELEASECOMSTR'),
- src_suffix = '.ts',
- suffix = '.qm',
- single_source = True
- )
- env.Append( BUILDERS = { 'Qm': qmbuilder } )
-
- # Resource builder
- def scanResources(node, env, path, arg):
- # I've being careful on providing names relative to the qrc file
- # If that was not needed that code could be simplified a lot
- def recursiveFiles(basepath, path) :
- result = []
- for item in os.listdir(os.path.join(basepath, path)) :
- itemPath = os.path.join(path, item)
- if os.path.isdir(os.path.join(basepath, itemPath)) :
- result += recursiveFiles(basepath, itemPath)
- else:
- result.append(itemPath)
- return result
- contents = node.get_contents()
- includes = qrcinclude_re.findall(contents)
- qrcpath = os.path.dirname(node.path)
- dirs = [included for included in includes if os.path.isdir(os.path.join(qrcpath,included))]
- # dirs need to include files recursively
- for dir in dirs :
- includes.remove(dir)
- includes+=recursiveFiles(qrcpath,dir)
- return includes
- qrcscanner = SCons.Scanner.Scanner(name = 'qrcfile',
- function = scanResources,
- argument = None,
- skeys = ['.qrc'])
- qrcbuilder = Builder(
- action = SCons.Action.Action('$QT4_RCCCOM', cmdstr = '$QT4_RCCCOMSTR'),
- source_scanner = qrcscanner,
- src_suffix = '$QT4_QRCSUFFIX',
- suffix = '$QT4_QRCCXXSUFFIX',
- prefix = '$QT4_QRCCXXPREFIX',
- single_source = True
- )
- env.Append( BUILDERS = { 'Qrc': qrcbuilder } )
-
- # Interface builder
- uic4builder = Builder(
- action = SCons.Action.Action('$QT4_UICCOM', cmdstr = '$QT4_UICCOMSTR'),
- src_suffix='$QT4_UISUFFIX',
- suffix='$QT4_UICDECLSUFFIX',
- prefix='$QT4_UICDECLPREFIX',
- single_source = True
- #TODO: Consider the uiscanner on new scons version
- )
- env['BUILDERS']['Uic4'] = uic4builder
-
- # Metaobject builder
- mocBld = Builder(action={}, prefix={}, suffix={})
- for h in header_extensions:
- act = SCons.Action.Action('$QT4_MOCFROMHCOM', cmdstr = '$QT4_MOCFROMHCOMSTR')
- mocBld.add_action(h, act)
- mocBld.prefix[h] = '$QT4_MOCHPREFIX'
- mocBld.suffix[h] = '$QT4_MOCHSUFFIX'
- for cxx in cxx_suffixes:
- act = SCons.Action.Action('$QT4_MOCFROMCXXCOM', cmdstr = '$QT4_MOCFROMCXXCOMSTR')
- mocBld.add_action(cxx, act)
- mocBld.prefix[cxx] = '$QT4_MOCCXXPREFIX'
- mocBld.suffix[cxx] = '$QT4_MOCCXXSUFFIX'
- env['BUILDERS']['Moc4'] = mocBld
-
- # er... no idea what that was for
- static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
- static_obj.src_builder.append('Uic4')
- shared_obj.src_builder.append('Uic4')
-
- # We use the emitters of Program / StaticLibrary / SharedLibrary
- # to scan for moc'able files
- # We can't refer to the builders directly, we have to fetch them
- # as Environment attributes because that sets them up to be called
- # correctly later by our emitter.
- env.AppendUnique(PROGEMITTER =[AutomocStatic],
- SHLIBEMITTER=[AutomocShared],
- LIBEMITTER =[AutomocStatic],
- # Of course, we need to link against the qt libraries
- LIBPATH=["$QT4_LIBPATH"],
- LIBS=['$QT4_LIB'])
-
- # TODO: Does dbusxml2cpp need an adapter
- env.AddMethod(enable_modules, "EnableQt4Modules")
-
-def enable_modules(self, modules, debug=False, crosscompiling=False) :
- import sys
-
- validModules = [
- 'QtCore',
- 'QtGui',
- 'QtOpenGL',
- 'Qt3Support',
- 'QtAssistant',
- 'QtScript',
- 'QtDBus',
- 'QtSql',
- # The next modules have not been tested yet so, please
- # maybe they require additional work on non Linux platforms
- 'QtNetwork',
- 'QtSvg',
- 'QtTest',
- 'QtXml',
- 'QtXmlPatterns',
- 'QtUiTools',
- 'QtDesigner',
- 'QtDesignerComponents',
- 'QtWebKit',
- 'QtHelp',
- 'QtScript',
- ]
- staticModules = [
- 'QtUiTools',
- ]
- invalidModules=[]
- for module in modules:
- if module not in validModules :
- invalidModules.append(module)
- if invalidModules :
- raise Exception("Modules %s are not Qt4 modules. Valid Qt4 modules are: %s"% (
- str(invalidModules),str(validModules)))
-
- moduleDefines = {
- 'QtScript' : ['QT_SCRIPT_LIB'],
- 'QtSvg' : ['QT_SVG_LIB'],
- 'Qt3Support' : ['QT_QT3SUPPORT_LIB','QT3_SUPPORT'],
- 'QtSql' : ['QT_SQL_LIB'],
- 'QtXml' : ['QT_XML_LIB'],
- 'QtOpenGL' : ['QT_OPENGL_LIB'],
- 'QtGui' : ['QT_GUI_LIB'],
- 'QtNetwork' : ['QT_NETWORK_LIB'],
- 'QtCore' : ['QT_CORE_LIB'],
- }
- for module in modules :
- try : self.AppendUnique(CPPDEFINES=moduleDefines[module])
- except: pass
- debugSuffix = ''
-
- if sys.platform in ["linux2"] and not crosscompiling :
- if debug : debugSuffix = '_debug'
- self.AppendUnique(CPPPATH=[os.path.join("$QTDIR","include", "phonon")])
- for module in modules :
- self.AppendUnique(LIBS=[module+debugSuffix])
- self.AppendUnique(LIBPATH=[os.path.join("$QTDIR","lib")])
- self.AppendUnique(CPPPATH=[os.path.join("$QTDIR","include")])
- self.AppendUnique(CPPPATH=[os.path.join("$QTDIR","include",module)])
- self["QT4_MOCCPPPATH"] = self["CPPPATH"]
- return
-
- if sys.platform == "win32" or crosscompiling :
- if crosscompiling:
- transformedQtdir = transformToWinePath(self['QTDIR'])
- self['QT4_MOC'] = "QTDIR=%s %s"%( transformedQtdir, self['QT4_MOC'])
- self.AppendUnique(CPPPATH=[os.path.join("$QTDIR","include")])
- try: modules.remove("QtDBus")
- except: pass
- if debug : debugSuffix = 'd'
- if "QtAssistant" in modules:
- self.AppendUnique(CPPPATH=[os.path.join("$QTDIR","include","QtAssistant")])
- modules.remove("QtAssistant")
- modules.append("QtAssistantClient")
- # FIXME: Phonon Hack
- self.AppendUnique(LIBS=['phonon4'+debugSuffix])
- self.AppendUnique(LIBS=[lib+'4'+debugSuffix for lib in modules if lib not in staticModules])
- self.PrependUnique(LIBS=[lib+debugSuffix for lib in modules if lib in staticModules])
- if 'QtOpenGL' in modules:
- self.AppendUnique(LIBS=['opengl32'])
- self.AppendUnique(CPPPATH=[ '$QTDIR/include/'])
- self.AppendUnique(CPPPATH=[ '$QTDIR/include/'+module for module in modules])
- if crosscompiling :
- self["QT4_MOCCPPPATH"] = [
- path.replace('$QTDIR', transformedQtdir)
- for path in self['CPPPATH'] ]
- else :
- self["QT4_MOCCPPPATH"] = self["CPPPATH"]
- self.AppendUnique(LIBPATH=[os.path.join('$QTDIR','lib')])
- return
-
- if sys.platform=="darwin" :
- if debug : debugSuffix = 'd'
-
- if len(self["QTDIR"]) > 0 :
- self.AppendUnique(LIBPATH=[os.path.join('$QTDIR','lib')])
- self.AppendUnique(LINKFLAGS="-F$QTDIR/lib")
- self.AppendUnique(CPPFLAGS="-F$QTDIR/lib")
- self.AppendUnique(LINKFLAGS="-L$QTDIR/lib") #TODO clean!
-
- # FIXME: Phonon Hack
- self.Append(LINKFLAGS=['-framework', "phonon"])
-
- for module in modules :
- if module in staticModules :
- self.AppendUnique(LIBS=[module+debugSuffix]) # TODO: Add the debug suffix
- self.AppendUnique(LIBPATH=[os.path.join("$QTDIR","lib")])
- else :
- if len(self["QTDIR"]) > 0 :
- self.Append(CPPFLAGS = ["-I" + os.path.join("$QTDIR", "lib", module + ".framework", "Versions", "4", "Headers")])
- else :
- self.Append(CPPFLAGS = ["-I" + os.path.join("/Library/Frameworks", module + ".framework", "Versions", "4", "Headers")])
- self.Append(LINKFLAGS=['-framework', module])
- if 'QtOpenGL' in modules:
- self.AppendUnique(LINKFLAGS="-F/System/Library/Frameworks")
- self.Append(LINKFLAGS=['-framework', 'AGL']) #TODO ughly kludge to avoid quotes
- self.Append(LINKFLAGS=['-framework', 'OpenGL'])
- self["QT4_MOCCPPPATH"] = self["CPPPATH"]
-
-def exists(env):
- return _detect(env)
diff --git a/BuildTools/SCons/Version.py b/BuildTools/SCons/Version.py
deleted file mode 100644
index 02edcc9..0000000
--- a/BuildTools/SCons/Version.py
+++ /dev/null
@@ -1,15 +0,0 @@
-import subprocess, os, datetime
-
-def getGitBuildVersion() :
- p = subprocess.Popen("git rev-parse HEAD", shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=(os.name != "nt"))
- gitVersion = p.stdout.read().rstrip()[0:7]
- p.stdin.close()
- return gitVersion if p.wait() == 0 else None
-
-def getBuildVersion(version = None) :
- if version :
- return version
- gitVersion = getGitBuildVersion()
- if gitVersion :
- return gitVersion
- return datetime.date.today().strftime("%Y%m%d")
diff --git a/BuildTools/package_debian.sh b/BuildTools/package_debian.sh
deleted file mode 100755
index 3d01243..0000000
--- a/BuildTools/package_debian.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-VERSION=1.0
-PACKAGE=swift-$VERSION
-
-rm -rf $PACKAGE
-git archive --format=tar --prefix=$PACKAGE/ HEAD | tar x
-cp -r Swift/Packaging/Debian $PACKAGE/debian
-pushd $PACKAGE
-SWIFT_VERSION=$VERSION dpkg-buildpackage -rfakeroot
-popd
-rm -rf $PACKAGE