[docs] Re: Literate programming for Makefiles
Oleg A. Paraschenko
olpa на xmlhack.ru
Вт Ноя 4 23:49:03 MSK 2003
Привет!
Всё, последнее на сегодня письмо. Больше не буду.
...
> > >
> > > Во, ещё придумал:
> > >
> ...
> >
> > И ещё:
> ...
>
> И ещё:
>
Теперь, после написания тестового LP-make-файла, я понял, чем _мне_ не нравится текущая версия LP: она эффективно прячет от меня комментарии и сильно усложняет кодирование, тем самым являясь DP (deliterative programming).
* В самом make-файле комментариев больше нет (<alt:doc/> удалён). Внутри .litprog надо продираться через россыпь тегов. А на каждый чих запускать обозреватель не хочется.
* С кодом такая проблема, что он не основан на XML. Из-за этого вместо
$(PROC) -o $@ $(STYLE) $<
приходится писать
$(PROC) -o $@ $(STYLE) $<
Язык и так птичий, а тут ещё и про сущности надо не забывать.
-------
Далее в основном для Vyt'a.
Для теста я создал "Makefile.litprogmain.litprog" (в cvs). В основном он повторяет "makefile.makefile", только с дополнительной хитростью:
<alt:doc>
<para>Автоматически перегенерирует make-файлы, если их LP-версия обновились.
Благодаря этому, изменения можно вносить непосредственно в .litprog-файлы,
не задумываясь о перегенерации вручную. Детали процесса описаны в
<quote>GNU make manual</quote> в разделе
<quote>How Makefiles Are Remade</quote>.</para>
<para>Этот файл содердит в себе <literal>litprogmain</literal> вместо
простого <literal>litprog</literal>, потому что в противном случае из
<filename>Makefile.litprog.litprog</filename> получалось бы
<filename>Makefile.litprog</filename>, но этот файл есть
LP-версия файла <filename>Makefile</filename>.</para>
</alt:doc>
В первый раз Makefile.litprogmain надо создать вручную:
-- <Makefile.litprogmain>
# Published under terms of GNU GPL version 2 (http://www.gnu.org/licenses/gpl.h
# $Id: Makefile.litprogmain.litprog,v 1.1.2.2 2003/11/04 20:24:30 olpa Exp $
PROC = xsltproc --nonet --xinclude
STYLE = ../xsl/common/litprog.xsl
$(MAKEFILES_DIR)/Makefile%: $(MAKEFILES_DIR)/Makefile%.litprog
$(PROC) -o $@ $(STYLE) $<
-- </Makefile.litprogmain>
Для тестов можно использовать Makefile.olpa:
-- <Makefile.olpa>
MAKEFILES_DIR := .
include $(MAKEFILES_DIR)/Makefile.litprogmain
include $(MAKEFILES_DIR)/Makefile.default-variables
all:
echo hi
-- </Makefile.olpa>
Пример:
<screen>
$ make -f Makefile.olpa
echo hi
hi
</screen>
Теперь обновляем, например, "Makefile.default-variables.litprog" и смотрим, что меняется:
<screen>
$ touch Makefile.default-variables.litprog
$ make -f Makefile.olpa
xsltproc --nonet --xinclude -o Makefile.default-variables ../xsl/common/litprog.xsl Makefile.default-variables.litprog
Writing Makefile.default-variables.xml
Writing Makefile.default-variables
echo hi
hi
</screen>
После чего снова:
<screen>
$ make -f Makefile.olpa
echo hi
hi
</screen>
--
Oleg
Подробная информация о списке рассылки docs