aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2018-01-13 19:00:38 +0200
committerGitHub <noreply@github.com>2018-01-13 19:00:38 +0200
commitd6bed2a77df7f7ff4512fd1be6333420d84b71b8 (patch)
treee5be5987b3903e3617973e9a29ded3f8f22c4f9f /docs
parent81100f0695c595f4c0020034284846cea7e8e6aa (diff)
parent27d4a611a54251dfab968e3cb111d8cbd6b88254 (diff)
downloadmeson-d6bed2a77df7f7ff4512fd1be6333420d84b71b8.zip
meson-d6bed2a77df7f7ff4512fd1be6333420d84b71b8.tar.gz
meson-d6bed2a77df7f7ff4512fd1be6333420d84b71b8.tar.bz2
Merge pull request #2764 from mesonbuild/generatorpath
Generator outputs can have path segments
Diffstat (limited to 'docs')
-rw-r--r--docs/markdown/Reference-manual.md13
-rw-r--r--docs/markdown/snippets/gen-subdirs.md21
2 files changed, 31 insertions, 3 deletions
diff --git a/docs/markdown/Reference-manual.md b/docs/markdown/Reference-manual.md
index a231ed4..a3e1ef0 100644
--- a/docs/markdown/Reference-manual.md
+++ b/docs/markdown/Reference-manual.md
@@ -1705,11 +1705,18 @@ This object is returned by [`generator()`](#generator) and contains a
generator that is used to transform files from one type to another by
an executable (e.g. `idl` files into source code and headers).
-* `process(list_of_files)` takes a list of files, causes them to be
- processed and returns an object containing the result which can
+* `process(list_of_files, ...)` takes a list of files, causes them to
+ be processed and returns an object containing the result which can
then, for example, be passed into a build target definition. The
keyword argument `extra_args`, if specified, will be used to replace
- an entry `@EXTRA_ARGS@` in the argument list.
+ an entry `@EXTRA_ARGS@` in the argument list. The keyword argument
+ `preserve_path_from`, if given, specifies that the output files need
+ to maintain their directory structure inside the target temporary
+ directory. The most common value for this is
+ `meson.current_source_dir()`. With this value when a file called
+ `subdir/one.input` is processed it generates a file `<target private
+ directory>/subdir/one.out` as opposed to `<target private
+ directory>/one.out`.
### `subproject` object
diff --git a/docs/markdown/snippets/gen-subdirs.md b/docs/markdown/snippets/gen-subdirs.md
new file mode 100644
index 0000000..fdb5945
--- /dev/null
+++ b/docs/markdown/snippets/gen-subdirs.md
@@ -0,0 +1,21 @@
+## Generator outputs can preserve directory structure
+
+Normally when generating files with a generator, Meson flattens the
+input files so they all go in the same directory. Some code
+generators, such as Protocol Buffers, require that the generated files
+have the same directory layout as the input files used to generate
+them. This can now be achieved like this:
+
+```meson
+g = generator(...) # Compiles protobuf sources
+generated = gen.process('com/mesonbuild/one.proto',
+ 'com/mesonbuild/two.proto',
+ preserve_path_from : meson.current_source_dir())
+
+This would cause the following files to be generated inside the target
+private directory:
+
+ com/mesonbuild/one.pb.h
+ com/mesonbuild/one.pb.cc
+ com/mesonbuild/two.pb.h
+ com/mesonbuild/two.pb.cc