Meson build system versiunea 0.52

publicat lansarea sistemului de construire Mezon 0.52, care este folosit pentru a construi proiecte precum X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME și GTK+. Codul Meson este scris în Python și furnizat licențiat sub Apache 2.0.

Scopul cheie al dezvoltării Meson este de a oferi o viteză mare a procesului de asamblare, combinată cu comoditate și ușurință în utilizare. În loc de utilitarul make, versiunea implicită folosește setul de instrumente Ninja, dar este posibil să folosiți și alte backend-uri, cum ar fi xcode și VisualStudio. Sistemul are încorporat un handler de dependență multiplatformă care vă permite să utilizați Meson pentru a construi pachete pentru distribuții. Regulile de asamblare sunt specificate într-un limbaj simplificat specific domeniului, sunt foarte lizibile și ușor de înțeles pentru utilizator (așa cum intenționează autorii, dezvoltatorul ar trebui să petreacă un minim de timp scriind reguli).

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

Principalul inovații Meson 0.52:

  • Добавлена экспериментальная поддержка Webassembly с использованием в качестве компилятора Emscripten;
  • Существенно улучшена и доведена до рабочего состояния поддержка платформ Illumos и Solaris;
  • Обеспечено игнорирование сценариев интернационализации на базе gettext в случае отсутствия в системе установленного инструментария gettext (ранее при использовании модуля i18n на системах без gettext выводилась ошибка);
  • Улучшена поддержка статических библиотек. Решены многие проблемы при использовании деинсталлированных статических библиотек;
  • Добавлена возможность использования словарей для назначения переменных окружения. При вызове environment() в качестве первого элемента теперь можно указать словарь, в котором переменные окружения определены в форме ключ/значение. Данные переменные будут перенесены в environment_object как если бы они по отдельности устанавливались через метод set(). Словари также теперь могут передаваться в различные функции, поддерживающие аргумент «env»;
  • Добавлена функция «runtarget alias_target(target_name, dep1, …)», создающая новую сборочную цель первого уровня, которую можно вызывать с выбранным сборочным бэкендом (например, «ninja target_name»). Данная сборочная цель не запускает никакие команды, но обеспечивает сборку всех зависимостей;
  • Обеспечена автоматическая установка переменной окружения PKG_CONFIG_SYSROOT_DIR при кросс-компиляции при наличии настройки sys_root в секции «[properties]»;
  • Добавлена опция «—gdb-path» для определения пути к отладчику GDB при указании опции «—gdb testname» для запуска GDB с указанным тестовым сценарием;
  • Добавлено автоматическое определение сборочной цели clang-tidy для запуска этого linter-а со всеми исходными файлами. Цель создаётся при наличии в системе clang-tidy и определении в корне проекта файла «.clang-tidy» (или «_clang-tidy»);
  • Добавлена зависимость dependency(‘blocks’) для использования в Clang расширения Blocuri;
  • Разделены представления компоновщика и компилятора, что позволяет использовать разные сочетания компиляторов и компоновщиков;
  • В объекты SourceSet добавлен метод all_dependencies() в дополнение к методу all_sources();
  • В run_project_tests.py появилась опция «—only» для выборочного запуска тестов (например, «python run_project_tests.py —only fortran python3»);
  • В функции find_program() добавлена возможность поиска только требуемых версий программы (версия определяется через запуск программы с опцией «—version»);
  • Для управления экспортом символов в функцию shared_module() по аналогии с shared_library() добавлена опция vs_module_defs;
  • Расширены возможности модуля kconfig, который теперь поддерживает configure_file() для определения входного файла;
  • В configure_file() добавлена возможность указания нескольких входных файлов для обработчиков «command:»;
  • Команда «dist» для создания архива переведена в разряд команд первого уровня (ранее команда была привязана к ninja). Добавлена опция «—formats» для определения типов создаваемых архивов (например,
    «meson dist —formats=xztar,zip»).

Sursa: opennet.ru

Adauga un comentariu