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 :
-
Makefilecontém-include include/config/auto.conf -
include/config/auto.confé criado ao chamar recursivamente o nível superiorMakefilenasilentoldconfigde 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.