summaryrefslogtreecommitdiff
path: root/wscript
diff options
context:
space:
mode:
authorVicent Marti <tanoku@gmail.com>2010-11-21 18:07:28 +0200
committerVicent Marti <tanoku@gmail.com>2010-11-24 00:23:14 +0200
commitd910be2105f82e9ea2949ede91d563847d421c65 (patch)
treebc2aee5469a14f4b8c784abc31c908fda2f725c1 /wscript
parentb2898c4500466e5385102a82e4e686792219c1be (diff)
downloadlibgit2-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--wscript99
1 files changed, 66 insertions, 33 deletions
diff --git a/wscript b/wscript
index 0cc14d413..873bb96c9 100644
--- a/wscript
+++ b/wscript
@@ -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')