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

11 марта 2019 года

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

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


project('tutorial', 'c')
executable('demo', 'main.c')

или более сложный вариант с зависимостью от GTK3:


project('tutorial', 'c')
gtkdep = dependency('gtk+-3.0')
executable('demo', 'main.c', dependencies : gtkdep)

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

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

  • Добавлена поддержка развиваемых компанией NVIDIA компиляторов PGI для языков C, C++ и Fortran, а также компилятора Flang;
  • Добавлена поддержка расширения coarray для параллельного программирования на языке Fortran, стандартизированного в спецификациях Fortran 2008 и Fortran 2018. В коде для разбора зависимостей также представлена начальная поддержка субмодулей для Fortran, определяемых при помощи выражения "submodule";
  • Обеспечена возможность указания пути к каталогу с модулями для системы CMake в составе зависимостей. Бэкенд для определения зависимостей через CMake теперь может использовать существующие файлы Find{name}.cmake через указание свойства make_module_path в dependency(). Также добавлена поддержка передачи CMake дополнительных параметров при помощи опции cmake_args;
  • Значение libdir при кросс-компиляции теперь указывает на каталог "/lib", а не на специфичные для выбранной архитектуры пути (например "lib/x86_64-linux-gnu");
  • В сборочные файлы добавлена новая секция "[paths]" для определения постоянных путей, таких как prefix и libdir;
  • Добавлен режим "warning_level 0" для отключения в компиляторе любых проверок, связанных со статическим анализом кода;
  • Добавлена встроенная сборочная цель (ninja clang-format) для форматирования кода при помощи clang-format;
  • Реализована возможность указания в ключевом слове include_directories строковых значений, а не только объектов, ссылающихся на каталоги;
  • Для языков C, C++ и Fortran добавлена поддержка обработчиков формата для обмена научными данными NetCDF через вызов pkg-config;
  • Добавлена поддержка формата HDF5 через вызов pkg-config;
  • Добавлена поддержка компиляции кода NVIDIA CUDA (пока только при помощи бэкенда на базе Ninja). Так как компилятор CUDA не сохраняет файлы с зависимостями (*.d), отслеживание зависимостей не поддерживается;
  • Расширены возможности интроспекции. Обеспечена генерация файла meson-info.json при каждом запуске meson. Добавлена поддержка инроспектирования разом нескольких параметров. Реализована возможность выполнения "introspect --targets" и "introspect --buildoptions" без настроенного сборочного каталога. Добавлена команда "introspect --scan-dependencies" для поиска зависимостей в проекте;
  • Добавлена функциональность для изменения файлов meson.build при выполнении операций в командной строке. Например, можно добавлять и исключать исходные файлы и сборочные цели (target), изменять наборы kwargs и модифицировать применяемые по умолчанию сборочные опции.

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Выпуск сборочной системы Meson 0.50», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.