Added test for external deps and fixed comments at the same time.

pull/15/head
Jussi Pakkanen 12 years ago
parent 2772a4cbdf
commit aad3a7a76e
  1. 2
      bparser.py
  2. 2
      environment.py
  3. 6
      generators.py
  4. 21
      interpreter.py
  5. 8
      test cases/29 external dep/builder.txt
  6. 8
      test cases/29 external dep/prog.c

@ -54,7 +54,7 @@ t_LBRACKET = '\['
t_RBRACKET = '\]'
t_LBRACE = '\{'
t_RBRACE = '\}'
t_COMMENT = '\#[^\n]*'
t_ignore_COMMENT = '\\#.*?(?=\\n)'
t_COMMA = ','
t_DOT = '\.'
t_COLON = ':'

@ -337,7 +337,7 @@ class PkgConfigDependency(Dependency):
PkgConfigDependency.pkgconfig_found = True
# Fixme, move to environment.
def find_external_dependency(name):
def find_external_dependency(name, kwargs):
# Add detectors for non-pkg-config deps (e.g. Boost) etc here.
return PkgConfigDependency(name)

@ -596,6 +596,9 @@ echo Run compile.sh before this or bad things will happen.
linker = self.build.compilers[0] # Fixme.
commands = []
commands += linker.get_exelist()
commands += linker.get_output_flags()
commands.append(outname)
commands += obj_list
if isinstance(target, interpreter.Executable):
commands += linker.get_std_exe_link_flags()
elif isinstance(target, interpreter.SharedLibrary):
@ -607,9 +610,6 @@ echo Run compile.sh before this or bad things will happen.
raise RuntimeError('Unknown build target type.')
for dep in target.get_external_deps():
commands += dep.get_link_flags()
commands += linker.get_output_flags()
commands.append(outname)
commands += obj_list
commands += self.build_target_link_arguments(target.get_dependencies())
quoted = shell_quote(commands)
outfile.write('\necho Linking \\"%s\\".\n' % target.get_basename())

@ -156,8 +156,6 @@ class BuildTarget(InterpreterObject):
self.sources = sources
self.external_deps = []
self.include_dirs = []
self.methods.update({'add_dep': self.add_dep_method,
})
self.link_targets = []
self.filename = 'no_name'
self.need_install = False
@ -192,6 +190,10 @@ class BuildTarget(InterpreterObject):
if not isinstance(inclist, list):
inclist = [inclist]
self.add_include_dirs(inclist)
deplist = kwargs.get('deps', [])
if not isinstance(deplist, list):
deplist = [deplist]
self.add_external_deps(deplist)
def get_subdir(self):
return self.subdir
@ -226,15 +228,16 @@ class BuildTarget(InterpreterObject):
def get_include_dirs(self):
return self.include_dirs
def add_external_dep(self, dep):
if not isinstance(dep, environment.PkgConfigDependency):
raise InvalidArguments('Argument is not an external dependency')
self.external_deps.append(dep)
def add_external_deps(self, deps):
for dep in deps:
if not isinstance(dep, environment.Dependency):
raise InvalidArguments('Argument is not an external dependency')
self.external_deps.append(dep)
def get_external_deps(self):
return self.external_deps
def add_dep_method(self, args):
def add_dep(self, args):
[self.add_external_dep(dep) for dep in args]
def link(self, target):
@ -464,10 +467,10 @@ class Interpreter():
comp.sanity_check(self.environment.get_scratch_dir())
self.build.compilers.append(comp)
def func_find_dep(self, node, args):
def func_find_dep(self, node, args, kwargs):
self.validate_arguments(args, 1, [str])
name = args[0]
dep = environment.find_external_dependency(name)
dep = environment.find_external_dependency(name, kwargs)
return dep
def func_executable(self, node, args, kwargs):

@ -0,0 +1,8 @@
project('external dependency', 'c')
# Zlib is probably on all dev machines.
dep = find_dep('zlib', required : true)
exe = executable('zlibprog', 'prog.c', deps : dep)
add_test('zlibtest', exe)

@ -0,0 +1,8 @@
#include<zlib.h>
int main(int argc, char **argv) {
void * something = deflate;
if(something != 0)
return 0;
return 1;
}
Loading…
Cancel
Save