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

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3255
Зарегистрирован: 20.08.2022

#

Выпуск сборочной системы Meson 1.3
Дата публикации:Mon, 20 Nov 2023 10:19:14 +0300




Опубликован релиз сборочной системы Meson 1.3.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.3:
  • В методы проверки компилятора compiler.compiles(), compiler.links() и compiler.run() добавлена опция "werror: true", при которой предупреждения компилятора трактуются как ошибки (можно использовать для проверки, что код собирается без предупреждений).

    Добавлен метод has_define для проверки определения символа препроцессором.

    В configure_file() добавлен параметр macro_name, добавляющий в вывод макрозащиту двойного подключения через "#include" ("#include guards"), оформленную в стиле макросов на языке Си (упрощает создание configure-файлов с динамическими именами макросов).

    В configure_file() добавлен новый формат вывода (output_format) - JSON.

    В параметры c_std и cpp_std добавлена возможность использования списков значений (например, "default_options: 'c_std=gnu11,c11'").

    В модулях, использующих CustomTarget для обработки файлов, добавлена возможность кастомизации сообщений, выводимых утилитой ninja.

    Объявлена устаревшей сборочная цель (build_target) "jar", вместо которой рекомендуется применять вызов "jar()".

    В метод generator.process() добавлен параметр 'env' для выставления переменной окружения через которую генератор будет обрабатывать ввод.

    При задании имён целей сборки, связанных с исполняемыми файлами, разрешено указание суффиксов, например "exectuable('foo', 'main.c', name_suffix: 'bar')" для генерации дополнительных исполняемых файлов в том же каталоге.

    В функцию exectuable() добавлен параметр "vs_module_defs" для использования def-файла, определяющего список функций, передаваемых в shared_module().
    В функцию find_program() добавлен параметр 'default_options' для задания опций по умолчанию для запасного субпроекта (fallback).

    Добавлен метод fs.relative_to(), возвращающий относительный путь для первого аргумента, относительно второго, если первый путь существует. Например, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".

    В функции install_data(), install_headers() и install_subdir() добавлен параметр follow_symlinks, при выставлении которого обеспечивается следование по символическим ссылкам.

    В метод int.to_string() добавлен параметр "fill" для добавочного заполнения строки начальными нулями. Например, вызов message(n.to_string(fill: 3)) для n=4 сформирует строку "004".

    Добавлена новая сборочная цель clang-tidy-fix, определяющая запуск
    утилиты clang-tidy с флагом "-fix".

    В команду compile добавлена возможность указания суффикса (TARGET_SUFFIX) для сборочной цели ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]).

    Добавлена переменная окружения MESON_PACKAGE_CACHE_DIR для переопределения пути к кэшу пакетов (subprojects/packagecache).

    Добавлена опция "meson setup --clearcache" для очистки постоянного кэша.

    Во все методы "has_*" проверки компилятора добавлена поддержка ключевого слова "required", например вместо "assert(cc.has_function('some_function'))" теперь можно указывать "cc.has_function('some_function', required: true)".

    В функции shared_library(), static_library(), library() и shared_module() добавлено новое ключевое слово rust_abi, которое следует использовать вместо устаревшего rust_crate_type.


Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=60148

Жизнь за Нер'зула!

Ответить