Meson build system release 0.52

Published build system release table 0.52, 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).

Supported by cross-compile and build on Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, 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. Incremental build mode is supported, in which only components directly related to changes made since the last build are rebuilt. Meson can be used to generate repeatable builds, in which running the build in different environments results in the generation of completely identical executable files.

All innovations Meson 0.52:

  • Added experimental support for Webassembly using Emscripten as a compiler;
  • Support for the Illumos and Solaris platforms has been significantly improved and brought to working condition;
  • Ensures that gettext-based internationalization scripts are ignored if the system does not have the gettext toolkit installed (previously, an error was displayed when using the i18n module on systems without gettext);
  • Improved support for static libraries. Many problems when using uninstalled static libraries have been resolved;
  • Added the ability to use dictionaries to assign environment variables. When calling environment(), the first element can now be specified as a dictionary in which environment variables are defined in key/value form. These variables will be transferred to environment_object as if they were individually set via the set() method. Dictionaries can also now be passed to various functions that support an "env" argument;
  • Added function "runtarget alias_target(target_name, dep1, ...)" that creates a new first-level build target that can be called with the selected build backend (e.g. "ninja target_name"). This build target does not run any commands, but ensures that all dependencies are built;
  • Enabled automatic setting of the PKG_CONFIG_SYSROOT_DIR environment variable during cross-compilation if there is a sys_root setting in the “[properties]” section;
  • Added "--gdb-path" option to determine the path to the GDB debugger when specifying the "--gdb testname" option to run GDB with the specified test script;
  • Added automatic detection of the clang-tidy build target to run this linter with all source files. The target is created if clang-tidy is available in the system and the “.clang-tidy” (or “_clang-tidy”) file is defined in the project root;
  • Added dependency('blocks') for use in the Clang extension Blocks;
  • The linker and compiler views are separated, allowing different combinations of compilers and linkers to be used;
  • Added all_dependencies() method to SourceSet objects in addition to all_sources() method;
  • In run_project_tests.py, the “--only” option has been added to selectively run tests (for example, “python run_project_tests.py —only fortran python3”);
  • The find_program() function now has the ability to search only for required versions of a program (the version is determined by running the program with the “-version” option);
  • To control the export of symbols, the vs_module_defs option has been added to the shared_module() function, similar to shared_library();
  • The kconfig module has been expanded to support configure_file() for specifying an input file;
  • Added the ability to specify multiple input files for “command:” handlers to configure_file();
  • The “dist” command for creating an archive has been moved to the category of first-level commands (previously the command was tied to ninja). Added "--formats" option to define the types of archives to be created (for example,
    "meson dist -formats=xztar,zip").

Source: opennet.ru

Add a comment