| Primer do Projeto de Documentação do FreeBSD para novos colaboradores | ||
|---|---|---|
| Anterior | Capítulo 7. O processo de construção da documentação | Próxima |
Isto é melhor explicado pela inspeção no código. Aqui estão os arquivos include do sistema:
doc.project.mk é o principal arquivo include do projeto, que inclue todos os arquivos includes necessários.
doc.subdir.mk segura sair da árvore de documentação durante o processo de construção e instalação.
doc.install.mk forcene as variáveis que afetam a posse e a instalação de documentos.
doc.docbook.mk é incluído se o DOCFORMAT for docbook e o DOC estiver configurado.
Por inspeção:
DOCFORMAT?= docbook
MAINTAINER?= doc@FreeBSD.org
PREFIX?= /usr/local
PRI_LANG?= en_US.ISO8859-1
.if defined(DOC)
.if ${DOCFORMAT} == "docbook"
.include "doc.docbook.mk"
.endif
.endif
.include "doc.subdir.mk"
.include "doc.install.mk"
DOCFORMAT e MAINTAINER serão atribuídos valores padrão, se estes não forem configuradores pelo arquivo de documento do make.
PREFIX é o caminho que os aplicativos de construção da documentação estão instalados. Para uma instalação normal de pacotes e port, este caminho também é /usr/local.
PRI_LANG deve ser configurado para qualquer linguagem e codificar é natural entre usuários destes documentos em sua construção. US English (Inglês) é o padrão.
Nota: PRI_LANG de maneira alguma pode afetar os documentos, ou se forem, é para serem criados. Seu uso principal é criar links de referências comuns aos documentos no projeto de documentação do FreeBSD instalado na raíz.
A linha .if defined(DOC) é um exemplo da condicional do make, como em outros programas, define o comportamento se algumas condições é verdadeira ou se é falsa. defined é a função que retorna se a variável passada está definida ou não.
A seguir, .if ${DOCFORMAT} == "docbook", teste se a variável DOCFORMAT é "docbook", e neste caso, inclue o doc.docbook.mk.
Os dois .endifs fecham as duas condições anteriores, marcando o fim da sua aplicação.
Isto é muito longo para ser explicado por inspeção, você deverá estar apto a trabalhar com isto com o conhecimento adquirido nos capítulos anteriores, e uma pequena ajuda será dada aqui.
SUBDIR é a lista de subdiretórios em que o processo de construção deve feito abaixo.
ROOT_SYMLINKS é o nome dos diretórios que devem ser linkados a raíz de instalação do documento em sua localização atual, se a linguagem atual é a linguagem primária (especificado por PRI_LANG).
COMPAT_SYMLINK é descrito na seção Subdiretório Makefiles.
Dependências são descritas por target: dependência1 dependência2 ... , onde para construir o target, você necessita primeiramente construir as dependências dadas.
Em seguida a tupla descritiva, instruções em como construir o target pode ser dada, se o processo de conversão entre o target e estas dependências não forem previamente definidas, ou se esta conversão particular não for a mesma que o método de conversão padrão.
A dependência especial .USE define o equivalente ao macro.
_SUBDIRUSE: .USE
.for entry in ${SUBDIR}
@${ECHO} "===> ${DIRPRFX}${entry}"
@(cd ${.CURDIR}/${entry} && \
${MAKE} ${.TARGET:S/realpackage/package/:S/realinstall/install/} DIRPRFX=${DIRPRFX}${entry}/ )
.endfor
Acima, _SUBDIRUSE é agora um macro que irá executar comandos passados quando for listado como dependência.
O que configura este macro a parte de outros targets? Basicamente, é executado após as instruções passadas no processo de construção, são listados como uma dependência, e não o configura o .TARGET, que é a variável que contém o nome do target atual está sendo construído.
clean: _SUBDIRUSE
rm -f ${CLEANFILES}
Acima, o clean irá usar o macro _SUBDIRUSE depois de ter executado a instrução rm -f ${CLEANFILES}. De fato, isto causa um clean na árvore de diretório, deletando arquivos construídos enquanto vai descendo aos subdiretórios.
install e package, ambos vão abaixo na árvore de diretório requisitando a real versão deles nos subdiretórios. (realinstall e realpackage respectivamente)
O clean remove arquivos criados pelo processo de compilação (e também desce na árvore de diretórios também). O cleandir faz a mesma coisa, e também remove o diretório de objetos se este existir.
exists é outra função condicional que retorna verdadeiro se o arquivo dado existir.
empty retorna verdadeiro se a variável passada estiver vazia.
target retorna verdadeiro se o target passado já não existir.
.for fornece uma maneira de repetir instruções definidas para cada elemente separado por espaço em uma variável. Ele faz isso atribuíndo uma variável para conter o elemento atual na lista que está sendo examinada.
_SUBDIRUSE: .USE
.for entry in ${SUBDIR}
@${ECHO} "===> ${DIRPRFX}${entry}"
@(cd ${.CURDIR}/${entry} && \
${MAKE} ${.TARGET:S/realpackage/package/:S/realinstall/install/} DIRPRFX=${DIRPRFX}${entry}/ )
.endfor
Acima, se o SUBDIR está vazio, nenhuma ação é feita; se ele tiver um ou mais elementos, as instruções entre o .for e o .endfor repetiria para cada elemento, com o entry sendo substituída com o valor do elemento atual.
Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.