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

Материал из Викиновостей, свободного источника новостей

17 июня 2019 года

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

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

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

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

  • Добавлена поддержка прозрачной сборки существующих проектов, в которых используются сборочные сценарии CMake. Meson теперь напрямую может собирать простые субпроекты (такие как одиночные библиотеки) с использованием модуля CMake по аналогии со штатными субпроектами (в том числе субпроекты на CMake могут размещаться в каталоге subprojects );
  • Для всех применяемых компиляторов включено предварительное тестирование через сборку и исполнение простейших тестовых файлов (sanity check), не ограничиваясь тестированием указанных пользователем флагов для кросс-компиляторов (отныне проверяются и родные для текущей платформы компиляторы).
  • Добавлена возможность определения опций командной строки, применяемых при кросс-компиляции, с привязкой через задание префикса платформы перед опцией. Ранее опции командной строки охватывали только сборку для родной платформы и не могли указываться для кросс-компиляции. Теперь опции командной строки применяются независимо от того осуществляется нативная сборка или кросс-компиляция, гарантируя, что для нативных и кросс-сборок будет получен идентичный результат;
  • Добавлена возможность указания флага "--cross-file" более одного раза в командной строке для перечисления нескольких cross-файлов;
  • Добавлена поддержка компилятора ICL (Intel C/C++ Compiler) для платформы Windows (ICL.EXE и ifort);
  • Добавлена начальная поддержка инструментария для CPU Xtensa (xt-xcc, xt-xc++, xt-nm);
  • В объект "dependency" добавлен метод "get_variable", позволяющий получить значение переменной без учёта типа текущей зависимости (например, dep.get_variable(pkg-config : 'var-name', cmake : 'COP_VAR_NAME));
  • Добавлен новый аргумент параметров целевой сборки - "link_language" для явного определения языка, используемого при вызове компоновщика. Например, основная программа на Fortran, может вызывать код на C/C++, что приведёт к автоматическому выбору C/C++, в том время как нужно использовать компоновщик от Fortran;
  • Изменена обработка флагов препроцессора CPPFLAGS. Если раньше Meson отдельно сохранял CPPFLAGS и специфичные для языков флаги компиляции (CFLAGS, CXXFLAGS), то теперь они обрабатываются нераздельно и перечисленные в CPPFLAGS флаги применяются как ещё один источник флагов компиляции для языков, которые их поддерживают;
  • Вывод custom_target и custom_target[i] теперь может использоваться в качестве аргументов в операциях link_with и link_whole;
  • В генераторах добавлена возможность задания дополнительных зависимостей при помощи опции "depends" (например, generator(program_runner, output: ['@BASENAME@.c'], depends: exe));
  • В find_library добавлена опция static для охвата поиском только статически связанных библиотек;
  • Для python.find_installation добавлена возможность определения наличия заданного Python-модуля для конкретной версии Python;
  • Добавлен новый модуль unstable-kconfig для разбора файлов kconfig;
  • Добавлена новая команда "subprojects foreach", принимающая команду с аргументами и запускающая её во всех каталогах субпроектов;

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


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

Комментарии[править]

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