diff options
author | David Robillard <d@drobilla.net> | 2011-01-19 07:24:09 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2011-01-19 07:24:09 +0000 |
commit | 05f3e795bebbf51c1a5a859cd015d5dbd74c21f9 (patch) | |
tree | 1be491847f560c520f3077497b739221635d42ce /wscript | |
parent | 281c57610c95e1f80fd42b3729da1d3da90c43b6 (diff) | |
download | serd-05f3e795bebbf51c1a5a859cd015d5dbd74c21f9.tar.gz serd-05f3e795bebbf51c1a5a859cd015d5dbd74c21f9.tar.bz2 serd-05f3e795bebbf51c1a5a859cd015d5dbd74c21f9.zip |
Initial import.
git-svn-id: http://svn.drobilla.net/serd/trunk@2 490d8e77-9747-427b-9fa3-0b8f29cee8a0
Diffstat (limited to 'wscript')
-rw-r--r-- | wscript | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/wscript b/wscript new file mode 100644 index 00000000..3367977e --- /dev/null +++ b/wscript @@ -0,0 +1,142 @@ +#!/usr/bin/env python +import Logs +import Options +import autowaf +import filecmp +import glob +import os +import subprocess + +# Version of this package (even if built as a child) +SERD_VERSION = '0.1.0' + +# Library version (UNIX style major, minor, micro) +# major increment <=> incompatible changes +# minor increment <=> compatible changes (additions) +# micro increment <=> no interface changes +# Version history: +# 0.0.1 = 1,0,0 +SERD_LIB_VERSION = '1.0.0' + +# Variables for 'waf dist' +APPNAME = 'serd' +VERSION = SERD_VERSION + +# Mandatory variables +top = '.' +out = 'build' + +def options(opt): + autowaf.set_options(opt) + opt.add_option('--no-utils', action='store_true', default=False, dest='no_utils', + help="Do not build command line utilities") + opt.add_option('--test', action='store_true', default=False, dest='build_tests', + help="Build unit tests") + +def configure(conf): + conf.line_just = max(conf.line_just, 59) + autowaf.configure(conf) + autowaf.display_header('Serd Configuration') + + conf.check_tool('compiler_cc') + conf.env.append_value('CFLAGS', '-std=c99') + + autowaf.define(conf, 'SERD_VERSION', SERD_VERSION) + conf.env['BUILD_TESTS'] = Options.options.build_tests + conf.env['BUILD_UTILS'] = not Options.options.no_utils + conf.write_config_header('serd-config.h', remove=False) + print + +def build(bld): + # C Headers + bld.install_files('${INCLUDEDIR}/serd', bld.path.ant_glob('serd/*.h')) + + # Pkgconfig file + autowaf.build_pc(bld, 'SERD', SERD_VERSION, ['REDLAND']) + + lib_source = 'src/reader.c src/namespaces.c src/uri.c' + + # Library + obj = bld(features = 'c cshlib') + obj.export_includes = ['.'] + obj.source = lib_source + obj.includes = ['.', './src'] + obj.name = 'libserd' + obj.target = 'serd' + obj.vnum = SERD_LIB_VERSION + obj.install_path = '${LIBDIR}' + obj.cflags = [ '-fvisibility=hidden', '-DSERD_SHARED', '-DSERD_INTERNAL' ] + + if bld.env['BUILD_TESTS']: + # Static library (for unit test code coverage) + obj = bld(features = 'c cstlib') + obj.source = lib_source + obj.includes = ['.', './src'] + obj.name = 'libserd_static' + obj.target = 'serd_static' + obj.install_path = '' + obj.cflags = [ '-fprofile-arcs', '-ftest-coverage' ] + + # Unit test program + obj = bld(features = 'c cprogram') + obj.source = 'src/serdi.c' + obj.includes = ['.', './src'] + obj.use = 'libserd_static' + obj.linkflags = '-lgcov' + obj.target = 'serdi_static' + obj.install_path = '' + obj.cflags = [ '-fprofile-arcs', '-ftest-coverage' ] + + # Utilities + if bld.env['BUILD_UTILS']: + obj = bld(features = 'c cprogram') + obj.source = 'src/serdi.c' + obj.includes = ['.', './src'] + obj.use = 'libserd' + obj.target = 'serdi' + obj.install_path = '${BINDIR}' + + # Documentation + autowaf.build_dox(bld, 'SERD', SERD_VERSION, top, out) + + bld.add_post_fun(autowaf.run_ldconfig) + +def test(ctx): + try: + os.makedirs('build/tests') + except: + pass + + for i in glob.glob('build/tests/*.*'): + os.remove(i) + + commands = [] + good_tests = glob.glob('tests/test-*.ttl') + good_tests.sort() + for test in good_tests: + base_uri = 'http://www.w3.org/2001/sw/DataAccess/df1/' + test + commands = commands + [ './serdi_static ../%s \'%s\' > %s.out' % (test, base_uri, test) ] + + autowaf.run_tests(ctx, APPNAME, commands, 0) + + Logs.pprint('BOLD', '\nVerifying output') + for test in good_tests: + out_filename = 'build/' + test + '.out' + if not os.access(out_filename, os.F_OK): + Logs.pprint('RED', 'FAIL: %s output is missing' % test) + elif filecmp.cmp(test.replace('.ttl', '.out'), + 'build/' + test + '.out', + False) != 1: + Logs.pprint('RED', 'FAIL: %s output is incorrect' % test) + else: + Logs.pprint('GREEN', 'PASS: %s output is correct' % test) + print + +# commands = [] +# bad_tests = glob.glob('tests/bad-*.ttl') +# bad_tests.sort() +# for test in bad_tests: +# commands = commands + [ './serdi_static ../%s \'http://www.w3.org/2001/sw/DataAccess/df1/%s\' > %s.out' % (test, test, test) ] +# +# autowaf.run_tests(ctx, APPNAME, commands, 1) +# |