A sintaxe do arquivo .config
é compatível com o make; por exemplo, uma linha como CONFIG_CRC16=m
define a variável de criação CONFIG_CRC16
para o valor m
. É analisado por make e incluído indiretamente no nível superior Makefile
:
-
Makefile
contém-include include/config/auto.conf
-
include/config/auto.conf
é criado ao chamar recursivamente o nível superiorMakefile
nasilentoldconfig
de destino.
A compilação condicional de arquivos é feita principalmente com nomes de alvos: makefiles incluem regras como
obj-$(CONFIG_CRC16) += crc16.o
O destino obj-y
, portanto, cria todos os objetos que são habilitados como internos por uma opção de configuração, e obj-m
cria todos os objetos que estão habilitados como módulos. Há também diretivas condicionais nos makefiles para casos mais complexos.
Para compilação condicional na linguagem C, os arquivos de origem C incluem include/generated/autoconf.h
, que contém linhas como #define CONFIG_CRC16_MODULE 1
. Este arquivo é gerado a partir de include/config/auto.conf
pelos programas invocados pelos xxxconfig
targets ( scripts/kconfig/conf
para destinos de lote como oldconfig
, scripts/kconfig/qconf
para xconfig
, etc.); o código fonte para isso é scripts/kconfig/confdata.c
, que faz um processamento de texto muito simples.