Я работаю над проектом на ассемблере, используя GNU bintools 2.25, созданный для m68k-elf
, а GNU make
3.81 обрабатывает сборку. (Поскольку это проект только для сборки, у меня нет сборки gcc
для m68k
.)
При доработке моей системы сборки я хотел бы иметь возможность автоматически генерировать список зависимостей для каждого из моих файлов сборки, аналогично семейству параметров -M*
для gcc
.
Я обнаружил, что моя копия m68k-elf-as
поддерживает параметр -MD
для перечисления зависимостей, поэтому я добавил следующее правило в свой Makefile
:
%.d: %.asm
$(AS) --register-prefix-optional -m68000 -MD $@ $(ASFLAGS) $<
Хотя это в основном работает, у меня есть две конкретные проблемы.
Опция
-MD
требует имени файла для записи зависимостей; Я бы хотел, чтобы это было отправлено в STDOUT, чтобы я мог помассировать его с помощьюsed
до того, какmake
взглянет на него. Я пытался дать ему один тире (-
), но он создает файл с таким именем вместо направления в STDOUT.Даже при включенной опции
-MD
as
пытается собрать исходный код, что может привести к ошибке и остановке всего процесса сборки. Я бы ожидал, что он будет выводить зависимости вместо сборки кода, а не выполнять оба действия.
Хотя сейчас это не более чем неприятности, я вижу, что это значительно влияет на мои сборки по мере роста проекта, особенно последнего. Есть ли способ заставить as
выводить зависимости, не пытаясь собрать код?
sed -i
возможно. - person MadScientist   schedule 21.03.2015