diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-02-10 13:56:29 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-02-10 13:56:29 +0200 |
commit | aad3a7a76ea9c38b4f954fe9768174ac6065af35 (patch) | |
tree | 367630942ce0d0fefcbbe42da5d69ec9eaff90e8 | |
parent | 2772a4cbdf72f11146cff2711feb2fe94cc35f6a (diff) | |
download | meson-aad3a7a76ea9c38b4f954fe9768174ac6065af35.zip meson-aad3a7a76ea9c38b4f954fe9768174ac6065af35.tar.gz meson-aad3a7a76ea9c38b4f954fe9768174ac6065af35.tar.bz2 |
Added test for external deps and fixed comments at the same time.
-rwxr-xr-x | bparser.py | 2 | ||||
-rwxr-xr-x | environment.py | 2 | ||||
-rwxr-xr-x | generators.py | 6 | ||||
-rwxr-xr-x | interpreter.py | 21 | ||||
-rw-r--r-- | test cases/29 external dep/builder.txt | 8 | ||||
-rw-r--r-- | test cases/29 external dep/prog.c | 8 |
6 files changed, 33 insertions, 14 deletions
@@ -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 = ':' diff --git a/environment.py b/environment.py index efd4949..699274a 100755 --- a/environment.py +++ b/environment.py @@ -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) diff --git a/generators.py b/generators.py index f23ec20..edc3176 100755 --- a/generators.py +++ b/generators.py @@ -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()) diff --git a/interpreter.py b/interpreter.py index 6454dd4..c353dbe 100755 --- a/interpreter.py +++ b/interpreter.py @@ -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): diff --git a/test cases/29 external dep/builder.txt b/test cases/29 external dep/builder.txt new file mode 100644 index 0000000..6f60698 --- /dev/null +++ b/test cases/29 external dep/builder.txt @@ -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) diff --git a/test cases/29 external dep/prog.c b/test cases/29 external dep/prog.c new file mode 100644 index 0000000..cea986d --- /dev/null +++ b/test cases/29 external dep/prog.c @@ -0,0 +1,8 @@ +#include<zlib.h> + +int main(int argc, char **argv) { + void * something = deflate; + if(something != 0) + return 0; + return 1; +} |