Построение дерева с использованием make-файлов и правил статических шаблонов

Я работаю над некоторым встроенным программным кодом, работающим на ARM, и поэтому мне приходится иметь дело с полным различием между режимами ARM и THUMB. Текущая система сборки использует правила статического шаблона, чтобы определить, компилировать ли файлы в режиме ARM или THUMB.

$(ACOBJS) : %.o : %.c
    @echo
    $(CC) -c $(CFLAGS) $(AOPT) -I . $(IINCDIR) $< -o $@
$(TCOBJS) : %.o : %.c
    @echo
    $(CC) -c $(CFLAGS) $(TOPT) -I . $(IINCDIR) $< -o $@

Где ACOBJS - это список объектов вывода, которые должны находиться в режиме ARM, и то же самое для TCOBJS и режима Thumb. Эти списки создаются из списка источников обычным способом

ACOBJS   = $(ACSRC:.c=.o)
TCOBJS   = $(TCSRC:.c=.o)

. В настоящее время это приводит к тому, что объектные файлы из сборки разбросаны по дереву исходных текстов, чего я не особо хочу. Я пытался настроить это для сборок вне дерева, но не смог заставить это работать. Мне не обязательно полностью отказываться от работы с древовидными сборками, но я хотел бы, по крайней мере, иметь возможность использовать выходной каталог, в который в конечном итоге помещаются все промежуточные файлы. Какова наилучшая стратегия для достижения этого при этих ограничениях?

Один из вариантов, который я рассматриваю, - это использование либо automake, либо всей цепочки инструментов autotools для создания make-файла. Казалось бы, это поддерживает создание нужного мне типа make-файла, но кажется излишним. Также кажется, что существует несоответствие импеданса между автоинструментами, который предназначен для переносных сборок и встроенных систем с голым железом, где такие вещи, как кортеж хоста, продиктованы целевым микро.

9
задан megabytephreak 5 February 2011 в 20:19
поделиться