Wersja systemu kompilacji Meson 0.52

opublikowany kompilacja wersji systemu Mezon 0.52, który służy do budowania projektów takich jak X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME i GTK+. Kod Mesona jest napisany w Pythonie i dostarczane na licencji Apache 2.0.

Kluczowym celem rozwoju Mesona jest zapewnienie dużej szybkości procesu montażu w połączeniu z wygodą i łatwością obsługi. Zamiast narzędzia make domyślna kompilacja korzysta z zestawu narzędzi Ninja, ale możliwe jest również użycie innych backendów, takich jak xcode i VisualStudio. System posiada wbudowany wieloplatformowy moduł obsługi zależności, który pozwala używać Mesona do budowania pakietów dla dystrybucji. Reguły asemblera są określone w uproszczonym, specyficznym dla domeny języku, są bardzo czytelne i zrozumiałe dla użytkownika (zgodnie z zamierzeniami autorów programista powinien poświęcić minimum czasu na pisanie reguł).

Utrzymany kompiluj krzyżowo i buduj na systemach Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS i Windows przy użyciu GCC, Clang, Visual Studio i innych kompilatorów. Możliwe jest budowanie projektów w różnych językach programowania, m.in. C, C++, Fortran, Java i Rust. Obsługiwany jest tryb kompilacji przyrostowej, w którym odbudowywane są tylko komponenty bezpośrednio związane ze zmianami wprowadzonymi od czasu ostatniej kompilacji. Meson można wykorzystać do generowania powtarzalnych kompilacji, w których uruchomienie kompilacji w różnych środowiskach skutkuje wygenerowaniem całkowicie identycznych plików wykonywalnych.

Głównym innowacje Mezon 0.52:

  • Dodano eksperymentalne wsparcie dla Webassembly przy użyciu Emscripten jako kompilatora;
  • Znacząco poprawiono obsługę platform Illumos i Solaris i doprowadzono do stanu używalności;
  • Zapewnia ignorowanie skryptów internacjonalizacji opartych na gettext, jeśli w systemie nie jest zainstalowany zestaw narzędzi gettext (poprzednio podczas korzystania z modułu i18n na systemach bez gettext wyświetlał się błąd);
  • Ulepszona obsługa bibliotek statycznych. Rozwiązano wiele problemów podczas korzystania z odinstalowanych bibliotek statycznych;
  • Dodano możliwość używania słowników do przypisywania zmiennych środowiskowych. Podczas wywoływania metody Environment() można teraz określić pierwszy element jako słownik, w którym zmienne środowiskowe są zdefiniowane w formie klucz/wartość. Zmienne te zostaną przesłane do środowiska_obiektu tak, jakby były indywidualnie ustawione za pomocą metody set(). Słowniki można teraz także przekazywać do różnych funkcji obsługujących argument „env”;
  • Dodano funkcję „runtarget alias_target(target_name, dep1, ...)”, która tworzy nowy cel kompilacji pierwszego poziomu, który można wywołać za pomocą wybranego backendu kompilacji (np. „ninja target_name”). Ten cel kompilacji nie uruchamia żadnych poleceń, ale zapewnia zbudowanie wszystkich zależności;
  • Włączono automatyczne ustawienie zmiennej środowiskowej PKG_CONFIG_SYSROOT_DIR podczas kompilacji krzyżowej, jeśli w sekcji „[właściwości]” znajduje się ustawienie sys_root;
  • Dodano opcję „--gdb-path” umożliwiającą określenie ścieżki do debuggera GDB podczas określania opcji „--gdb nazwa_testu” w celu uruchomienia GDB z określonym skryptem testowym;
  • Dodano automatyczne wykrywanie celu kompilacji, aby uruchomić ten linter ze wszystkimi plikami źródłowymi. Cel tworzony jest, jeśli w systemie dostępny jest clang-tidy i w katalogu głównym projektu zdefiniowany jest plik „.clang-tidy” (lub „_clang-tidy”);
  • Dodano zależność („bloki”) do użycia w rozszerzeniu Clang Bloki;
  • Widoki konsolidatora i kompilatora są oddzielone, co pozwala na użycie różnych kombinacji kompilatorów i linkerów;
  • Dodano metodę all_ zależność() do obiektów SourceSet jako dodatek do metody all_sources();
  • W run_project_tests.py dodano opcję „--only” umożliwiającą selektywne uruchamianie testów (na przykład „python run_project_tests.py —only fortran python3”);
  • Funkcja find_program() ma teraz możliwość wyszukiwania tylko wymaganych wersji programu (wersję ustala się uruchamiając program z opcją „-version”);
  • Aby kontrolować eksport symboli, do funkcjishared_module() dodano opcję vs_module_defs, podobną do share_library();
  • Moduł kconfig został rozszerzony o obsługę konfiguracji_file() służącej do określania pliku wejściowego;
  • Dodano możliwość określenia wielu plików wejściowych dla programów obsługi „polecenie:” do konfiguracji_pliku();
  • Polecenie „dist” służące do tworzenia archiwum zostało przeniesione do kategorii poleceń pierwszego poziomu (wcześniej polecenie było powiązane z ninja). Dodano opcję „--formats” umożliwiającą zdefiniowanie typów archiwów, które mają zostać utworzone (na przykład
    „meson dist -formats=xztar,zip”).

Źródło: opennet.ru

Dodaj komentarz