diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-01-26 01:44:56 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-01-26 01:44:56 +0200 |
commit | b97f43b9b7777a83dd44b4a16b65aeafda996aba (patch) | |
tree | c0c42c3f541b62222599534514de47c639268482 | |
parent | 2af66e54781c2592f22c99b1d72d35a7b758a32f (diff) | |
download | meson-b97f43b9b7777a83dd44b4a16b65aeafda996aba.zip meson-b97f43b9b7777a83dd44b4a16b65aeafda996aba.tar.gz meson-b97f43b9b7777a83dd44b4a16b65aeafda996aba.tar.bz2 |
Can set global flags.
-rw-r--r-- | build.py | 4 | ||||
-rwxr-xr-x | environment.py | 5 | ||||
-rwxr-xr-x | interpreter.py | 14 | ||||
-rwxr-xr-x | shellgenerator.py | 1 | ||||
-rw-r--r-- | test cases/23 global arg/builder.txt | 11 | ||||
-rw-r--r-- | test cases/23 global arg/prog.c | 7 | ||||
-rw-r--r-- | test cases/23 global arg/prog.cc | 5 |
7 files changed, 47 insertions, 0 deletions
@@ -24,6 +24,7 @@ class Build: self.project = None self.targets = {} self.compilers = [] + self.global_args = {} self.tests = [] self.headers = [] self.man = [] @@ -51,3 +52,6 @@ class Build: def get_configure_files(self): return self.configure_files + + def get_global_flags(self, compiler): + return self.global_args.get(compiler.get_language(), []) diff --git a/environment.py b/environment.py index d6ad403..9938235 100755 --- a/environment.py +++ b/environment.py @@ -30,6 +30,10 @@ class CCompiler(): self.exelist = exelist else: raise TypeError('Unknown argument to CCompiler') + self.language = 'c' + + def get_language(self): + return self.language def get_exelist(self): return self.exelist @@ -82,6 +86,7 @@ class CCompiler(): class CXXCompiler(CCompiler): def __init__(self, exelist): CCompiler.__init__(self, exelist) + self.language = 'c++' def can_compile(self, filename): suffix = filename.split('.')[-1] diff --git a/interpreter.py b/interpreter.py index 13d3c8f..e74030c 100755 --- a/interpreter.py +++ b/interpreter.py @@ -262,6 +262,7 @@ class Interpreter(): 'data' : self.func_data, 'configure_file' : self.func_configure_file, 'include_directories' : self.func_include_directories, + 'add_global_arguments' : self.func_add_global_arguments, } def get_variables(self): @@ -428,6 +429,19 @@ class Interpreter(): i = IncludeDirs(self.subdir, args) return i + def func_add_global_arguments(self, node, args): + for a in args: + if not isinstance(a, str): + raise InvalidArguments('Line %d: Argument %s is not a string.' % (node.lineno(), str(a))) + if len(self.build.get_targets()) > 0: + raise InvalidCode('Line %d: global flags can not be set once any build target is defined.' % node.lineno()) + lang = args[0].lower() + switches = args[1:] + if lang in self.build.global_args: + self.build.global_args[lang] += switches + else: + self.build.global_args[lang] = switches + def flatten(self, args): result = [] for a in args: diff --git a/shellgenerator.py b/shellgenerator.py index 5c7ce2e..ad375b2 100755 --- a/shellgenerator.py +++ b/shellgenerator.py @@ -209,6 +209,7 @@ echo Run compile.sh before this or bad things will happen. def generate_basic_compiler_arguments(self, target, compiler): commands = [] commands += compiler.get_exelist() + commands += self.build.get_global_flags(compiler) commands += compiler.get_debug_flags() commands += compiler.get_std_warn_flags() commands += compiler.get_compile_only_flags() diff --git a/test cases/23 global arg/builder.txt b/test cases/23 global arg/builder.txt new file mode 100644 index 0000000..a768864 --- /dev/null +++ b/test cases/23 global arg/builder.txt @@ -0,0 +1,11 @@ +project('global arg test', 'c++', 'c') + +add_global_arguments('c', '-Werror', '-DMYTHING') +add_global_arguments('c++', '-Werror', '-std=c++11') + +exe1 = executable('prog', 'prog.c') +exe2 = executable('prog2', 'prog.cc') + +add_test('prog1', exe1) +add_test('prog2', exe2) + diff --git a/test cases/23 global arg/prog.c b/test cases/23 global arg/prog.c new file mode 100644 index 0000000..5992d15 --- /dev/null +++ b/test cases/23 global arg/prog.c @@ -0,0 +1,7 @@ +#ifndef MYTHING +#error "Global argument not set" +#endif + +int main(int argc, char **argv) { + return 0; +} diff --git a/test cases/23 global arg/prog.cc b/test cases/23 global arg/prog.cc new file mode 100644 index 0000000..fb9590e --- /dev/null +++ b/test cases/23 global arg/prog.cc @@ -0,0 +1,5 @@ +#include<unordered_map> + +int main(int argc, char **argv) { + return 0; +} |