Можно ли с помощью GNU make создать набор целей, которые никогда не будут планироваться одновременно при использовании опции «--jobs»?
Фон:
Чтобы сделать это немного более конкретным, рассмотрим make-файл формы
p1: ...deps... # no parallelization conflicts (can run at the same time as p*, e*)
...rules...
p2: ...deps... # no parallelization conflicts (can run at the same time as p*, e*)
...rules...
p3: ...deps... # no parallelization conflicts (can run at the same time as p*, e*)
...rules...
e1: ...deps... # cannot run at same time as any other e*
...rules...
e2: ...deps... # cannot run at same time as any other e*
...rules...
e3: ...deps... # cannot run at same time as any other e*
...rules...
Главное, что мне нужно сделать, это убедиться, что e1, e2 и e3 никогда не обрабатываются одновременно, потому что они выполняют некоторую работу на встроенном устройстве с ограниченными ресурсами. Они аварийно завершают работу, если несколько из них выполняются одновременно. p1, p2 и p3 могут выполняться параллельно с чем угодно, включая любое задание e*.
Обратите внимание, что фактический make-файл имеет несколько тысяч целей с деревом зависимостей, которое имеет около 10 уровней в глубину, поэтому я надеюсь, что есть способ сделать это, который (а) не требует последовательного запуска make и (б) сохраняет преимущества кодирование дерева зависимостей в make-файле.