aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/markdown/Compiler-properties.md23
-rw-r--r--docs/markdown/D.md89
-rw-r--r--docs/markdown/Getting-meson.md2
-rw-r--r--docs/markdown/Gnome-module.md4
-rw-r--r--docs/markdown/Pkgconfig-module.md2
-rw-r--r--docs/markdown/Reference-manual.md18
-rw-r--r--docs/markdown/Reference-tables.md60
-rw-r--r--docs/markdown/Videos.md8
-rw-r--r--docs/markdown/index.md6
-rw-r--r--docs/sitemap.txt2
10 files changed, 179 insertions, 35 deletions
diff --git a/docs/markdown/Compiler-properties.md b/docs/markdown/Compiler-properties.md
index 5978b5d..06efff3 100644
--- a/docs/markdown/Compiler-properties.md
+++ b/docs/markdown/Compiler-properties.md
@@ -29,26 +29,9 @@ Compiler id
==
The compiler object has a method called `get_id`, which returns a
-lower case string describing the "family" of the compiler. It has one
-of the following values.
-
-| Value | Compiler family |
-| ----- | ---------------- |
-| gcc | The GNU Compiler Collection |
-| clang | The Clang compiler |
-| msvc | Microsoft Visual Studio |
-| intel | Intel compiler |
-| llvm | LLVM-based compiler (Swift, D) |
-| mono | Xamarin C# compiler |
-| dmd | D lang reference compiler |
-| rustc | Rust compiler |
-| valac | Vala compiler |
-| pathscale | The Pathscale Fortran compiler |
-| pgi | The Portland Fortran compiler |
-| sun | Sun Fortran compiler |
-| g95 | The G95 Fortran compiler |
-| open64 | The Open64 Fortran Compiler |
-| nagfor | The NAG Fortran compiler |
+lower case string describing the "family" of the compiler. See
+[reference tables](Reference-tables.md) for a list of supported
+compiler ids.
Does code compile?
==
diff --git a/docs/markdown/D.md b/docs/markdown/D.md
new file mode 100644
index 0000000..7b0d485
--- /dev/null
+++ b/docs/markdown/D.md
@@ -0,0 +1,89 @@
+---
+title: D
+short-description: Compiling D sources
+...
+
+# Compiling D applications
+
+Meson has support for compiling D programs. A minimal `meson.build` file for D looks like this:
+
+```meson
+project('myapp', 'd')
+
+executable('myapp', 'app.d')
+```
+
+## Compiling different versions
+
+If you are using the [version()](https://dlang.org/spec/version.html) feature for conditional compilation, you can use it using the `d_module_versions`
+target property:
+```meson
+project('myapp', 'd')
+executable('myapp', 'app.d', d_module_versions: ['Demo', 'FeatureA'])
+```
+
+## Using embedded unittests
+
+If you are using embedded [unittest functions](https://dlang.org/spec/unittest.html), your source code needs to be compiled twice, once in regular
+mode, and once with unittests active. This is done by setting the `d_unittest` target property to `true`.
+Meson will only ever pass the respective compiler's `-unittest` flag, and never have the compiler generate an empty main function.
+If you need that feature in a portable way, create an empty `main()` function for unittests yourself, since the GNU D compiler
+does not have this feature.
+
+This is an example for using D unittests with Meson:
+```meson
+project('myapp_tested', 'd')
+
+myapp_src = ['app.d', 'alpha.d', 'beta.d']
+executable('myapp', myapp_src)
+
+test_exe = executable('myapp_test', myapp_src, d_unittest: true)
+test('myapptest', test_exe)
+```
+
+# Compiling D libraries and installing them
+
+Building D libraries is a straightforward process, not different from how C libraries are built in Meson. You should generate a pkg-config file
+and install it, in order to make other software on the system find the dependency once it is installed.
+
+This is an example on how to build a D shared library:
+```meson
+project('mylib', 'd', version: '1.2.0')
+
+project_soversion = 0
+glib_dep = dependency('glib-2.0')
+
+my_lib = library('mylib',
+ ['src/mylib/libfunctions.d'],
+ dependencies: [glib_dep],
+ install: true,
+ version: meson.project_version(),
+ soversion: project_soversion,
+ d_module_versions: ['FeatureA', 'featureB']
+)
+pkgc.generate(name: 'mylib',
+ libraries: my_lib,
+ subdirs: 'd/mylib',
+ version: meson.project_version(),
+ description: 'A simple example D library.',
+ d_module_versions: ['FeatureA']
+)
+install_subdir('src/mylib/', install_dir: 'include/d/mylib/')
+```
+
+It is important to make the D sources install in a subdirectory in the include path, in this case `/usr/include/d/mylib/mylib`.
+All D compilers include the `/usr/include/d` directory by default, and if your library would be installed into `/usr/include/d/mylib`, there
+is a high chance that, when you compile your project again on a machine where you installed it, the compiler will prefer the old installed include over
+the new version in the source tree, leading to very confusing errors.
+
+This is an example of how to use the D library we just built and installed in an application:
+```meson
+project('myapp', 'd')
+
+mylib_dep = dependency('mylib', version: '>= 1.2.0')
+myapp_src = ['app.d', 'alpha.d', 'beta.d']
+executable('myapp', myapp_src, dependencies: [mylib_dep])
+```
+
+Please keep in mind that the library and executable would both need to be built with the exact same D compiler and D compiler version. The D ABI is not
+stable across compilers and their versions, and mixing compilers will lead to problems.
diff --git a/docs/markdown/Getting-meson.md b/docs/markdown/Getting-meson.md
index d654ff3..8664d61 100644
--- a/docs/markdown/Getting-meson.md
+++ b/docs/markdown/Getting-meson.md
@@ -5,7 +5,7 @@
Meson releases can be downloaded from the [GitHub release page].
Meson is also available in the [Python Package Index] and can be
-installed with <tt>pip3 install meson</tt>.
+installed with `pip3 install meson`.
The newest development code can be obtained directly from [Git]
diff --git a/docs/markdown/Gnome-module.md b/docs/markdown/Gnome-module.md
index 3672761..99a9c8e 100644
--- a/docs/markdown/Gnome-module.md
+++ b/docs/markdown/Gnome-module.md
@@ -226,6 +226,7 @@ files and the second specifies the XML file name.
* `namespace`: namespace of the interface
* `object_manager`: *(Added 0.40.0)* if true generates object manager code
* `annotations`: *(Added 0.43.0)* list of lists of 3 strings for the annotation for `'ELEMENT', 'KEY', 'VALUE'`
+* `docbook`: *(Added 0.43.0)* prefix to generate `'PREFIX'-NAME.xml` docbooks
Returns an opaque object containing the source files. Add it to a top
level target's source list.
@@ -241,7 +242,8 @@ gdbus_src = gnome.gdbus_codegen('example-interface', 'com.example.Sample.xml',
namespace : 'Sample',
annotations : [
['com.example.Hello()', 'org.freedesktop.DBus.Deprecated', 'true']
- ]
+ ],
+ docbook : 'example-interface-doc'
)
```
diff --git a/docs/markdown/Pkgconfig-module.md b/docs/markdown/Pkgconfig-module.md
index 5a660fd..7f767f1 100644
--- a/docs/markdown/Pkgconfig-module.md
+++ b/docs/markdown/Pkgconfig-module.md
@@ -41,3 +41,5 @@ keyword arguments.
e.g. `datadir=${prefix}/share`. The names `prefix`, `libdir` and
`installdir` are reserved and may not be used.
- `version` a string describing the version of this library
+- `d_module_versions` a list of module version flags used when compiling
+ D sources referred to by this pkg-config file
diff --git a/docs/markdown/Reference-manual.md b/docs/markdown/Reference-manual.md
index 34b473d..2025ab5 100644
--- a/docs/markdown/Reference-manual.md
+++ b/docs/markdown/Reference-manual.md
@@ -424,6 +424,10 @@ be passed to [shared and static libraries](#library).
- `override_options` takes an array of strings in the same format as
`project`'s `default_options` overriding the values of these options
for this target only, since 0.40.0
+- `d_import_dirs` list of directories to look in for string imports used
+ in the D programmling language
+- `d_unittest`, when set to true, the D modules are compiled in debug mode
+- `d_module_versions` list of module versions set when compiling D sources
The list of `sources`, `objects`, and `dependencies` is always
flattened, which means you can freely nest and add lists while
@@ -835,7 +839,7 @@ This function prints its argument to stdout.
The first argument to this function must be a string defining the name
of this project. It is followed by programming languages that the
project uses. Supported values for languages are `c`, `cpp` (for
-`C++`), `objc`, `objcpp`, `fortran`, `java`, `cs` (for `C#`) and
+`C++`), `d`, `objc`, `objcpp`, `fortran`, `java`, `cs` (for `C#`) and
`vala`. In versions before `0.40.0` you must have at least one
language listed.
@@ -1176,11 +1180,13 @@ the following methods.
Python](https://docs.python.org/3/library/os.path.html#os.path.join)
special-case absolute paths.
- `MESONINTROSPECT` contains the path to the `mesonintrospect`
- executable that corresponds to the `meson` executable that was used
- to configure the build. (This might be a different path then the
- first `mesonintrospect` executable found in `PATH`.) It can be used
- to query build configuration.
+ `MESONINTROSPECT` contains the path to the introspect command that
+ corresponds to the `meson` executable that was used to configure the
+ build. (This might be a different path then the first executable
+ found in `PATH`.) It can be used to query build configuration. Note
+ that the value may contain many parts, i.e. it may be `python3
+ /path/to/meson.py introspect`. The user is responsible for splitting
+ the string to an array if needed.
- `source_root()` returns a string with the absolute path to the
source root directory. Note: you should use the `files()` function
diff --git a/docs/markdown/Reference-tables.md b/docs/markdown/Reference-tables.md
new file mode 100644
index 0000000..b604fb6
--- /dev/null
+++ b/docs/markdown/Reference-tables.md
@@ -0,0 +1,60 @@
+# Reference tables
+
+## Compiler ids
+
+These are return values of the `get_id` method in a compiler object.
+
+| Value | Compiler family |
+| ----- | ---------------- |
+| gcc | The GNU Compiler Collection |
+| clang | The Clang compiler |
+| msvc | Microsoft Visual Studio |
+| intel | Intel compiler |
+| llvm | LLVM-based compiler (Swift, D) |
+| mono | Xamarin C# compiler |
+| dmd | D lang reference compiler |
+| rustc | Rust compiler |
+| valac | Vala compiler |
+| pathscale | The Pathscale Fortran compiler |
+| pgi | The Portland Fortran compiler |
+| sun | Sun Fortran compiler |
+| g95 | The G95 Fortran compiler |
+| open64 | The Open64 Fortran Compiler |
+| nagfor | The NAG Fortran compiler |
+
+## Script environment variables
+
+| Value | Comment |
+| ----- | ------- |
+| MESON_SOURCE_ROOT | Absolute path to the source dir |
+| MESON_BUILD_ROOT | Absolute path to the build dir |
+| MESONINTROSPECT | Command to run to run the introspection command, may be of the form `python /path/to/meson introspect`, user is responsible for splitting the path if necessary. |
+| MESON_SUBDIR | Current subdirectory, only set for `run_command` |
+
+## CPU families
+
+These are returned by the `cpu_family` method of `build_machine`,
+`host_machine` and `target_machine`. For cross compilation they are
+set in the cross file.
+
+| Value | Comment |
+| ----- | ------- |
+| x86 | 32 bit x86 processor |
+| x86_64 | 64 bit x86 processor |
+| arm | 32 bit ARM processor |
+
+Any cpu family not listed in the above list is not guaranteed to
+remain stable in future releases.
+
+## Operating system names
+
+These are provided by the `.system()` method call.
+
+| Value | Comment |
+| ----- | ------- |
+| linux | |
+| darwin | Either OSX or iOS |
+| windows | Any version of Windows |
+
+Any string not listed above is not guaranteed to remain stable in
+future releases. \ No newline at end of file
diff --git a/docs/markdown/Videos.md b/docs/markdown/Videos.md
index ab128c6..5abfbe4 100644
--- a/docs/markdown/Videos.md
+++ b/docs/markdown/Videos.md
@@ -9,7 +9,7 @@ short-description: Videos about Meson
(from Linux.conf.au 2015 -- Auckland, New Zealand)
<div class="video-container">
-<iframe width="854" height="480" src="https://www.youtube.com/embed/KPi0AuVpxLI" frameborder="0" allowfullscreen></iframe>
+<iframe width="854" height="480" style="border:0;" src="https://www.youtube.com/embed/KPi0AuVpxLI" allowfullscreen></iframe>
</div>
## Talks about design, goals behind Meson's multiplatform dependency system was held
@@ -17,7 +17,7 @@ short-description: Videos about Meson
(From Linux.conf.au 2016 -- Geelong, Australia)
<div class="video-container">
-<iframe width="854" height="480" src="https://www.youtube.com/embed/CTJtKtQ8R5k" frameborder="0" allowfullscreen></iframe>
+<iframe width="854" height="480" style="border:0;" src="https://www.youtube.com/embed/CTJtKtQ8R5k" allowfullscreen></iframe>
</div>
## Features and benefits of Meson's multiplatform support for building and dependencies]
@@ -25,7 +25,7 @@ short-description: Videos about Meson
(Libre Application Summit 2016 talk _New world, new tools_ explored further)
<div class="video-container">
-<iframe width="854" height="480" src="https://www.youtube.com/embed/0-gx1qU2pPo" frameborder="0" allowfullscreen></iframe>
+<iframe width="854" height="480" style="border:0;" src="https://www.youtube.com/embed/0-gx1qU2pPo" allowfullscreen></iframe>
</div>
## The first ever public presentation on Meson
@@ -33,5 +33,5 @@ short-description: Videos about Meson
(lightning talk at FOSDEM 2014)
<video width="854" height="480" controls>
- < <source src=http://mirror.onet.pl/pub/mirrors/video.fosdem.org/2014/H2215_Ferrer/Sunday/Introducing_the_Meson_build_system.webm>
+ <source src=http://mirror.onet.pl/pub/mirrors/video.fosdem.org/2014/H2215_Ferrer/Sunday/Introducing_the_Meson_build_system.webm>
</video>
diff --git a/docs/markdown/index.md b/docs/markdown/index.md
index 8e35a4d..81c17ff 100644
--- a/docs/markdown/index.md
+++ b/docs/markdown/index.md
@@ -13,7 +13,7 @@ The main design point of Meson is that every moment a developer spends writing o
## Features
* multiplatform support for Linux, OSX, Windows, GCC, Clang, Visual Studio and others
-* supported languages include C, C++, Fortran, Java, Rust
+* supported languages include C, C++, D, Fortran, Java, Rust
* build definitions in a very readable and user friendly non-Turing complete DSL
* cross compilation for many operating systems as well as bare metal
* optimized for extremely fast full and incremental builds without sacrificing correctness
@@ -24,10 +24,10 @@ The main design point of Meson is that every moment a developer spends writing o
There are two main methods of connecting with other Meson developers. The first one is the mailing list, which is hosted at [Google Groups](https://groups.google.com/forum/#!forum/mesonbuild).
-The second way is via IRC. The channel to use is <tt>#mesonbuild</tt> at [Freenode](https://freenode.net/).
+The second way is via IRC. The channel to use is `#mesonbuild` at [Freenode](https://freenode.net/).
## Development
-All development on Meson is done on [GitHub project](https://github.com/mesonbuild/meson). For further info look into the <tt>contributing.txt</tt> file that comes with Meson's source checkout.
+All development on Meson is done on [GitHub project](https://github.com/mesonbuild/meson). For further info look into the `contributing.txt` file that comes with Meson's source checkout.
You do not need to sign a CLA to contribute to Meson.
diff --git a/docs/sitemap.txt b/docs/sitemap.txt
index af8aede..89dfdbd 100644
--- a/docs/sitemap.txt
+++ b/docs/sitemap.txt
@@ -38,6 +38,7 @@ index.md
Windows-module.md
Java.md
Vala.md
+ D.md
IDE-integration.md
Custom-build-targets.md
Build-system-converters.md
@@ -47,6 +48,7 @@ index.md
Creating-OSX-packages.md
Creating-Linux-binaries.md
Reference-manual.md
+ Reference-tables.md
FAQ.md
Reproducible-builds.md
howtox.md