Выпуск зборачнай сістэмы Meson 0.51

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

Ключавой мэтай развіцця Meson з'яўляецца забеспячэнне высокай хуткасці зборачнага працэсу ў спалучэнні з зручнасцю і прастатой выкарыстання. Замест утыліты make пры зборцы па змаўчанні прымяняецца інструментарый. ніндзя, але магчыма ўжыванне і іншых бэкэндаў, такіх як 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: ['@[электронная пошта абаронена]'], depends: exe));
  • У find_library дададзена опцыя static для ахопу пошукам толькі статычна злучаных бібліятэк;
  • Для python.find_installation дададзена магчымасць вызначэння наяўнасці зададзенага Python-модуля для канкрэтнай версіі Python;
  • Дададзены новы модуль unstable-kconfig для разбору файлаў kconfig;
  • Дададзена новая каманда "subprojects foreach", якая прымае каманду з аргументамі і запускае яе ва ўсіх каталогах субпраектаў;

Крыніца: opennet.ru

Дадаць каментар