Meson build system release 0.51

Published build system release table 0.51, which is used to build projects such as X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME, and GTK+. The Meson code is written in Python and supplied licensed under Apache 2.0.

The key development goal of Meson is to provide a high speed assembly process combined with convenience and ease of use. Instrumentation is used instead of make when building by default Ninja, but other backends such as xcode and VisualStudio are also possible. The system has a built-in multi-platform dependency handler that allows you to use Meson to build packages for distributions. Assembly rules are set in a simplified domain-specific language, they are well readable and understandable to the user (according to the authors' idea, the developer should spend a minimum of time writing rules).

Supports cross-compiling and building on Linux, macOS and Windows using GCC, Clang, Visual Studio and other compilers. It is possible to build projects in various programming languages, including C, C++, Fortran, Java and Rust. An incremental build mode is supported, in which only components that are directly related to changes made since the last build are rebuilt. Meson can be used to generate repeatable builds, where running the build in different environments results in completely identical executables.

All innovations Meson 0.51:

  • Added support for transparent building of existing projects that use CMake build scripts. Meson can now directly build simple subprojects (such as single libraries) using the CMake module, similar to regular subprojects (including CMake subprojects can be placed in the subprojects directory);
  • For all compilers used, preliminary testing is enabled through the assembly and execution of the simplest test files (sanity check), not limited to testing flags specified by the user for cross-compilers (from now on compilers native to the current platform are also checked).
  • Added the ability to define command line options used during cross-compilation, with binding through setting the platform prefix before the option. Previously, command line options only covered native builds and could not be specified for cross compilation. Command line options now apply whether native or cross-compiled, ensuring that native and cross-builds produce identical results;
  • Added the ability to specify the "--cross-file" flag more than once on the command line to list multiple cross-files;
  • Added support for ICL compiler (Intel C/C++ Compiler) for Windows platform (ICL.EXE and ifort);
  • Added initial instrumentation support for CPU Xtensa (xt-xcc, xt-xc++, xt-nm);
  • The "get_variable" method has been added to the "dependency" object, which allows you to get the value of a variable without taking into account the type of the current dependency (for example, dep.get_variable(pkg-config : 'var-name', cmake : 'COP_VAR_NAME));
  • Added a new target build options argument, "link_language", to explicitly specify the language to use when invoking the linker. For example, a Fortran main program could call C/C++ code, which would automatically select C/C++ when the Fortran linker should be used;
  • Changed processing of CPPFLAGS preprocessor flags. If Meson previously stored CPPFLAGS and language-specific compilation flags (CFLAGS, CXXFLAGS) separately, now they are processed inseparably and the flags listed in CPPFLAGS are used as another source of compilation flags for languages ​​that support them;
  • The output of custom_target and custom_target[i] can now be used as arguments in the link_with and link_whole operations;
  • Added the ability to specify additional dependencies in generators using the "depends" option (for example, generator(program_runner, output: ['@[email protected]'], depends: exe));
  • Added static option to find_library to only search for statically linked libraries;
  • For python.find_installation, the ability to determine the presence of a given Python module for a specific version of Python has been added;
  • Added new unstable-kconfig module to parse kconfig files;
  • Added a new command "subprojects foreach" that takes a command with arguments and runs it in all subproject directories;

Source: opennet.ru

Add a comment