diff --git a/environment.py b/environment.py index 49c3a3e02..d6ad40317 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 e71f76a64..13d3c8ff3 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 000000000..09c302c69 --- /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 000000000..354499acd --- /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 000000000..0314ff17b --- /dev/null +++ b/test cases/22 header in file list/prog.c @@ -0,0 +1 @@ +int main(int argc, char **argv) { return 0; }