Removed SCons.
This commit is contained in:
176
SConstruct
176
SConstruct
@@ -1,176 +0,0 @@
|
||||
# -*- Mode: python -*-
|
||||
# SCons build specification
|
||||
# see http://www.scons.org if you do not have this tool
|
||||
#
|
||||
# Copyright (C) 2005-2008 OGG, LLC. All rights reserved.
|
||||
#
|
||||
# This software is provided AS-IS with no warranty, either express or
|
||||
# implied.
|
||||
#
|
||||
# This software is distributed under license and may not be copied,
|
||||
# modified or distributed except as expressly authorized under the
|
||||
# terms of the license contained in the file LICENSE.txt in this
|
||||
# distribution.
|
||||
|
||||
# This source code is distributed under specific license
|
||||
# terms. See LICENSE.txt for details.
|
||||
|
||||
# invoke with 'scons' to build the library
|
||||
|
||||
# change this to one of openssl or schannel if you want TLS support
|
||||
TLS_PLUGIN = 'dummy'
|
||||
|
||||
LIBSTROPHE_VERSION_MAJOR=0
|
||||
LIBSTROPHE_VERSION_MINOR=7
|
||||
|
||||
from os.path import join
|
||||
|
||||
# TODO: should use lamda and map to work on python 1.5
|
||||
def path(prefix, list): return [join(prefix, x) for x in list]
|
||||
|
||||
ExpatSources = Split("""
|
||||
xmlparse.c
|
||||
xmltok.c
|
||||
xmlrole.c
|
||||
""")
|
||||
|
||||
Sources = Split("""
|
||||
ctx.c
|
||||
conn.c
|
||||
parser.c
|
||||
handler.c
|
||||
auth.c
|
||||
event.c
|
||||
stanza.c
|
||||
jid.c
|
||||
sock.c
|
||||
hash.c
|
||||
sasl.c
|
||||
sha1.c
|
||||
md5.c
|
||||
util.c
|
||||
thread.c
|
||||
snprintf.c
|
||||
""")
|
||||
|
||||
Sources.append('tls_%s.c' % TLS_PLUGIN)
|
||||
|
||||
Headers = Split("""
|
||||
strophe.h
|
||||
common.h
|
||||
sock.h
|
||||
hash.h
|
||||
sha1.h
|
||||
md5.h
|
||||
util.h
|
||||
thread.h
|
||||
""")
|
||||
|
||||
Examples = Split("""
|
||||
basic.c
|
||||
active.c
|
||||
roster.c
|
||||
""")
|
||||
|
||||
env = Environment()
|
||||
if env['CC'] == 'gcc':
|
||||
env.Append(CCFLAGS=["-g", "-Wall"])
|
||||
if env['CC'] == 'cl':
|
||||
env.Append(CCFLAGS=["/MDd", "/ZI"])
|
||||
|
||||
expatenv = env.Clone()
|
||||
# feature defs
|
||||
expatenv.Append(CCFLAGS=" -DXML_DTD")
|
||||
expatenv.Append(CCFLAGS=" -DXML_NS")
|
||||
expatenv.Append(CCFLAGS=" -DXML_CONTEXT_BYTES=1024")
|
||||
# sys config defs (these should be autodetected)
|
||||
expatenv.Append(CCFLAGS=" -DBYTEORDER=4321")
|
||||
expatenv.Append(CCFLAGS=" -DHAVE_MEMMOVE")
|
||||
expatenv.Append(CCFLAGS=" -DHAVE_UNISTD")
|
||||
|
||||
expat = expatenv.Library('expat', path(join('expat', 'lib'), ExpatSources))
|
||||
Default(expat)
|
||||
|
||||
stropheenv = env.Clone()
|
||||
stropheenv.Append(CCFLAGS=" -DXML_STATIC")
|
||||
stropheenv.Append(CPPPATH=['.', 'src', join('expat','lib')])
|
||||
|
||||
strophe = stropheenv.Library('strophe', path("src", Sources))
|
||||
Default(strophe)
|
||||
|
||||
exenv = env.Clone()
|
||||
exenv.Append(CPPPATH=['.'])
|
||||
exenv.Append(LIBS=["strophe", "expat"])
|
||||
if TLS_PLUGIN == 'openssl':
|
||||
exenv.Append(LIBS=["ssl"])
|
||||
exenv.Append(LIBPATH=["."])
|
||||
if exenv["PLATFORM"] == "win32":
|
||||
exenv.Append(LIBS=["ws2_32", "winmm"])
|
||||
if exenv["PLATFORM"] != "win32":
|
||||
exenv.Append(LIBS=["resolv"])
|
||||
for e in path("examples", Examples):
|
||||
example = exenv.Program(e)
|
||||
Default(example)
|
||||
|
||||
# generate a MSVC project for convenience
|
||||
# TODO: this doesn't seem to be implemented?
|
||||
#env.MSVSProject(target = 'strophe' + env['MSVSPROJECTSUFFIX'],
|
||||
# srcs = path("src", Sources), incs = path("src", Headers),
|
||||
# variant = 'Release', buildtarget = strophe)
|
||||
|
||||
### unit and regression tests
|
||||
|
||||
import unittest
|
||||
from os import popen
|
||||
|
||||
class RunnableTestCase(unittest.TestCase):
|
||||
def __init__(self, file):
|
||||
self.file = str(file)
|
||||
unittest.TestCase.__init__(self)
|
||||
def shortDescription(self):
|
||||
return "Running '%s'" % self.file
|
||||
def runTest(self):
|
||||
'''C tests should return '0' on exit'''
|
||||
test = popen(self.file)
|
||||
self.failIf(test.close(), "unit '%s' did not exit normally" % self.file)
|
||||
|
||||
def testcase_runner(target, source, env):
|
||||
suite = unittest.TestSuite()
|
||||
for test in source:
|
||||
#suite.addTest(RunnableTestCase(test[0]))
|
||||
suite.addTest(RunnableTestCase(test))
|
||||
result = unittest.TextTestRunner(verbosity=2).run(suite)
|
||||
env.Execute(Touch(str(target[0])))
|
||||
|
||||
testenv = env.Clone()
|
||||
testenv.Append(CPPPATH=['.', 'src', join('expat','lib')])
|
||||
testenv.Append(LIBS=["strophe", "expat"])
|
||||
if TLS_PLUGIN == 'openssl':
|
||||
testenv.Append(LIBS=["ssl"])
|
||||
if testenv["PLATFORM"] == "win32":
|
||||
testenv.Append(LIBS=["winmm", "ws2_32"])
|
||||
if testenv["PLATFORM"] != "win32":
|
||||
testenv.Append(LIBS=["resolv"])
|
||||
testenv.Append(LIBPATH=['.'])
|
||||
|
||||
import SCons.Node
|
||||
test_builder = Builder(action = testcase_runner,
|
||||
multi = 1)
|
||||
|
||||
testenv.Append(BUILDERS = {'TestCase' : test_builder})
|
||||
|
||||
# application source files for unit tests
|
||||
tests = Split("""
|
||||
test_ctx.c
|
||||
test_sock.c
|
||||
test_hash.c
|
||||
test_base64.c
|
||||
test_sasl.c
|
||||
test_jid.c
|
||||
""")
|
||||
|
||||
# build each test and add it to the 'test' pseudo target
|
||||
for test in path("tests", tests):
|
||||
tests = testenv.TestCase('test_stamp', testenv.Program(test))
|
||||
testenv.AlwaysBuild(tests)
|
||||
testenv.Alias('test', tests)
|
||||
Reference in New Issue
Block a user