aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-01-26 01:12:39 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-01-26 01:12:39 +0200
commit2af66e54781c2592f22c99b1d72d35a7b758a32f (patch)
tree4cab11b2ea1b8908c68ac0989fe1a4f7acd6ee67
parent5c0d1cc7c02ac82258f2cac8c8e06a8a7324e724 (diff)
downloadmeson-2af66e54781c2592f22c99b1d72d35a7b758a32f.zip
meson-2af66e54781c2592f22c99b1d72d35a7b758a32f.tar.gz
meson-2af66e54781c2592f22c99b1d72d35a7b758a32f.tar.bz2
Filter header files from built sources.
-rwxr-xr-xenvironment.py6
-rwxr-xr-xinterpreter.py8
-rw-r--r--test cases/22 header in file list/builder.txt4
-rw-r--r--test cases/22 header in file list/header.h1
-rw-r--r--test cases/22 header in file list/prog.c1
5 files changed, 18 insertions, 2 deletions
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<stdio.h>
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; }