Lançamento do sistema de montagem Meson 0.51

publicado versão do sistema de compilação mesa 0.51, que é usado para construir projetos como X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME e GTK+. O código Meson é escrito em Python e fornecido licenciado sob Apache 2.0.

O principal objetivo do desenvolvimento do Meson é fornecer alta velocidade no processo de montagem combinada com conveniência e facilidade de uso. Em vez do utilitário make, a compilação padrão usa o kit de ferramentas Ninja, mas também é possível usar outros backends, como xcode e VisualStudio. O sistema possui um manipulador de dependência multiplataforma integrado que permite usar o Meson para construir pacotes para distribuições. As regras de montagem são especificadas em uma linguagem simplificada específica do domínio, são altamente legíveis e compreensíveis para o usuário (conforme pretendido pelos autores, o desenvolvedor deve gastar um mínimo de tempo escrevendo regras).

Há suporte para compilação cruzada e construção em Linux, macOS e Windows usando GCC, Clang, Visual Studio e outros compiladores. É possível construir projetos em diversas linguagens de programação, incluindo C, C++, Fortran, Java e Rust. Há suporte para o modo de construção incremental, no qual apenas os componentes diretamente relacionados às alterações feitas desde a última construção são reconstruídos. O Meson pode ser usado para gerar compilações repetíveis, nas quais a execução da compilação em ambientes diferentes resulta na geração de arquivos executáveis ​​completamente idênticos.

O principal inovações Méson 0.51:

  • Adicionado suporte para construção transparente de projetos existentes que usam scripts de construção CMake. Meson agora pode construir diretamente subprojetos simples (como bibliotecas únicas) usando o módulo CMake, semelhante aos subprojetos padrão (incluindo subprojetos CMake podem ser colocados no diretório de subprojetos);
  • Para todos os compiladores usados, testes preliminares são incluídos através da montagem e execução de arquivos de teste simples (verificação de integridade), não se limitando a testar sinalizadores especificados pelo usuário para compiladores cruzados (a partir de agora, os compiladores nativos da plataforma atual também serão verificados) .
  • Adicionada a capacidade de definir opções de linha de comando usadas durante a compilação cruzada, com ligação especificando um prefixo de plataforma antes da opção. Anteriormente, as opções de linha de comando cobriam apenas compilações nativas e não podiam ser especificadas para compilação cruzada. As opções de linha de comando agora se aplicam independentemente de você estar compilando nativamente ou compilando cruzadamente, garantindo que compilações nativas e cruzadas produzam resultados idênticos;
  • Adicionada a capacidade de especificar o sinalizador “--cross-file” mais de uma vez na linha de comando para listar vários arquivos cruzados;
  • Adicionado suporte ao compilador ICL (Intel C/C++ Compiler) para plataforma Windows (ICL.EXE e ifort);
  • Adicionado suporte inicial ao kit de ferramentas para CPU Xtensa (xt-xcc, xt-xc++, xt-nm);
  • O método “get_variable” foi adicionado ao objeto “dependency”, que permite obter o valor de uma variável sem levar em conta o tipo da dependência atual (por exemplo, dep.get_variable(pkg-config : 'var- nome', cmake : 'COP_VAR_NAME));
  • Adicionado um novo argumento de opções de assembly de destino, "link_linguagem", para especificar explicitamente o idioma usado ao chamar o vinculador. Por exemplo, um programa Fortran principal poderia chamar código C/C++, que selecionaria automaticamente C/C++ quando o vinculador Fortran deveria ser usado;
  • O tratamento dos sinalizadores do pré-processador CPPFLAGS foi alterado. Enquanto Meson armazenava anteriormente CPPFLAGS e sinalizadores de compilação específicos de idioma (CFLAGS, CXXFLAGS) separadamente, eles agora são processados ​​inseparavelmente e os sinalizadores listados em CPPFLAGS são usados ​​como outra fonte de sinalizadores de compilação para idiomas que os suportam;
  • A saída de custom_target e custom_target[i] agora pode ser usada como argumentos nas operações link_with e link_whole;
  • Os geradores agora têm a capacidade de especificar dependências adicionais usando a opção “depends” (por exemplo, gerador(program_runner, saída: ['@[email protegido]'], depende: exe));
  • Adicionada uma opção estática para find_library para permitir que a pesquisa inclua apenas bibliotecas vinculadas estaticamente;
  • Para python.find_installation, foi adicionada a capacidade de determinar a presença de um determinado módulo Python para uma versão específica do Python;
  • Adicionado novo módulo instável-kconfig para analisar arquivos kconfig;
  • Adicionado um novo comando “subprojects foreach”, que pega um comando com argumentos e o executa em todos os diretórios do subprojeto;

Fonte: opennet.ru

Adicionar um comentário