Файл конфигурации `xm-MACHINE.h' содержит макроопределения, описывающие машину и систему, на которых производится трансляция, в отличии от определений в `MACHINE.h', которые описывают целевую машину. Большинство значений в `xm-MACHINE.h' в действительности одинаковы для всех машин, на которых работает GNU CC, поэтому все файлы конфигурации имеют большие одинаковые части. Но существуют макрокоманды, которые отличаются:
Определите эту макрокоманду, если главная система - System V.
Определите эту макрокоманду, если главная система - VMS.
Выражение на C для кода состояния, который будет возвращен, при выходе транслятора после серьезных ошибок.
Выражение на C для кода состояния, который будет возвращен, когда транслятор выходит без серьезных ошибок.
Определите эту макрокоманду, если на главной машине слова в составном слове идут в обратном порядке. (GNU CC не зависит от упорядочения байтов внутри слова на главной машине.)
Определите эту макрокоманду, которая должна быть 1 если на главной машине при сохранение вещественных чисел типов `DFmode', `XFmode' или `TFmode' бит знака записывается в самый маленький адрес. В противном случае она должна быть ноль.
Если упорядочивание такое же как и упорядочивание целых чисел в составном слове (тип из нескольких слов).
Числовой код, отличающий вещественной формат главной машины. См. `TARGET_FLOAT_FORMAT' в для различных возможных вариантов и значения по умолчанию.
Выражение на C для числа битов в `char' на главной машине.
Выражение на C для числа битов в `short' на главной машине. .
Выражение на C для числа битов в `int' на главной машине.
Выражение на C для числа битов в `long' на главной машине.
Определите эту макрокоманду, чтобы указать, что главный транслятор поддерживает битовые поля только для 'int', но не для других целых типов, включая `enum', как то делают большинство компиляторов С.
Выражение на C для размера обычных obstack кусков. Если Вы не определяете, его по умолчанию используется разумное обычное значение.
Функция, используемая, чтобы распределить obstack куски. Если Вы не ее, то будет использоваться `xmalloc'.
Функция, используемая, чтобы освободить obstack куски. Если Вы не ее, то будет использоваться `free'.
Определите эту макрокоманду, чтобы указать, что транслятор работает с 'alloca', выполненной на C. Эта версия 'alloca' может быть найдена в файле 'alloca.c'; чтобы использовать ее, Вы должны также измениться переменную 'Makefile'-а - 'ALLOCA'. (Для систем, для которых мы знаем, что это необходимо, это выполнено автоматически)
Если Вы определяете эту макрокоманду, Вы должны вероятно сделать это следующим образом:
#ifndef __GNUC__
#define USE_C_ALLOCA
#else
#define alloca __builtin_alloca
#endif
так, чтобы, когда транслятор компилировался с GNU CC, он использовал
более эффективную встроенную функцию `alloca'.
Определите эту макрокоманду, чтобы указать, что главный транслятор не правильно обрабатывает преобразование функционального значения к указатель-в-функцию, когда это используется в выражении.
Определите ее, если библиотечная функция `vprintf' является доступной на вашей системе.
Определите эту макрокоманду, чтобы допустить поддержку для символов мультибайта во вводе GNU CC. Это требует, когда главная система поддерживала ANSI C библиотечными функциями для преобразования символов мультибайта к широким символам.
Определите ее, если библиотечная функция `putenv' является доступной на вашей системе.
Определите ее, если ваша система - POSIX.1 совместима.
Определите ее, если ваша система *не* поддерживает переменную `sys_siglist'.
Определите ее, если ваша система имеет переменную `sys_siglist', и она уже объявлена в системных файлах заголовков.
Определите эту макрокоманду 1-ой, если Вы знаете, что главный транслятор поддерживает прототипы, даже если это не определяет __STDC__, или определите ее 0, если Вы не хотите, что бы в GNU CC использовались какие то ни было прототипы. Если `USE_PROTOTYPES' не определена, то это буде определяться автоматический с помощью проверки определено ли `__STDC__'.
Определите ее, если Вы же, что бы было подавление прототипов, сгенерированных их файла описания машины, но использовать другие прототипы внутри GNU CC. Если 'USE_PROTOTYPES' определен 0-ем, или главный транслятор не поддерживает прототипы, эта макрокоманда не будет иметь никакого эффекта.
Определите ее, если Вы желаете генерировать прототипы для функции 'gen_call' или `gen_call_value', сгенерированных из файла описания машины. Если 'USE_PROTOTYPES' определен 0-ем, или главный транслятор не поддерживает прототипы, или определен 'NO_MD_PROTOTYPES', то эта макрокоманда не воспринимается. Как только все машинные описания изменяются, чтобы иметь соответствующее число параметров, эта макрокоманда будет удалена.
В некоторые системах есть соответствующая переменная, но она может иметь разные имена, типа '_sys_siglist'. На этих системах, Вы можете определять 'sys_siglist' как макрокоманде, которая расширяется в фактическое переменной.
Определите ее, если ваша система не имеет инклюд файла 'stab.h'. Если 'USG' определен, то 'NO_STAB_H' определен.
Эта макрокоманда должна быть определена символом, который используется для разделения в путях. По умолчанию используется символ двоеточия.
Если Ваша система использует символ, отличный от слэша для разделения имен директорий в указании файла, то определите его в эту макрокоманду. Когда GNU CC отображает имя файла будет использоваться определенный символ. GNU CC проверит и слыш и вами определенный символ при разборе имени файла.
Определите эту макрокоманду, как расширение объектных файлов на вашей машине. По умолчанию используется `.o'.
Определите эту макрокоманду, как расширение исполняемых файлов на вашей машине. По умолчанию используется пустая строка.
Если определено, `collect2' просмотрит индивидуальные объектные файлы, определенные в командной строке и создаст экспортный список для линкера. Определите эту макрокоманду для систем подобных AIX, где линкер отбрасывает объектные файлы, не вызванные из 'main' или пользовательского export-списка.