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_RBRACKET = '\]'
|
||||||
t_LBRACE = '\{'
|
t_LBRACE = '\{'
|
||||||
t_RBRACE = '\}'
|
t_RBRACE = '\}'
|
||||||
t_COMMENT = '\#[^\n]*'
|
t_ignore_COMMENT = '\\#.*?(?=\\n)'
|
||||||
t_COMMA = ','
|
t_COMMA = ','
|
||||||
t_DOT = '\.'
|
t_DOT = '\.'
|
||||||
t_COLON = ':'
|
t_COLON = ':'
|
||||||
|
|
|
@ -337,7 +337,7 @@ class PkgConfigDependency(Dependency):
|
||||||
PkgConfigDependency.pkgconfig_found = True
|
PkgConfigDependency.pkgconfig_found = True
|
||||||
|
|
||||||
# Fixme, move to environment.
|
# 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.
|
# Add detectors for non-pkg-config deps (e.g. Boost) etc here.
|
||||||
return PkgConfigDependency(name)
|
return PkgConfigDependency(name)
|
||||||
|
|
||||||
|
|
|
@ -596,6 +596,9 @@ echo Run compile.sh before this or bad things will happen.
|
||||||
linker = self.build.compilers[0] # Fixme.
|
linker = self.build.compilers[0] # Fixme.
|
||||||
commands = []
|
commands = []
|
||||||
commands += linker.get_exelist()
|
commands += linker.get_exelist()
|
||||||
|
commands += linker.get_output_flags()
|
||||||
|
commands.append(outname)
|
||||||
|
commands += obj_list
|
||||||
if isinstance(target, interpreter.Executable):
|
if isinstance(target, interpreter.Executable):
|
||||||
commands += linker.get_std_exe_link_flags()
|
commands += linker.get_std_exe_link_flags()
|
||||||
elif isinstance(target, interpreter.SharedLibrary):
|
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.')
|
raise RuntimeError('Unknown build target type.')
|
||||||
for dep in target.get_external_deps():
|
for dep in target.get_external_deps():
|
||||||
commands += dep.get_link_flags()
|
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())
|
commands += self.build_target_link_arguments(target.get_dependencies())
|
||||||
quoted = shell_quote(commands)
|
quoted = shell_quote(commands)
|
||||||
outfile.write('\necho Linking \\"%s\\".\n' % target.get_basename())
|
outfile.write('\necho Linking \\"%s\\".\n' % target.get_basename())
|
||||||
|
|
|
@ -156,8 +156,6 @@ class BuildTarget(InterpreterObject):
|
||||||
self.sources = sources
|
self.sources = sources
|
||||||
self.external_deps = []
|
self.external_deps = []
|
||||||
self.include_dirs = []
|
self.include_dirs = []
|
||||||
self.methods.update({'add_dep': self.add_dep_method,
|
|
||||||
})
|
|
||||||
self.link_targets = []
|
self.link_targets = []
|
||||||
self.filename = 'no_name'
|
self.filename = 'no_name'
|
||||||
self.need_install = False
|
self.need_install = False
|
||||||
|
@ -192,6 +190,10 @@ class BuildTarget(InterpreterObject):
|
||||||
if not isinstance(inclist, list):
|
if not isinstance(inclist, list):
|
||||||
inclist = [inclist]
|
inclist = [inclist]
|
||||||
self.add_include_dirs(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):
|
def get_subdir(self):
|
||||||
return self.subdir
|
return self.subdir
|
||||||
|
@ -226,15 +228,16 @@ class BuildTarget(InterpreterObject):
|
||||||
def get_include_dirs(self):
|
def get_include_dirs(self):
|
||||||
return self.include_dirs
|
return self.include_dirs
|
||||||
|
|
||||||
def add_external_dep(self, dep):
|
def add_external_deps(self, deps):
|
||||||
if not isinstance(dep, environment.PkgConfigDependency):
|
for dep in deps:
|
||||||
|
if not isinstance(dep, environment.Dependency):
|
||||||
raise InvalidArguments('Argument is not an external dependency')
|
raise InvalidArguments('Argument is not an external dependency')
|
||||||
self.external_deps.append(dep)
|
self.external_deps.append(dep)
|
||||||
|
|
||||||
def get_external_deps(self):
|
def get_external_deps(self):
|
||||||
return self.external_deps
|
return self.external_deps
|
||||||
|
|
||||||
def add_dep_method(self, args):
|
def add_dep(self, args):
|
||||||
[self.add_external_dep(dep) for dep in args]
|
[self.add_external_dep(dep) for dep in args]
|
||||||
|
|
||||||
def link(self, target):
|
def link(self, target):
|
||||||
|
@ -464,10 +467,10 @@ class Interpreter():
|
||||||
comp.sanity_check(self.environment.get_scratch_dir())
|
comp.sanity_check(self.environment.get_scratch_dir())
|
||||||
self.build.compilers.append(comp)
|
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])
|
self.validate_arguments(args, 1, [str])
|
||||||
name = args[0]
|
name = args[0]
|
||||||
dep = environment.find_external_dependency(name)
|
dep = environment.find_external_dependency(name, kwargs)
|
||||||
return dep
|
return dep
|
||||||
|
|
||||||
def func_executable(self, node, args, kwargs):
|
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