diff options
| author | Vicent Marti <tanoku@gmail.com> | 2010-11-21 18:07:28 +0200 |
|---|---|---|
| committer | Vicent Marti <tanoku@gmail.com> | 2010-11-24 00:23:14 +0200 |
| commit | d910be2105f82e9ea2949ede91d563847d421c65 (patch) | |
| tree | bc2aee5469a14f4b8c784abc31c908fda2f725c1 /wscript | |
| parent | b2898c4500466e5385102a82e4e686792219c1be (diff) | |
| download | libgit2-d910be2105f82e9ea2949ede91d563847d421c65.tar.gz | |
Add separate commands for all possible actions
The build script now supports all the required features
Signed-off-by: Vicent Marti <tanoku@gmail.com>
Diffstat (limited to 'wscript')
| -rw-r--r-- | wscript | 99 |
1 files changed, 66 insertions, 33 deletions
@@ -7,8 +7,8 @@ CFLAGS = ["-g", "-O2", "-Wall", "-Wextra"] def options(opt): opt.load('compiler_c') opt.add_option('--sha1', action='store', default='builtin', - help="Use the builtin SHA1 routines (--sha1=builtin), the\ -PPC optimized version (--sha1=ppc) or the SHA1 functions from OpenSSH (--sha1=openssh)") + help="Use the builtin SHA1 routines (builtin), the \ +PPC optimized version (ppc) or the SHA1 functions from OpenSSH (openssh)") def configure(conf): conf.load('compiler_c') @@ -19,14 +19,22 @@ def configure(conf): conf.env.sha1 = conf.options.sha1 def build(bld): - import sys - libs = { 'static' : 'cstlib', 'shared' : 'cshlib' } + if bld.variant == 'static': + build_library(bld, 'cstlib') + + elif bld.variant == 'shared': + build_library(bld, 'cshlib') + + elif bld.variant == 'tests': + build_tests(bld) - if bld.variant not in libs: + else: from waflib import Options Options.commands = [bld.cmd + '-shared', bld.cmd + '-static'] + Options.commands - return + +def build_library(bld, lib_str): + import sys directory = bld.path @@ -64,36 +72,30 @@ def build(bld): sources = sources + directory.ant_glob('src/%s/*.c' % os) - bld(features='c ' + libs[bld.variant], + bld(features=['c', lib_str], source=sources, target='git2', includes='src', cflags=flags, defines=defines, - inst_to='${LIBDIR}' + install_path='${LIBDIR}', ) - bld.install_files('${PREFIX}/include/git', directory.ant_glob('src/git/*.h')) - if os == "unix": - bld.install_files('${PREFIX}/lib/pkgconfig', 'libgit2.pc') - + if os == 'unix': + bld(rule="""sed -e 's#@prefix@#$(prefix)#' -e 's#@libdir@#$(libdir)#' < ${SRC} > ${TGT}""", + source='libgit2.pc.in', + target='libgit2.pc', + install_path='${LIBDIR}/pkgconfig', + ) -class _test(BuildContext): - cmd = 'test' - fun = 'test' - -def test(bld): - from waflib import Options - Options.commands = ['build-static', 'build-tests', 'run-tests'] + Options.commands - -class _build_tests(BuildContext): - cmd = 'build-tests' - fun = 'build_tests' - variant = 'tests' + bld.install_files('${PREFIX}/include/git', directory.ant_glob('src/git/*.h')) def build_tests(bld): import os + if bld.is_install: + return + directory = bld.path bld.objects(source=['tests/test_helpers.c', 'tests/test_lib.c'], includes=['src', 'tests'], target='test_helper') @@ -101,9 +103,9 @@ def build_tests(bld): test_name, _ = os.path.splitext(os.path.basename(test_file.abspath())) test_toc_file = directory.make_node('tests/%s.toc' % test_name) - if bld.cmd == 'clean': + if bld.cmd == 'clean-tests': test_toc_file.delete() - else: + elif bld.cmd == 'build-tests': test_toc = bld.cmd_and_log(['grep', 'BEGIN_TEST', test_file.abspath()], quiet=True) test_toc_file.write(test_toc) @@ -113,9 +115,19 @@ def build_tests(bld): includes=['src', 'tests'], defines=['TEST_TOC="%s.toc"' % test_name], stlib=['git2', 'z'], - stlibpath=[directory.abspath(), 'build'], + stlibpath=directory.find_node('build/static/').abspath(), use='test_helper') + +class _test(BuildContext): + cmd = 'test' + fun = 'test' + +def test(bld): + from waflib import Options + Options.commands = ['build-static', 'build-tests', 'run-tests'] + Options.commands + + class _run_tests(Context): cmd = 'run-tests' fun = 'run_tests' @@ -133,10 +145,31 @@ def run_tests(ctx): test_folder.delete() -for var in ('static', 'shared'): - for ctx in (BuildContext, CleanContext, InstallContext, UninstallContext): - name = ctx.__name__.replace('Context', '').lower() - class _genclass(ctx): - cmd = name + '-' + var - variant = var + +CONTEXTS = { + 'build' : BuildContext, + 'clean' : CleanContext, + 'install' : InstallContext, + 'uninstall' : UninstallContext +} + +def build_command(command): + ctx, var = command.split('-') + class _gen_command(CONTEXTS[ctx]): + cmd = command + variant = var + +build_command('build-static') +build_command('build-shared') +build_command('build-tests') + +build_command('clean-static') +build_command('clean-shared') +build_command('clean-tests') + +build_command('install-static') +build_command('install-shared') + +build_command('uninstall-static') +build_command('uninstall-shared') |
