aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/markdown/Build-options.md25
-rw-r--r--docs/markdown/Compiler-properties.md2
-rw-r--r--docs/markdown/Contributing.md2
-rw-r--r--docs/markdown/Creating-Linux-binaries.md2
-rw-r--r--docs/markdown/Dependencies.md7
-rw-r--r--docs/markdown/Disabler.md4
-rw-r--r--docs/markdown/Generating-sources.md4
-rw-r--r--docs/markdown/Icestorm-module.md27
-rw-r--r--docs/markdown/Installing.md2
-rw-r--r--docs/markdown/Reference-manual.md60
-rw-r--r--docs/markdown/Reference-tables.md2
-rw-r--r--docs/markdown/Release-notes-for-0.38.0.md2
-rw-r--r--docs/markdown/Style-guide.md36
-rw-r--r--docs/markdown/Syntax.md6
-rw-r--r--docs/markdown/Users.md15
-rw-r--r--docs/markdown/Videos.md44
-rw-r--r--docs/markdown/_Sidebar.md2
-rw-r--r--docs/markdown/i18n-module.md2
-rw-r--r--docs/markdown/snippets/config-tool-cross.md13
-rw-r--r--docs/markdown/snippets/deprecations.md14
-rw-r--r--docs/markdown/snippets/fpga.md12
-rw-r--r--docs/markdown/snippets/hexnumbers.md5
-rw-r--r--docs/markdown/snippets/install_subdir-strip_directory.md4
-rw-r--r--docs/markdown/snippets/intopt.md6
-rw-r--r--docs/markdown/snippets/project-license.md4
-rw-r--r--docs/markdown/snippets/rust-cross.md16
-rw-r--r--docs/markdown/snippets/yield.md8
-rw-r--r--docs/sitemap.txt2
28 files changed, 286 insertions, 42 deletions
diff --git a/docs/markdown/Build-options.md b/docs/markdown/Build-options.md
index cd7f07d..74d2355 100644
--- a/docs/markdown/Build-options.md
+++ b/docs/markdown/Build-options.md
@@ -16,6 +16,7 @@ Here is a simple option file.
option('someoption', type : 'string', value : 'optval', description : 'An option')
option('other_one', type : 'boolean', value : false)
option('combo_opt', type : 'combo', choices : ['one', 'two', 'three'], value : 'three')
+option('integer_opt', type : 'integer', min : 0, max : 5, value : 3)
option('free_array_opt', type : 'array', value : ['one', 'two'])
option('array_opt', type : 'array', choices : ['one', 'two', 'three'], value : ['one', 'two'])
```
@@ -39,6 +40,12 @@ A combo allows any one of the values in the `choices` parameter to be
selected. If no default value is set then the first value will be the
default.
+## Integers
+
+An integer option contains a single integer with optional upper and
+lower values that are specified with the `min` and `max` keyword
+arguments. Available since Meson version 0.45.0.
+
### Arrays
Arrays represent an array of strings. By default the array can contain
@@ -101,3 +108,21 @@ double quotes.
**NOTE:** If you cannot call `meson configure` you likely have a old
version of Meson. In that case you can call `mesonconf` instead, but
that is deprecated in newer versions
+
+## Yielding to superproject option
+
+Suppose you have a master project and a subproject. In some cases it
+might be useful to have an option that has the same value in both of
+them. This can be achieved with the `yield` keyword. Suppose you have
+an option definition like this:
+
+```meson
+option('some_option', type : 'string', value : 'value', yield : true)
+```
+
+If you build this project on its own, this option behaves like
+usual. However if you build this project as a subproject of another
+project which also has an option called `some_option`, then calling
+`get_option` returns the value of the superproject. If the value of
+`yield` is `false`, `get_option` returns the value of the subproject's
+option.
diff --git a/docs/markdown/Compiler-properties.md b/docs/markdown/Compiler-properties.md
index 4def628..579417a 100644
--- a/docs/markdown/Compiler-properties.md
+++ b/docs/markdown/Compiler-properties.md
@@ -173,7 +173,7 @@ Does a structure contain a member?
==
Some platforms have different standard structures. Here's how one
-would check if a struct called `mystruct` from header `myheader.h</hh>
+would check if a struct called `mystruct` from header `myheader.h`
contains a member called `some_member`.
```meson
diff --git a/docs/markdown/Contributing.md b/docs/markdown/Contributing.md
index 169bf4c..293b629 100644
--- a/docs/markdown/Contributing.md
+++ b/docs/markdown/Contributing.md
@@ -20,7 +20,7 @@ test run before they are even considered for submission.
## Tests
-All new features must come with automatic tests that throughly prove
+All new features must come with automatic tests that thoroughly prove
that the feature is working as expected. Similarly bug fixes must come
with a unit test that demonstrates the bug, proves that it has been
fixed and prevents the feature from breaking in the future.
diff --git a/docs/markdown/Creating-Linux-binaries.md b/docs/markdown/Creating-Linux-binaries.md
index 8ca3ef0..084e157 100644
--- a/docs/markdown/Creating-Linux-binaries.md
+++ b/docs/markdown/Creating-Linux-binaries.md
@@ -61,7 +61,7 @@ Log out and back in and now your build environment is ready to use.
## Adding other tools
Old distros might have too old versions of some tools. For Meson this
-could nclude Python 3 and Ninja. If this is the case you need to
+could include Python 3 and Ninja. If this is the case you need to
download, build and install new versions into `~/devroot` in the usual
way.
diff --git a/docs/markdown/Dependencies.md b/docs/markdown/Dependencies.md
index b36d275..189db72 100644
--- a/docs/markdown/Dependencies.md
+++ b/docs/markdown/Dependencies.md
@@ -144,6 +144,13 @@ pass `gtest` or `gmock` to `dependency` and it will do everything for
you. If you want to use GMock, it is recommended to use GTest as well,
as getting it to work standalone is tricky.
+You can set the `main` keyword argument to `true` to use the `main()`
+function provided by GTest:
+```
+gtest_dep = dependency('gtest', main : true, required : false)
+e = executable('testprog', 'test.cc', dependencies : gtest_dep)
+test('gtest test', e)
+```
## MPI
MPI is supported for C, C++ and Fortran. Because dependencies are
diff --git a/docs/markdown/Disabler.md b/docs/markdown/Disabler.md
index 81417f6..4aed7ad 100644
--- a/docs/markdown/Disabler.md
+++ b/docs/markdown/Disabler.md
@@ -2,7 +2,9 @@
short-description: Disabling options
...
-# Disabling parts of the build (available since 0.44.0)
+# Disabling parts of the build
+
+*This feature is available since version 0.44.0.*
The following is a common fragment found in many projects:
diff --git a/docs/markdown/Generating-sources.md b/docs/markdown/Generating-sources.md
index ae1302b..2ea1021 100644
--- a/docs/markdown/Generating-sources.md
+++ b/docs/markdown/Generating-sources.md
@@ -4,7 +4,7 @@ short-description: Generation of source files before compilation
# Generating sources
- Sometimes source files need to be preprocessed before they are passed to the actual compiler. As an example you might want build an IDL compiler and then run some files through that to generate actual source files. In Meson this is done with [`generator()`](https://github.com/mesonbuild/meson/wiki/Reference-manual#generator) or [`custom_target()`](https://github.com/mesonbuild/meson/wiki/Reference-manual#custom_target).
+ Sometimes source files need to be preprocessed before they are passed to the actual compiler. As an example you might want build an IDL compiler and then run some files through that to generate actual source files. In Meson this is done with [`generator()`](Reference-manual.md#generator) or [`custom_target()`](Reference-manual.md#custom_target).
## Using custom_target()
@@ -45,7 +45,7 @@ Generators are similar to custom targets, except that we define a *generator*, w
Note that generators should only be used for outputs that will only be used as inputs for a build target or a custom target. When you use the processed output of a generator in multiple targets, the generator will be run multiple times to create outputs for each target. Each output will be created in a target-private directory `@BUILD_DIR@`.
-If you want to generate files for general purposes such as for generating headers to be used by several sources, or data that will be installed, and so on, use a [`custom_target()`](https://github.com/mesonbuild/meson/wiki/Reference-manual#custom_target) instead.
+If you want to generate files for general purposes such as for generating headers to be used by several sources, or data that will be installed, and so on, use a [`custom_target()`](Reference-manual.md#custom_target) instead.
```meson
diff --git a/docs/markdown/Icestorm-module.md b/docs/markdown/Icestorm-module.md
new file mode 100644
index 0000000..896311f
--- /dev/null
+++ b/docs/markdown/Icestorm-module.md
@@ -0,0 +1,27 @@
+# Unstable SIMD module
+
+This module provides is available since version 0.45.0.
+
+**Note**: this module is unstable. It is only provided as a technology
+preview. Its API may change in arbitrary ways between releases or it
+might be removed from Meson altogether.
+
+## Usage
+
+This module provides an experimental to create FPGA bitstreams using
+the [IceStorm](http://www.clifford.at/icestorm/) suite of tools.
+
+The module exposes only one method called `project` and it is used
+like this:
+
+ is.project('projname',
+ <verilog files>,
+ constraint_file : <pcf file>,
+ )
+
+The input to this function is the set of Verilog files and a
+constraint file. This produces output files called `projname.asc`,
+`projname.blif` and `projname.bin`. In addition it creates two run
+targets called `projname-time` for running timing analysis and
+`projname-upload` that uploads the generated bitstream to an FPGA
+devide using the `iceprog` programming executable.
diff --git a/docs/markdown/Installing.md b/docs/markdown/Installing.md
index 2663ff4..4670544 100644
--- a/docs/markdown/Installing.md
+++ b/docs/markdown/Installing.md
@@ -26,7 +26,7 @@ Other install commands are the following.
```meson
install_headers('header.h', subdir : 'projname') # -> include/projname/header.h
install_man('foo.1') # -> share/man/man1/foo.1.gz
-install_data('datafile.cat', install_dir : join_paths(get_option('datadir'), 'progname')) # -> share/progname/datafile.dat
+install_data('datafile.dat', install_dir : join_paths(get_option('datadir'), 'progname')) # -> share/progname/datafile.dat
```
Sometimes you want to copy an entire subtree directly. For this use case there is the `install_subdir` command, which can be used like this.
diff --git a/docs/markdown/Reference-manual.md b/docs/markdown/Reference-manual.md
index a3e1ef0..a557f0c 100644
--- a/docs/markdown/Reference-manual.md
+++ b/docs/markdown/Reference-manual.md
@@ -416,7 +416,7 @@ be passed to [shared and static libraries](#library).
dynamically exported, allowing modules built using the
[`shared_module`](#shared_module) function to refer to functions,
variables and other symbols defined in the executable itself. Implies
- the `implib` argument. Since 0.44.0
+ the `implib` argument. Since 0.45.0
- `implib` when set to true, an import library is generated for the
executable (the name of the import library is based on *exe_name*).
Alternatively, when set to a string, that gives the base name for
@@ -772,7 +772,7 @@ installed with a `.gz` suffix.
### install_subdir()
``` meson
- void install_subdir(subdir_name, install_dir : ..., exclude_files : ..., exclude_directories : ...)
+ void install_subdir(subdir_name, install_dir : ..., exclude_files : ..., exclude_directories : ..., strip_directory : ...)
```
Installs the entire given subdirectory and its contents from the
@@ -786,6 +786,46 @@ The following keyword arguments are supported:
- `exclude_directories`: a list of directory names that should not be installed.
Names are interpreted as paths relative to the `subdir_name` location.
- `install_dir`: the location to place the installed subdirectory.
+- `strip_directory`: install directory contents. `strip_directory=false` by default.
+ If `strip_directory=false` only last component of source path is used.
+ Since 0.45.0
+
+For a given directory `foo`:
+```text
+foo/
+ bar/
+ file1
+ file2
+```
+`install_subdir('foo', install_dir : 'share', strip_directory : false)` creates
+```text
+share/
+ foo/
+ bar/
+ file1
+ file2
+```
+
+`install_subdir('foo', install_dir : 'share', strip_directory : true)` creates
+```text
+share/
+ bar/
+ file1
+ file2
+```
+
+`install_subdir('foo/bar', install_dir : 'share', strip_directory : false)` creates
+```text
+share/
+ bar/
+ file1
+```
+
+`install_subdir('foo/bar', install_dir : 'share', strip_directory : true)` creates
+```text
+share/
+ file1
+```
### is_variable()
@@ -910,7 +950,8 @@ Project supports the following keyword arguments.
'GPL3']`. Note that the text is informal and is only written to
the dependency manifest. Meson does not do any license validation,
you are responsible for verifying that you abide by all licensing
- terms.
+ terms. You can access the value in your Meson build files with
+ `meson.project_license()`.
- `meson_version` takes a string describing which Meson version the
project requires. Usually something like `>0.28.0`.
@@ -944,13 +985,16 @@ respectively.
### run_target
``` meson
- buildtarget run_target(target_name, ...)
+runtarget run_target(target_name, ...)
```
This function creates a new top-level target that runs a specified
command with the specified arguments. Like all top-level targets, this
integrates with the selected backend. For instance, with Ninja you can
-run it as `ninja target_name`.
+run it as `ninja target_name`. Note that a run target produces no
+output as far as Meson is concerned. It is only meant for tasks such
+as running a code formatter or flashing an external device's firmware
+with a built file.
The script is run from an *unspecified* directory, and Meson will set
three environment variables `MESON_SOURCE_ROOT`, `MESON_BUILD_ROOT`
@@ -1247,6 +1291,8 @@ the following methods.
- `project_version()` returns the version string specified in `project` function call.
+- `project_license()` returns the array of licenses specified in `project` function call.
+
- `project_name()` returns the project name specified in the `project` function call.
- `version()` return a string with the version of Meson.
@@ -1539,7 +1585,7 @@ The following methods are defined for all [arrays](Syntax.md#arrays):
- `length()`, the size of the array
You can also iterate over arrays with the [`foreach`
-statement](https://github.com/mesonbuild/meson/wiki/Syntax#foreach-statements).
+statement](Syntax.md#foreach-statements).
## Returned objects
@@ -1636,6 +1682,8 @@ an external dependency with the following methods:
dependency, error out. (*Added 0.44.0*) You can also redefine a
variable by passing a list to the `define_variable` parameter
that can affect the retrieved variable: `['prefix', '/'])`.
+ (*Added 0.45.0*) A warning is issued if the variable is not defined,
+ unless a `default` parameter is specified.
- `get_configtool_variable(varname)` (*Added 0.44.0*) will get the
command line argument from the config tool (with `--` prepended), or,
diff --git a/docs/markdown/Reference-tables.md b/docs/markdown/Reference-tables.md
index ee3b8c2..5ee0db1 100644
--- a/docs/markdown/Reference-tables.md
+++ b/docs/markdown/Reference-tables.md
@@ -57,7 +57,7 @@ These are provided by the `.system()` method call.
| windows | Any version of Windows |
| cygwin | The Cygwin environment for Windows |
| haiku | |
-| freebsd | FreeBSD and it's derivatives |
+| freebsd | FreeBSD and its derivatives |
| dragonfly | DragonFly BSD |
| netbsd | |
diff --git a/docs/markdown/Release-notes-for-0.38.0.md b/docs/markdown/Release-notes-for-0.38.0.md
index ca6602e..741c349 100644
--- a/docs/markdown/Release-notes-for-0.38.0.md
+++ b/docs/markdown/Release-notes-for-0.38.0.md
@@ -78,7 +78,7 @@ When using compilers that implement the [`__has_include()` preprocessor macro](h
# Array indexing now supports fallback values
-The second argument to the array [`.get()`](https://github.com/mesonbuild/meson/wiki/Reference-manual#array-object) function is now returned if the specified index could not be found
+The second argument to the array [`.get()`](Reference-manual.md#array-object) function is now returned if the specified index could not be found
```meson
array = [10, 11, 12, 13]
array.get(0) # this will return `10`
diff --git a/docs/markdown/Style-guide.md b/docs/markdown/Style-guide.md
new file mode 100644
index 0000000..9008592
--- /dev/null
+++ b/docs/markdown/Style-guide.md
@@ -0,0 +1,36 @@
+---
+short-description: Style recommendations for Meson files
+...
+
+# Style recommendations
+
+This page lists some recommendations on organizing and formatting your
+Meson build files.
+
+## Tabs or spaces?
+
+Always spaces.
+
+## Naming options
+
+There are two ways of naming project options. As an example for
+booleans the first one is `foo` and the second one is
+`enable-foo`. The former style is recommended, because in Meson
+options have strong type, rather than being just strings.
+
+You should try to name options the same as is common in other
+projects. This is especially important for yielding options, because
+they require that both the parent and subproject options have the same
+name.
+
+# Global arguments
+
+Prefer `add_project_arguments` to `add_global_arguments` because using
+the latter prevents using the project as a subproject.
+
+# Cross compilation arguments
+
+Try to keep cross compilation arguments away from your build files as
+much as possible. Keep them in the cross file instead. This adds
+portability, since all changes needed to compile to a different
+platform are isolated in one place.
diff --git a/docs/markdown/Syntax.md b/docs/markdown/Syntax.md
index 84403f4..1005100 100644
--- a/docs/markdown/Syntax.md
+++ b/docs/markdown/Syntax.md
@@ -58,6 +58,12 @@ y = 3 * 4
d = 5 % 3 # Yields 2.
```
+Hexadecimal literals are supported since version 0.45.0:
+
+```meson
+int_255 = 0xFF
+```
+
Strings can be converted to a number like this:
```meson
diff --git a/docs/markdown/Users.md b/docs/markdown/Users.md
index 616fdc5..f02e4c7 100644
--- a/docs/markdown/Users.md
+++ b/docs/markdown/Users.md
@@ -10,8 +10,10 @@ If you have a project that uses Meson that you want to add to this list, let us
- [Arduino sample project](https://github.com/jpakkane/mesonarduino)
- [Budgie Desktop](https://github.com/budgie-desktop/budgie-desktop), a desktop environment built on GNOME technologies
- [casync](https://github.com/systemd/casync), Content-Addressable Data Synchronization Tool
+ - [Dpdk](http://dpdk.org/ml/archives/dev/2018-January/089724.html), Data plane development kit, a set of libraries and drivers for fast packet processing
- [Emeus](https://github.com/ebassi/emeus), Constraint based layout manager for GTK+
- [Frida](https://www.frida.re/), a dynamic binary instrumentation toolkit
+ - [fwupd](https://github.com/hughsie/fwupd), a simple daemon to allow session software to update firmware
- [Geary](https://wiki.gnome.org/Apps/Geary), an email application built around conversations, for the GNOME 3 desktop.
- [GLib](https://git.gnome.org/browse/glib/), cross-platform C library used by GTK+ and GStreamer (not the default yet)
- [Gnome Builder](https://git.gnome.org/browse/gnome-builder/), an IDE for the Gnome platform
@@ -25,24 +27,37 @@ If you have a project that uses Meson that you want to add to this list, let us
- [GTK+](https://git.gnome.org/browse/gtk+/), the multi-platform toolkit used by GNOME
- [GtkDApp](https://gitlab.com/csoriano/GtkDApp), an application template for developing Flatpak apps with Gtk+ and D
- [HexChat](https://github.com/hexchat/hexchat), a cross-platform IRC client in C
+ - [IGT](https://cgit.freedesktop.org/xorg/app/intel-gpu-tools/), Linux kernel graphics driver test suite.
+ - [JsonCpp](https://github.com/open-source-parsers/jsoncpp), a C++ library for interacting with JSON
- [Json-glib](https://git.gnome.org/browse/json-glib), GLib-based JSON manipulation library
- [Ksh](https://github.com/att/ast), a Korn Shell
+ - [Libdrm](https://cgit.freedesktop.org/drm/libdrm/), a library for abstracting DRM kernel interfaces
- [Libepoxy](https://github.com/anholt/libepoxy/), a library for handling OpenGL function pointer management
- [Libgit2-glib](https://git.gnome.org/browse/libgit2-glib/), a GLib wrapper for libgit2
- [Libhttpseverywhere](https://github.com/grindhold/libhttpseverywhere), a library to enable httpseverywhere on any desktop app
+ - [Libosmscout](https://github.com/Framstag/libosmscout), a C++ library for offline map rendering, routing and location
+lookup based on OpenStreetMap data
+ - [Libva](https://github.com/intel/libva), an implementation for the VA (VIdeo Acceleration) API
- [Lightdm-Webkit2-Greeter](https://github.com/Antergos/lightdm-webkit2-greeter)
- [Kiwix libraries](https://github.com/kiwix/kiwix-lib)
+ - [Mesa](https://www.mesa3d.org/), An open source graphics driver project
- [Nautilus](https://git.gnome.org/browse/nautilus/commit/?id=ed5652c89ac0654df2e82b54b00b27d51c825465) the Gnome file manager
- [Orc](http://cgit.freedesktop.org/gstreamer/orc/), the Optimized Inner Loop Runtime Compiler (not the default yet)
+ - [Outlier](https://github.com/kerolasa/outlier), a small Hello World style meson example project
- [Pango](https://git.gnome.org/browse/pango/), an Internationalized text layout and rendering library (not the default yet)
- [Parzip](https://github.com/jpakkane/parzip), a multithreaded reimplementation of Zip
+ - [PipeWire](https://pipewire.org/), a framework for video and audio for containerized applications
- [Pitivi](http://pitivi.org/), a nonlinear video editor
- [Polari](https://git.gnome.org/browse/polari), an IRC client
+ - [radare2](https://github.com/radare/radare2), unix-like reverse engineering framework and commandline tools (not the default)
+ - [SSHFS](https://github.com/libfuse/sshfs), allows you to mount a remote filesystem using SFTP
- [Sysprof](https://wiki.gnome.org/Apps/Sysprof), a profiling tool
- [systemd](https://github.com/systemd/systemd), the init system
+ - [Taisei Project](https://taisei-project.org/), an open-source Touhou Project clone and fangame
- [Xorg](https://cgit.freedesktop.org/xorg/xserver/) the X.org display server (not the default yet)
- [Valum](https://github.com/valum-framework/valum), a micro web framework written in Vala
- [Wayland and Weston](https://lists.freedesktop.org/archives/wayland-devel/2016-November/031984.html), a next generation display server (not merged yet)
+ - [wlroots](https://github.com/swaywm/wlroots), a modular Wayland compositor library
- [ZStandard](https://github.com/facebook/zstd/commit/4dca56ed832c6a88108a2484a8f8ff63d8d76d91) a compression algorithm developed at Facebook (not used by default)
Note that a more up-to-date list of GNOME projects that use Meson can be found [here](https://wiki.gnome.org/Initiatives/GnomeGoals/MesonPorting).
diff --git a/docs/markdown/Videos.md b/docs/markdown/Videos.md
index 5abfbe4..d9ea34d 100644
--- a/docs/markdown/Videos.md
+++ b/docs/markdown/Videos.md
@@ -4,34 +4,28 @@ short-description: Videos about Meson
# Videos
-## An overview of meson
+ - [The Meson Build System, 4+ years of work to become an overnight
+ success](https://www.youtube.com/watch?v=gHdTzdXkhRY), Linux.conf.au 2018
-(from Linux.conf.au 2015 -- Auckland, New Zealand)
+ - [Meson and the changing Linux build
+ landscape](https://media.ccc.de/v/ASG2017-111-meson_and_the_changing_linux_build_landscape),
+ All Systems Go 2017
-<div class="video-container">
-<iframe width="854" height="480" style="border:0;" src="https://www.youtube.com/embed/KPi0AuVpxLI" allowfullscreen></iframe>
-</div>
+ - [Meson, compiling the world with
+ Python](https://www.youtube.com/watch?v=sEO4DC8hm34), Europython
+ 2017
-## Talks about design, goals behind Meson's multiplatform dependency system was held
+ - [Builds, dependencies and deployment in a modern multiplatform
+ world](https://www.youtube.com/embed/CTJtKtQ8R5k), Linux.conf.au
+ 2016
-(From Linux.conf.au 2016 -- Geelong, Australia)
+ - [New world, new tools](https://www.youtube.com/embed/0-gx1qU2pPo),
+ Libre Application Summit 2016
-<div class="video-container">
-<iframe width="854" height="480" style="border:0;" src="https://www.youtube.com/embed/CTJtKtQ8R5k" allowfullscreen></iframe>
-</div>
+ - [Making build systems not
+ suck](https://www.youtube.com/embed/KPi0AuVpxLI), Linux.conf.au
+ 2015, Auckland, New Zealand
-## Features and benefits of Meson's multiplatform support for building and dependencies]
-
-(Libre Application Summit 2016 talk _New world, new tools_ explored further)
-
-<div class="video-container">
-<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
-
-(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>
-</video>
+ - [Lightning talk at FOSDEM
+ 2014](http://mirror.onet.pl/pub/mirrors/video.fosdem.org/2014/H2215_Ferrer/Sunday/Introducing_the_Meson_build_system.webm),
+ The first ever public presentation on Meson
diff --git a/docs/markdown/_Sidebar.md b/docs/markdown/_Sidebar.md
index 89fc523..2637d68 100644
--- a/docs/markdown/_Sidebar.md
+++ b/docs/markdown/_Sidebar.md
@@ -7,7 +7,7 @@
* [Tests](Unit-tests.md)
* [Syntax](Syntax.md)
-### [Modules](https://github.com/mesonbuild/meson/wiki/Module-reference.md)
+### [Modules](Module-reference.md)
* [gnome](Gnome-module.md)
* [i18n](i18n-module.md)
diff --git a/docs/markdown/i18n-module.md b/docs/markdown/i18n-module.md
index 8fb650a..88f059b 100644
--- a/docs/markdown/i18n-module.md
+++ b/docs/markdown/i18n-module.md
@@ -40,7 +40,7 @@ This function also defines targets for maintainers to use:
### i18n.merge_file()
This merges translations into a text file using `msgfmt`. See
-[custom_target](https://github.com/mesonbuild/meson/wiki/Reference%20manual#custom_target)
+[custom_target](Reference-manual.md#custom_target)
for normal keywords. In addition it accepts these keywords:
* `data_dirs`: (*Added 0.41.0*) list of directories for its files (See
diff --git a/docs/markdown/snippets/config-tool-cross.md b/docs/markdown/snippets/config-tool-cross.md
new file mode 100644
index 0000000..1102481
--- /dev/null
+++ b/docs/markdown/snippets/config-tool-cross.md
@@ -0,0 +1,13 @@
+# Config-Tool based dependencies can be specified in a cross file
+
+Tools like LLVM and pcap use a config tool for dependencies, this is a script
+or binary that is run to get configuration information (cflags, ldflags, etc)
+from.
+
+These binaries may now be specified in the `binaries` section of a cross file.
+
+```dosini
+[binaries]
+cc = ...
+llvm-config = '/usr/bin/llvm-config32'
+```
diff --git a/docs/markdown/snippets/deprecations.md b/docs/markdown/snippets/deprecations.md
new file mode 100644
index 0000000..adab2e6
--- /dev/null
+++ b/docs/markdown/snippets/deprecations.md
@@ -0,0 +1,14 @@
+## Removed two deprecated features
+
+The standalone `find_library` function has been a no-op for a long
+time. Starting with this version it becomes a hard error.
+
+There used to be a keywordless version of `run_target` which looked
+like this:
+
+ run_target('targetname', 'command', 'arg1', 'arg2')
+
+This is now an error. The correct format for this is now:
+
+ run_target('targetname',
+ command : ['command', 'arg1', 'arg2'])
diff --git a/docs/markdown/snippets/fpga.md b/docs/markdown/snippets/fpga.md
new file mode 100644
index 0000000..b5e4938
--- /dev/null
+++ b/docs/markdown/snippets/fpga.md
@@ -0,0 +1,12 @@
+## Experimental FPGA support
+
+This version adds support for generating, analysing and uploading FPGA
+programs using the [IceStorm
+toolchain](http://www.clifford.at/icestorm/). This support is
+experimental and is currently limited to the `iCE 40` series of FPGA
+chips.
+
+FPGA generation integrates with other parts of Meson seamlessly. As an
+example, [here](https://github.com/jpakkane/lm32) is an example
+project that compiles a simple firmware into Verilog and combines that
+with an lm32 softcore processor.
diff --git a/docs/markdown/snippets/hexnumbers.md b/docs/markdown/snippets/hexnumbers.md
new file mode 100644
index 0000000..840c0cb
--- /dev/null
+++ b/docs/markdown/snippets/hexnumbers.md
@@ -0,0 +1,5 @@
+## Hexadecimal string literals
+
+Hexadecimal integer literals can now be used in build and option files.
+
+ int_255 = 0xFF
diff --git a/docs/markdown/snippets/install_subdir-strip_directory.md b/docs/markdown/snippets/install_subdir-strip_directory.md
new file mode 100644
index 0000000..9ddb4a4
--- /dev/null
+++ b/docs/markdown/snippets/install_subdir-strip_directory.md
@@ -0,0 +1,4 @@
+## install_subdir() supports strip_directory
+
+If strip_directory=true install_subdir() installs directory contents
+instead of directory itself, stripping basename of the source directory.
diff --git a/docs/markdown/snippets/intopt.md b/docs/markdown/snippets/intopt.md
new file mode 100644
index 0000000..daf660b
--- /dev/null
+++ b/docs/markdown/snippets/intopt.md
@@ -0,0 +1,6 @@
+## Integer options
+
+There is a new integer option type with optional minimum and maximum
+values. It can be specified like this in the `meson_options.txt` file:
+
+ option('integer_option', type : 'integer', min : 0, max : 5, value : 3)
diff --git a/docs/markdown/snippets/project-license.md b/docs/markdown/snippets/project-license.md
new file mode 100644
index 0000000..5da2c6a
--- /dev/null
+++ b/docs/markdown/snippets/project-license.md
@@ -0,0 +1,4 @@
+## New method meson.project_license()
+
+The `meson` builtin object now has a `project_license()` method that returns a
+list of all licenses for the project.
diff --git a/docs/markdown/snippets/rust-cross.md b/docs/markdown/snippets/rust-cross.md
new file mode 100644
index 0000000..7f18c44
--- /dev/null
+++ b/docs/markdown/snippets/rust-cross.md
@@ -0,0 +1,16 @@
+## Rust cross-compilation
+
+Cross-compilation is now supported for Rust targets. Like other
+cross-compilers, the Rust binary must be specified in your cross
+file. It should specify a `--target` (as installed by `rustup target`)
+and a custom linker pointing to your C cross-compiler. For example:
+
+```
+[binaries]
+c = '/usr/bin/arm-linux-gnueabihf-gcc-7'
+rust = [
+ 'rustc',
+ '--target', 'arm-unknown-linux-gnueabihf',
+ '-C', 'linker=/usr/bin/arm-linux-gnueabihf-gcc-7',
+]
+```
diff --git a/docs/markdown/snippets/yield.md b/docs/markdown/snippets/yield.md
new file mode 100644
index 0000000..3880e67
--- /dev/null
+++ b/docs/markdown/snippets/yield.md
@@ -0,0 +1,8 @@
+## Yielding subproject option to superproject
+
+Normally project options are specific to the current project. However
+sometimes you want to have an option whose value is the same over all
+projects. This can be achieved with the new `yield` keyword for
+options. When set to `true`, getting the value of this option in
+`meson.build` files gets the value from the option with the same name
+in the master project (if such an option exists).
diff --git a/docs/sitemap.txt b/docs/sitemap.txt
index 87a5eb5..144ca4a 100644
--- a/docs/sitemap.txt
+++ b/docs/sitemap.txt
@@ -30,6 +30,7 @@ index.md
Modules.md
Gnome-module.md
i18n-module.md
+ Icestorm-module.md
Pkgconfig-module.md
Python-3-module.md
Qt4-module.md
@@ -51,6 +52,7 @@ index.md
Project-templates.md
Reference-manual.md
Reference-tables.md
+ Style-guide.md
FAQ.md
Reproducible-builds.md
howtox.md