aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2014-04-25 22:13:15 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2014-04-25 22:13:15 +0300
commit77e9a245893909e33c753f472e8cee13174921c2 (patch)
treee1f9d25b997eca289f8350239f8cf2ac31fff376
parentc06c9ea83e7584539e1a09ba3acd8035444d22c9 (diff)
downloadmeson-77e9a245893909e33c753f472e8cee13174921c2.zip
meson-77e9a245893909e33c753f472e8cee13174921c2.tar.gz
meson-77e9a245893909e33c753f472e8cee13174921c2.tar.bz2
Can specify extra files that show up in IDEs as parts of a target.
-rw-r--r--build.py15
-rwxr-xr-xmesonintrospect.py8
-rw-r--r--test cases/common/2 cpp/meson.build2
-rw-r--r--test cases/common/2 cpp/something.txt1
-rw-r--r--test cases/failing/9 missing extra file/meson.build3
-rw-r--r--test cases/failing/9 missing extra file/prog.c3
6 files changed, 26 insertions, 6 deletions
diff --git a/build.py b/build.py
index 3e7c251..2608582 100644
--- a/build.py
+++ b/build.py
@@ -125,9 +125,10 @@ class BuildTarget():
self.pch = {}
self.extra_args = {}
self.generated = []
+ self.extra_files = []
self.process_sourcelist(sources)
self.process_objectlist(objects)
- self.process_kwargs(kwargs)
+ self.process_kwargs(kwargs, environment)
if len(self.sources) == 0 and len(self.generated) == 0:
raise InvalidArguments('Build target %s has no sources.' % name)
@@ -205,7 +206,7 @@ class BuildTarget():
def get_custom_install_dir(self):
return self.custom_install_dir
- def process_kwargs(self, kwargs):
+ def process_kwargs(self, kwargs, environment):
self.copy_kwargs(kwargs)
kwargs.get('modules', [])
self.need_install = kwargs.get('install', self.need_install)
@@ -272,6 +273,16 @@ class BuildTarget():
raise InvalidArguments('Argument gui_app must be boolean.')
elif 'gui_app' in kwargs:
raise InvalidArguments('Argument gui_app can only be used on executables.')
+ extra_files = kwargs.get('extra_files', [])
+ if isinstance(extra_files, str):
+ extra_files = [extra_files]
+ for i in extra_files:
+ if not isinstance(i, str):
+ raise InvalidArguments('Arguments to extra_files must be strings.')
+ trial = os.path.join(environment.get_source_dir(), self.subdir, i)
+ if not(os.path.isfile(trial)):
+ raise InvalidArguments('Tried to add non-existing extra file %s.' % i)
+ self.extra_files = extra_files
def get_subdir(self):
return self.subdir
diff --git a/mesonintrospect.py b/mesonintrospect.py
index 443eb1a..86d65b1 100755
--- a/mesonintrospect.py
+++ b/mesonintrospect.py
@@ -54,12 +54,14 @@ def list_targets(coredata, builddata):
def list_target_files(target_name, coredata, builddata):
try:
- sources = builddata.targets[target_name].sources
- subdir = builddata.targets[target_name].subdir
+ t = builddata.targets[target_name]
+ sources = t.sources + t.extra_files
+ subdir = t.subdir
except KeyError:
print("Unknown target %s." % target_name)
sys.exit(1)
- print(json.dumps([os.path.join(subdir, i) for i in sources]))
+ sources = [os.path.join(subdir, i) for i in sources]
+ print(json.dumps(sources))
if __name__ == '__main__':
(options, args) = parser.parse_args()
diff --git a/test cases/common/2 cpp/meson.build b/test cases/common/2 cpp/meson.build
index a2d89a3..9c6f71a 100644
--- a/test cases/common/2 cpp/meson.build
+++ b/test cases/common/2 cpp/meson.build
@@ -1,3 +1,3 @@
project('c++ test', 'cpp')
-exe = executable('trivialprog', 'trivial.cc')
+exe = executable('trivialprog', 'trivial.cc', extra_files : 'something.txt')
test('runtest', exe)
diff --git a/test cases/common/2 cpp/something.txt b/test cases/common/2 cpp/something.txt
new file mode 100644
index 0000000..9f6cc91
--- /dev/null
+++ b/test cases/common/2 cpp/something.txt
@@ -0,0 +1 @@
+This file is only here so it shows up in IDEs as part of this target.
diff --git a/test cases/failing/9 missing extra file/meson.build b/test cases/failing/9 missing extra file/meson.build
new file mode 100644
index 0000000..725bec8
--- /dev/null
+++ b/test cases/failing/9 missing extra file/meson.build
@@ -0,0 +1,3 @@
+project('missing extra file', 'c')
+
+executable('myprog', 'prog.c', extra_files : 'missing.txt')
diff --git a/test cases/failing/9 missing extra file/prog.c b/test cases/failing/9 missing extra file/prog.c
new file mode 100644
index 0000000..11b7fad
--- /dev/null
+++ b/test cases/failing/9 missing extra file/prog.c
@@ -0,0 +1,3 @@
+int main(int argc, char **argv) {
+ return 0;
+}