diff options
author | David Robillard <d@drobilla.net> | 2011-09-05 04:31:38 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2011-09-05 04:31:38 +0000 |
commit | a54b3fcd7b73411f9decc82ebf7ddb906e13052b (patch) | |
tree | 2dd1094bcfd34e1ed57f9010f594e81e550c5cbc /wscript | |
download | zix-a54b3fcd7b73411f9decc82ebf7ddb906e13052b.tar.gz zix-a54b3fcd7b73411f9decc82ebf7ddb906e13052b.tar.bz2 zix-a54b3fcd7b73411f9decc82ebf7ddb906e13052b.zip |
Initial import.
git-svn-id: http://svn.drobilla.net/zix/trunk@1 df6676b4-ccc9-40e5-b5d6-7c4628a128e3
Diffstat (limited to 'wscript')
-rw-r--r-- | wscript | 143 |
1 files changed, 143 insertions, 0 deletions
@@ -0,0 +1,143 @@ +#!/usr/bin/env python +import filecmp +import glob +import os +import shutil +import subprocess + +from waflib.extras import autowaf as autowaf +import waflib.Logs as Logs, waflib.Options as Options + +# Version of this package (even if built as a child) +ZIX_VERSION = '0.0.2' + +# Library version (UNIX style major, minor, micro) +# major increment <=> incompatible changes +# minor increment <=> compatible changes (additions) +# micro increment <=> no interface changes +# Zix uses the same version number for both library and package +ZIX_LIB_VERSION = ZIX_VERSION + +# Variables for 'waf dist' +APPNAME = 'zix' +VERSION = ZIX_VERSION + +# Mandatory variables +top = '.' +out = 'build' + +def options(opt): + autowaf.set_options(opt) + opt.load('compiler_c') + opt.add_option('--test', action='store_true', default=False, dest='build_tests', + help="Build unit tests") + opt.add_option('--bench', action='store_true', default=False, dest='build_bench', + help="Build benchmarks") + +def configure(conf): + conf.line_just = max(conf.line_just, 59) + autowaf.configure(conf) + autowaf.display_header('Zix Configuration') + + conf.load('compiler_c') + conf.env.append_value('CFLAGS', '-std=c99') + + autowaf.check_pkg(conf, 'glib-2.0', uselib_store='GLIB', + atleast_version='2.0.0', mandatory=False) + + conf.env['BUILD_TESTS'] = Options.options.build_tests + if conf.is_defined('HAVE_GLIB'): + conf.env['BUILD_BENCH'] = Options.options.build_bench + + autowaf.define(conf, 'ZIX_VERSION', ZIX_VERSION) + conf.write_config_header('zix-config.h', remove=False) + + autowaf.display_msg(conf, "Unit tests", str(conf.env['BUILD_TESTS'])) + autowaf.display_msg(conf, "Benchmarks", str(conf.env['BUILD_BENCHx'])) + print('') + +def build(bld): + # C Headers + bld.install_files('${INCLUDEDIR}/zix', bld.path.ant_glob('zix/*.h')) + + # Pkgconfig file + autowaf.build_pc(bld, 'ZIX', ZIX_VERSION, []) + + lib_source = ''' + src/tree.c + src/strindex.c + ''' + + # Library + obj = bld(features = 'c cshlib') + obj.export_includes = ['.'] + obj.source = lib_source + obj.includes = ['.', './src'] + obj.name = 'libzix' + obj.target = 'zix' + obj.vnum = ZIX_LIB_VERSION + obj.install_path = '${LIBDIR}' + obj.cflags = [ '-fvisibility=hidden', '-DZIX_SHARED', '-DZIX_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 = 'libzix_static' + obj.target = 'zix_static' + obj.install_path = '' + obj.cflags = [ '-fprofile-arcs', '-ftest-coverage' ] + + # Unit test programs + for i in ['tree_test']: + obj = bld(features = 'c cprogram') + obj.source = 'test/%s.c' % i + obj.includes = ['.'] + obj.use = 'libzix_static' + obj.linkflags = '-lgcov' + obj.target = 'test/%s' % i + obj.install_path = '' + obj.cflags = [ '-fprofile-arcs', '-ftest-coverage' ] + + if bld.env['BUILD_BENCH']: + # Benchmark programs + for i in ['tree_bench']: + obj = bld(features = 'c cprogram') + obj.source = 'test/%s.c' % i + obj.includes = ['.'] + obj.use = 'libzix' + obj.uselib = 'GLIB' + obj.linkflags = '-lrt' + obj.target = 'test/%s' % i + obj.install_path = '' + + # Documentation + #autowaf.build_dox(bld, 'ZIX', ZIX_VERSION, top, out) + + # Man page + #bld.install_files('${MANDIR}/man1', 'doc/zixi.1') + + bld.add_post_fun(autowaf.run_ldconfig) + +def lint(ctx): + subprocess.call('cpplint.py --filter=-whitespace/tab,-whitespace/braces,-build/header_guard,-readability/casting,-readability/todo src/* zix/*', shell=True) + +def fix_docs(ctx): + try: + os.chdir('build/doc/html') + os.system("sed -i 's/ZIX_API //' group__zix.html") + os.system("sed -i 's/ZIX_DEPRECATED //' group__zix.html") + os.remove('index.html') + os.symlink('group__zix.html', + 'index.html') + except Exception as e: + Logs.error("Failed to fix up Doxygen documentation (%s)\n" % e) + +def upload_docs(ctx): + os.system("rsync -avz --delete -e ssh build/doc/html/* drobilla@drobilla.net:~/drobilla.net/docs/zix") + +def test(ctx): + autowaf.pre_test(ctx, APPNAME) + autowaf.run_tests(ctx, APPNAME, ['test/tree_test'], dirs=['./src','./test']) + autowaf.post_test(ctx, APPNAME) |