Wersja systemu kompilacji Meson 0.51

opublikowany kompilacja wersji systemu Mezon 0.51, 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ł).

Obsługiwana jest kompilacja krzyżowa i budowanie na systemach Linux, 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.51:

  • Dodano obsługę przejrzystego tworzenia istniejących projektów korzystających ze skryptów kompilacji CMake. Meson może teraz bezpośrednio budować proste podprojekty (takie jak pojedyncze biblioteki) przy użyciu modułu CMake, podobnie jak w przypadku standardowych podprojektów (w tym podprojekty CMake można umieszczać w katalogu podprojektów);
  • W przypadku wszystkich używanych kompilatorów wstępne testy obejmują montaż i wykonanie prostych plików testowych (sprawdzanie poprawności), nie ograniczając się do testowania flag określonych przez użytkownika dla kompilatorów krzyżowych (od teraz sprawdzane są również kompilatory natywne dla bieżącej platformy) .
  • Dodano możliwość definiowania opcji wiersza poleceń używanych podczas kompilacji krzyżowej, z powiązaniem poprzez określenie przedrostka platformy przed opcją. Poprzednio opcje wiersza poleceń dotyczyły tylko kompilacji natywnych i nie można było ich określić na potrzeby kompilacji krzyżowej. Opcje wiersza poleceń mają teraz zastosowanie niezależnie od tego, czy budujesz natywnie, czy kompilując krzyżowo, zapewniając, że kompilacje natywne i kompilacje krzyżowe dają identyczne wyniki;
  • Dodano możliwość określenia flagi „--cross-file” więcej niż raz w wierszu poleceń, aby wyświetlić wiele plików krzyżowych;
  • Dodano obsługę kompilatora ICL (Intel C/C++ Compiler) dla platformy Windows (ICL.EXE i ifort);
  • Dodano wstępną obsługę zestawu narzędzi dla CPU Xtensa (xt-xcc, xt-xc++, xt-nm);
  • Do obiektu „zależność” dodana została metoda „get_variable”, która umożliwia pobranie wartości zmiennej bez uwzględnienia rodzaju aktualnej zależności (np. dep.get_variable(pkg-config : 'var- nazwa”, cmake: „COP_VAR_NAME));
  • Dodano nowy argument opcji zestawu docelowego „link_language”, aby jawnie określić język używany podczas wywoływania konsolidatora. Na przykład główny program w języku Fortran mógłby wywołać kod C/C++, który automatycznie wybrałby C/C++, gdy powinien zostać użyty linker Fortran;
  • Zmieniono obsługę flag preprocesora CPPFLAGS. Podczas gdy Meson wcześniej przechowywał osobno CPPFLAGS i flagi kompilacji specyficzne dla języka (CFLAGS, CXXFLAGS), teraz są one przetwarzane nierozłącznie, a flagi wymienione w CPPFLAGS są używane jako kolejne źródło flag kompilacji dla języków, które je obsługują;
  • Dane wyjściowe funkcji niestandardowe_target i niestandardowe_target[i] mogą być teraz używane jako argumenty w operacjach link_with i link_whole;
  • Generatory mają teraz możliwość określenia dodatkowych zależności za pomocą opcji „zależy” (na przykład generator(program_runner, wyjście: ['@[email chroniony]'], zależy: exe));
  • Dodano opcję statyczną do find_library, aby umożliwić wyszukiwanie obejmujące tylko biblioteki połączone statycznie;
  • Dla python.find_installation dodano możliwość określenia obecności danego modułu Pythona dla konkretnej wersji Pythona;
  • Dodano nowy moduł niestabilny-kconfig do analizowania plików kconfig;
  • Dodano nowe polecenie „subprojects foreach”, które pobiera polecenie z argumentami i uruchamia je we wszystkich katalogach podprojektów;

Źródło: opennet.ru

Dodaj komentarz