Заинтересовался описанием - звучит, как прям серебряная пуля.У меня есть большой мейкфайл, который собирает под линукс, три различных BSD, адроид, виндоффс (через вайнгцц), делает васм, запускает автотесты по двум большим папкам (со своими очень простыми мейкфайлами), показывает uname и вывод версии собранного файла, при этом сам определяет наличие некоторых системных библиотек (типа HAS_SOCKETS), генерит пекедж под дебиан, и, само собой, умеет инсталл и анинсталл. Одна из целей даже собирается рекурсивно (пока новый вариант не будет лучше предыдущего).
Кроме того часть опций компилятора зависит от наличия системных переменных (и даже компилятора - gcc или clang). А тестовые билды я собираю через opensuse build service, которая вместо меня собирает моим же мейкфайлом полтора десятка различных вариантов пакетов под арм и интел.
При этом мейкфайл вполне читабельный, как ни удивительно, и довольно легко сопровождаемый.
--
Ну я попытался в редо. И у меня появилось стойкое чувство, что я вместо быстроскриптинга на луа засел переписывать все на С, причем без стандартной библиотеки и даже немного с ассемблером.
Это не система сборки. Это какая-то тулза для сравнения времени двух файлов. А система сборки должна уметь много больше.
Например, я могу одной строкой в два слова сказать .PHONY и мейк поймет, что это не просто таргет, а команда. А могу не сказать, и он будет проверять наличие такого файла.
Я могу просто написать двумя строками "debug-32: CFLAGS+=-m32\ndebug-32: debug" и мейк заведет мне новый таргет, полностью идентичный основному, со всеми зависимостями, тестами и интеграцией, но 32-битный. А в редо для этого придется писать целый новый скрипт, причем продумать уникальную системную переменную, чтобы этот cflags не путался с возможными другими...
Короче, redo этот для хелловорлдов, проектов под одну платформу и компилятор или для тех, кто любит программировать сборку своего проекта, а не сам проект.
p.s. Лучше мейка разве что симейк, но у него такой дебильный укуреный синтаксис, что пользоваться не хочется.