[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: make contest



 AC>>>>   .include <bsd.subdir.mk>

 >>> Ты решал не ту задачу.  Решил ты ее или нет, я уж не могу сказать,
 >>> поскольку непонятно, какую решал, но решал - не ту.

 AC>> Ну ёпрст 8-) Я решил ту задачу, именно ту - строю пакет из бинарей,
 AC>> которые строятся из .с файлов. При желании построить пакет
 AC>> измененные .c таки учитываются, и перед построением пакета строятся
 AC>> перестраиваются бинари. Дописать pkg/Makefile ты и сам в состоянии.

> А я не ставил задачу "построить пакет".  Если кто не заметил.

> Я просто оставил один аспект реальной задачи и максимально упростил
> модель.  Могу показать полную.  Это, правда, будет довольно длинное
> письмо...

Задача стояла построить _зависящую_ цель (пакет) при измениях в
исходных файлах _зависимых_ целей (конкретные программы). Эта задача решена.

Но решения ты не понял. Ладно, я расшифрую - решение в том, чтобы
unconditionally запустить make последовательно вначале для зависимостей,
затем для главной задачи - именно это делает bsd.subdir.mk.
Обрати внимание на директиву .WAIT, это для make -jN.

Вот недостающее звено, которое мне к вечеру было просто лень реализовывать.
pkg/Makefile:

   .PHONY: all
   all : pkg.tgz
   pkg.tgz : ../projA/a ../projB/b
           tar -xfz ${.TARGET} ${.ALLSRC}

Решение, которое ты ожидал увидеть я делать не буду, это банальное
переписывание Makefile-а с одного диалекта на другой. Мне это не
интересно.

В свою очередь я тоже могу привести немного более длинный пример тоже
из реальной жизни.  Каркас для родного мне dictd, где есть библиотека
(.so), общий код для екзешников и собственно сами екзешники.

-- 
Best regards, Aleksey Cheusov.


Reply to: