U-Boot顶层Makefile:版本控制与构建配置解析

A análise do Makefile principal do U-Boot é essencial para compreender a estrutura e organização do projeto de build. Este arquivo, localizado no diretório raiz, contém as regras e definições centrais que orquestram todo o processo de compilação.

Definição da Versão

A identificação da versão do software é composta por três variáveis principais: VERSION (versão principal), PATCHLEVEL (nível de correção) e SUBLEVEL (subversão). Juntas, elas formam a string de versão completa, como "2020.01". A variável EXTRAVERSION fornece informações adicionais, e NAME está associada a uma designação.

Configuração do MAKEFLAGS

Para suportar a invocação recursiva de make, o sistema define a variável MAKEFLAGS. Esta variável permite passar opções para sub-processos make que compilam subdiretórios. Por exemplo, o comando $(MAKE) -C subdir inicia a compilação dentro do subdiretório "subdir".

Variáveis podem ser exportadas para os processos filhos usando export ou bloqueadas com unexport. As variáveis SHELL e MAKEFLAGS são automaticamente exportadas, a menos que explicitamente bloqueadas.

No Makefile do U-Boot, a configuração padrão é estendida:

MAKEFLAGS += -rR --include-dir=$(CURDIR)

Os sinalizadores -rR desativam regras e variáveis internas ebmutidas, enquanto --include-dir=$(CURDIR) especifica o diretório de busca por arquivos de inclusão.

Controle da Saída de Comandos

Durante a compilação, o U-Boot, por padrão, exibe versões simplificadas dos comandos. Para visualizar os comandos completos, útil para diagnóstico, define-se a variável V=1 na linha de comando.

A lógica no Makefile utiliza a função origin para verificar se V foi definida na linha de comando:

ifeq ($(origin V), command line)
  KBUILD_VERBOSE := $(V)
endif
ifndef KBUILD_VERBOSE
  KBUILD_VERBOSE := 0
endif

Com base em KBUILD_VERBOSE, as variáveis de controle quiet e Q são ajustadas. Se V=1, KBUILD_VERBOSE torna-se 1, deixando quiet e Q vazias, o que resulta na saída de comandos completos. Se V não for definido ou for 0, quiet assume o valor quiet_ e Q torna-se @, suprimindo a saída dos comandos reais.

Muitas regras no Makefile usam pares de comandos, como quiet_cmd_sym e cmd_sym. A variável quiet determina qual versão é impressa: vazia para a versão completa, quiet_ para a versão reduzida, e silent_ para nenhuma saída.

Tags: U-Boot Makefile Build System version control command output

Publicado em 6-8 06:48 por Thomas