Выпуск сборочной системы Meson 0.49.0
Представлен релиз сборочной системы Meson 0.49, которая используется для сборки таких проектов, как X.Org Server, Mesa, Lighttpd, systemd, GStreamer, GNOME и GTK+. Вчера о поддержке Meson объявили разработчики Wayland и композитного сервера Weston (поддержку autotools планируют прекратить в течение следующего года). Код Meson написан на языке Python и поставляется под лицензией Apache 2.0.
Ключевыми целями развития Meson является обеспечение высокой скорости сборочного процесса в сочетании с удобством и простотой использования. Вместо утилиты make при сборке применяется инструментарий Ninja. В систему встроен многоплатформенный обработчик зависимостей, позволяющий использовать Meson для сборки пакетов для дистрибутивов. Правила сборки задаются на упрощённом предметно-ориентированном языке, отличаются хорошей читаемостью и понятны пользователю (по задумке авторов разработчик должен тратить минимум времени на написание правил).
Поддерживается кросс-компиляция и сборка в Linux, macOS и Windows с использованием GCC, Clang, Visual Studio и других компиляторов. Возможна сборка проектов на различных языках программирования, включая C, C++, Fortran, Java и Rust. Поддерживается инкрементальный режим сборки, при котором пересобираются только компоненты, напрямую связанные с изменениями, внесёнными с момента прошлой сборки. Meson можно использовать для формирования повторяемых сборок, при которых запуск сборки в разных окружениях приводит к генерации полностью идентичных исполняемых файлов.
Основные новшества, появившиеся в выпуске Meson 0.49:
- Реализованы новые команды: «meson subprojects download» (загрузка субпроекта), «meson subprojects update» (обновление всех субпроектов) и «meson subprojects checkout» для выполнения операции checkout или создания ветки во всех Git-субпроектах.
- Добавлено новое ключевое слово «section», применимое к сборочным опциям, которое позволяет интегрированным средам разработки группировать опции по аналогии с командой «meson configure». В «section» допустимо указания следующих значений: core, backend, base, compiler, directory, user, test;
- В объект «compiler» добавлен метод get_argument_syntax для проверки поддержки компилятором расширенных опций gcc и msvc;
- Добавлена возможность передачи аргументов в функции и методы в форме словарей (ассоциативных массивов);
- В циклы foreach добавлена поддержка ключевых слов break и continue;
- Добавлен оператор »/» для соединения путей (вместо join_paths ('foo', 'bar') теперь можно указывать 'foo' / 'bar');
- Добавлена поддержка кросс-компиляции для чипов Renesas RX, используя компилятор CC-RX;
- Добавлена опция «b_pie» и ключевое слово «pie» для формирования исполняемых файлов в режиме PIE (position-independent executables);
- Обеспечена возможность выполнения команды «meson introspect --projectinfo » без наличия настроенного сборочного каталога;
- При определении зависимости dependency ('libgcrypt') в случае отсутствия pkg-config теперь выполняется поиск файлов libgcrypt-config.
© OpenNet