Сценарий командного интерпретатора, который создает структуру каталогов в дереве исходных текстов, в которой каждый уровень содержит необходимые файлы, используемые утилитой make
addvariant [-c] [-i уровень] [-P] [[система] процессор] вариант
common.mk
и Makefile
в текущем рабочем каталоге. Makefile
содержит строку, определяющую уровень (уровни), содержащийся в структуре каталогов. Укажите уровень как OS, OS/CPU или OS/CPU/VARIANT (используйте косую черту (/) или дефис (-) для разделения нескольких уровней).GNU/Linux, Microsoft Windows
arm, armv7, aarch64, e2k, mips, ppc, x86
Утилита addvariant — это сценарий командного интерпретатора, который создает структуру каталогов для дерева исходных текстов. Он гарантирует, что каждый уровень этой структуры содержит необходимые файлы, используемые утилитой make.
Использование addvariant для создания вариантной структуры каталогов позволяет воспользоваться правилами make-файла в среде сборки ЗОСРВ "Нейтрино", где на уровне проекта есть файл с именем common.mk
. Этот файл содержит все «специальные» флаги и настройки, необходимые для компиляции и компоновки.
Каждый уровень в структуре каталогов требует правильно сконструированного Makefile
с соответствующими макросами и включаемыми файлами. На большинстве уровней Makefile
включает recurse.mk
, файл, используемый make-файлами более высокого уровня для рекурсии на более низкие уровни. Makefile
на самом нижнем уровне дерева каталогов (уровень вариантов) включает файл common.mk
с уровня проекта вместо recurse.mk
.
Работа с проектами GNU
Утилита начинает с проверки соответствия проектов структуре типа GNU. Если текущий рабочий каталог (CWD
) содержит файлы с именами configure и Makefile.in
, addvariant предполагает, что проект настроен в стиле GNU. В этом случае он автоматически сжимает уровни каталогов (как описано ниже) в один уровень OS-CPU-VARIANT и создает файлы GNUmakefile
во вновь созданных каталогах вместе с рекурсивным файлом Makefile
, чтобы воспользоваться ими.
После запуска addvariant создайте исполняемый сценарий оболочки с именем build-hooks
файла в корне проекта. Этот сценарий определяет некоторые функции оболочки, которые вызывают make для правильной сборки вашего проекта.
Создание исходных файлов
Утилита addvariant либо создает и устанавливает стандартные файлы Makefile
и common.mk
в CWD
, либо, если эти файлы уже существуют, редактирует их, добавляя те же стандартные строки сценария, которые используются для рекурсии.
Создание подкаталогов и файлов
Начиная с CWD
, утилита addvariant просматривает дерево каталогов в поисках в каждом файле Makefile
строки, начинающейся с LIST
. Эта строка указывает на конкретный уровень каталога, в котором находится Makefile
, например:
LIST
=OS (если указаны три уровня) LIST
=CPU (если указаны два уровня) LIST
=VARIANT (если указан один уровень) Затем утилита решает, создавать ли подкаталог, просматривая:
LIST
макрос При необходимости addvariant создает подкаталог с соответствующим именем, содержащий подходящий Makefile
.
Этот процесс продолжается до структуры каталогов до тех пор, пока все необходимые каталоги не будут созданы и заполнены необходимым повторяющимся файлом Makefile
.
Уровни сжатия
Утилита addvariant может объединять уровни каталогов. Если ввести команду:
$ addvariant -i OS/CPU/VARIANT nto x86 o
addvariant создает рекурсивный Makefile
в структуре CWD
, который имеет такую строку: LIST
=OS CPU VARIANT, а затем создает единственный подкаталог с именем nto-x86-o.
Любой последующий вызов addvariant в дереве замечает это сжатие уровней каталогов и автоматически генерирует соответствующую структуру каталогов.
Создание двухуровневой иерархии каталогов nto-x86/o:
$ addvariant -i OS/CPU nto x86 o
Создание противоположной двухуровневой иерархии nto/x86-o:
$ addvariant -i OS nto x86/o
Инструментальные средства ЗОСРВ «Нейтрино»
Предыдущий раздел: Справочник по утилитам