From 2af66e54781c2592f22c99b1d72d35a7b758a32f Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Sat, 26 Jan 2013 01:12:39 +0200 Subject: Filter header files from built sources. --- environment.py | 6 ++++++ interpreter.py | 8 ++++++-- test cases/22 header in file list/builder.txt | 4 ++++ test cases/22 header in file list/header.h | 1 + test cases/22 header in file list/prog.c | 1 + 5 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 test cases/22 header in file list/builder.txt create mode 100644 test cases/22 header in file list/header.h create mode 100644 test cases/22 header in file list/prog.c diff --git a/environment.py b/environment.py index 49c3a3e..d6ad403 100755 --- a/environment.py +++ b/environment.py @@ -152,6 +152,8 @@ class ArLinker(): def get_output_flags(self): return [] +header_suffixes = ['h', 'hh', 'hpp', 'hxx', 'H'] + class Environment(): def __init__(self, source_dir, build_dir, options): self.source_dir = source_dir @@ -176,6 +178,10 @@ class Environment(): if evar in os.environ: return os.environ[evar].split() return self.default_c + + def is_header(self, fname): + suffix = fname.split('.')[-1] + return suffix in header_suffixes def detect_c_compiler(self): exelist = self.get_c_compiler_exelist() diff --git a/interpreter.py b/interpreter.py index e71f76a..13d3c8f 100755 --- a/interpreter.py +++ b/interpreter.py @@ -442,8 +442,12 @@ class Interpreter(): for a in args: if not isinstance(a, str): raise InvalidArguments('Line %d: Argument %s is not a string.' % (node.lineno(), str(a))) - name= args[0] - sources = args[1:] + name = args[0] + sources = [] + for s in args[1:]: + print(s) + if not self.environment.is_header(s): + sources.append(s) if len(sources) == 0: raise InvalidArguments('Line %d: target has no source files.' % node.lineno()) if name in self.build.targets: diff --git a/test cases/22 header in file list/builder.txt b/test cases/22 header in file list/builder.txt new file mode 100644 index 0000000..09c302c --- /dev/null +++ b/test cases/22 header in file list/builder.txt @@ -0,0 +1,4 @@ +project('header in file list', 'c') + +exe = executable('prog', 'prog.c', 'header.h') +add_test('basic', exe) diff --git a/test cases/22 header in file list/header.h b/test cases/22 header in file list/header.h new file mode 100644 index 0000000..354499a --- /dev/null +++ b/test cases/22 header in file list/header.h @@ -0,0 +1 @@ +#include diff --git a/test cases/22 header in file list/prog.c b/test cases/22 header in file list/prog.c new file mode 100644 index 0000000..0314ff1 --- /dev/null +++ b/test cases/22 header in file list/prog.c @@ -0,0 +1 @@ +int main(int argc, char **argv) { return 0; } -- cgit v1.1