Wiki

Фрагменты Makefile-а

Когда Вы конфигурируете GNU CC используя сценарий `configure' (см. Инсталяция) из файла шаблона `Makefile.in' создастся файл `Makefile'. При этом включается файлы фрагментов '-TARGET' и `x-HOST' из директории `config'. Если эти файлы не существуют, то это означает, что к главной и целевой машине ничего не надо добавлять.

8.1 Фрагменты Makefile, отвечающие целевой машине


Фрагменты Makefil `t-TARGET', отвечающие целевой машине определяют специальные переменные, зависящие от этой машины:

`LIBGCC1'

Правило, использующие, чтобы сформировать 'libgcc1.a'. Если Ваша целевая машина не должна использовать функции из 'libgcc1.a', установите его пустым. см. Интерфэйс.

`CROSS_LIBGCC1'

Правило, использующие, чтобы сформировать 'libgcc1.a при формировании кросс-компилятора. Если Ваша целевая машина не должна использовать функции из 'libgcc1.a', установите его пустым.

`LIBGCC2_CFLAGS'

Трансляторный флаг для использование во время компилирования `libgcc2.c'.

`LIB2FUNCS_EXTRA'

Список исходных файлов, которые должны быть скомпилированы или скомпилированы ассемблером, а потом вставлены в into `libgcc.a'.

`CRTSTUFF_T_CFLAGS'

Специальный флаг, использующийся во время компилирования `crtstuff.c'. см. Инициализация.

`MULTILIB_OPTIONS'

Для некоторых целевых машин, вызывая GNU CC различными способами будут произведены объекты, которые не могут быть слинкованы вместе. Например, для некоторых целевых машин GNU CC производит оба, и большой и маленький конечный код. Для таких целевых машин, Вы должны принять меры для многократного компилирования 'libgcc.a', по одному разу для каждого набора несовместимых опций. Когда GNU CC вызывает компоновщик, то он предлагает правильные версии `libgcc.a', основываясь на используемых опциях командной строки.
Макрокоманда 'MULTILIB_OPTIONS' вносит в список набор опций, для которых должны быть сформированы специальные версии 'libgcc.a'. Опции, которые являются взаимно несовместимыми, пишите рядом, через слэш. Опции, которые могут использоваться вместе, пишите через пробелом. Формирующаяся процедура сформирует все комбинации совместимых опций.

Например, если Вы устанавливаете 'MULTILIB_OPTIONS' на `m68000/m68020 msoft-float', 'Makefile' будет формировать специальные версии из ' libgcc.a ' используя опций '-m68000', '-m68020', '-msoft-float', '-m68000 -msoft-float', и '-m68020 -msoft-float'.

`MULTILIB_DIRNAMES'

Если используется 'MULTILIB_OPTIONS', то эта переменная определяет имена директории, которые должны использоваться, для содержания различных библиотек. Пишите один элемент в 'MULTILIB_DIRNAMES' для каждого элемента в 'MULTILIB_OPTIONS'. Если 'MULTILIB_DIRNAMES' не используется, значение по умолчанию будет 'MULTILIB_OPTIONS', со всеми слешами, обрабатываемыми как пробелы.

Например, если 'MULTILIB_OPTIONS' - `m68000/m68020 msoft-float', то значение по умолчанию 'MULTILIB_DIRNAMES' будет `m68000 m68020 msoft-float'. Вы можете определить другое значение, если Вы желаете получить другой набора имен каталогов.

`MULTILIB_MATCHES'

Иногда та же самая опция может быть написана двумя различными способами. Если опция перечислена в 'MULTILIB_OPTIONS', GNU CC знать асе ее синонимы. В этом случае, установите 'MULTILIB_MATCHES' в списке элементов формы 'option=option', чтобы описать все уместные синонимы. Например, 'm68000=mc68000 m68020=mc68020 '.

8.2 Фрагменты Makefile, отвечающие главной машине


Фрагмент makefile главной машины, `x-HOST', определяет специальные, зависимые от главной машины переменные и цели, используемые в `Makefile':

`CC'

Транслятор выполняет, когда строит первую страницу.

`CLIB'

Что бы прилинковываться к библиотеками главной машины.

`OLDCC'

Для использования транслятором, при формировании `libgcc1.a' для местной трансляции.

`OLDAR'

Версия `ar' для использования, когда строится `libgcc1.a' дляместной трансляции.

`INSTALL'

Программа инсталяции.