Выпуск сборочной системы Meson 1.0

Опубликован релиз сборочной системы Meson 1.0.0, которая используется для сборки таких проектов, как X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME и GTK. Код Meson написан на языке Python и поставляется под лицензией Apache 2.0.

Ключевой целью развития Meson является обеспечение высокой скорости сборочного процесса в сочетании с удобством и простотой использования. Вместо утилиты make при сборке по умолчанию применяется инструментарий Ninja, но возможно применение и других бэкендов, таких как xcode и VisualStudio. В систему встроен многоплатформенный обработчик зависимостей, позволяющий использовать Meson для сборки пакетов для дистрибутивов. Правила сборки задаются на упрощённом предметно-ориентированном языке, отличаются хорошей читаемостью и понятны пользователю (по задумке авторов разработчик должен тратить минимум времени на написание правил).

Поддерживается кросс-компиляция и сборка в Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS и Windows с использованием GCC, Clang, Visual Studio и других компиляторов. Возможна сборка проектов на различных языках программирования, включая C, C++, Fortran, Java и Rust. Поддерживается инкрементальный режим сборки, при котором пересобираются только компоненты, напрямую связанные с изменениями, внесёнными с момента прошлой сборки. Meson можно использовать для формирования повторяемых сборок, при которых запуск сборки в разных окружениях приводит к генерации полностью идентичных исполняемых файлов.

Основные новшества Meson 1.0:

  • Объявлен стабильным модуль для сборки проектов на языке Rust. Данный модуль используется в проекте Mesa для сборки компонентов, написанных на Rust.

  • В параметре prefix, поддерживаемом в большинстве функций проверки компилятора, реализована возможность обработки массивов помимо строк. Например, теперь можно указывать:
       cc.check_header('GL/wglew.h', prefix : ['#include ‹windows.h›', '#include ‹GL/glew.h›'])
    
  • Добавлен новый аргумент »--workdir», позволяющий переопределить рабочий каталог. Например, для использования текущего каталога вместо рабочего можно запустить:
       meson devenv -C builddir --workdir . 
    
  • Предложены новые операторы «in» и «not in» для определения вхождения в строку подстроки по аналогии с ранее доступной проверкой вхождения элемента в массив или словарь. Например:
       fs = import('fs')
       if 'something' in fs.read('somefile')
         # True
       endif
    
  • Добавлена опция «warning-level=everything», включающая вывод всех имеющихся предупреждений компилятора (в clang и MSVC использует -Weverything и /Wall, а в GCC раздельно включаются предупреждения, примерно соответствующие режиму -Weverything вclang).

  • В методе rust.bindgen реализована возможность обработки аргумента «dependencies» для передачи путей к зависимостям, которые должны быть обработаны компилятором.

  • Объявлена устаревшей функция java.generate_native_headers, которая переименована в java.native_headers для соответствия общему стилю наименования функций, принятому в Meson.



Источник: http://www.opennet.ru/opennews/art.shtml? num=58382

© OpenNet