Added test for external deps and fixed comments at the same time.
This commit is contained in:
parent
2772a4cbdf
commit
aad3a7a76e
|
@ -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…
Reference in New Issue