Файл конфигурации `xm-MACHINE.h' содержит макроопределения,описывающие машину и систему, на которых производится трансляция,в отличии от определений в `MACHINE.h', которые описывают целевую машину. Большинство значений в `xm-MACHINE.h' в действительности одинаковы для всех машин, на которых работает GNU CC, поэтому все файлы конфигурации имеют большие одинаковые части. Но существуют макрокоманды, которые отличаются:
- `USG'
Определите эту макрокоманду, если главная система - System V.
`VMS'
Определите эту макрокоманду, если главная система - VMS.
`FATAL_EXIT_CODE'
Выражение на C для кода состояния, который будет возвращен, при выходе транслятора после серьезных ошибок.
`SUCCESS_EXIT_CODE'
Выражение на C для кода состояния, который будет возвращен, когда транслятор выходит без серьезных ошибок.
`HOST_WORDS_BIG_ENDIAN'
Определите эту макрокоманду, если на главной машине слова в составном слове идут в обратном порядке. (GNU CC не зависит от упорядочения байтов внутри слова на главной машине.)
`HOST_FLOAT_WORDS_BIG_ENDIAN'
Определите эту макрокоманду, которая должна быть 1 если на главной машине при сохранение вещественных чисел типов `DFmode', `XFmode' или `TFmode' бит знака записывается в самый маленький адрес. В противном случае она должна быть ноль.
Если упорядочивание такое же как и упорядочивание целых чисел в составном слове (тип из нескольких слов).
`HOST_FLOAT_FORMAT'
Числовой код, отличающий вещественной формат главной машины. См.`TARGET_FLOAT_FORMAT' в для различных возможных вариантов и значения по умолчанию.
`HOST_BITS_PER_CHAR'
Выражение на C для числа битов в `char' на главной машине.
`HOST_BITS_PER_SHORT'
Выражение на C для числа битов в `short' на главной машине..
`HOST_BITS_PER_INT'
Выражение на C для числа битов в `int' на главной машине.
`HOST_BITS_PER_LONG'
Выражение на C для числа битов в `long' на главной машине.
`ONLY_INT_FIELDS'
Определите эту макрокоманду, чтобы указать, что главный транслятор поддерживает битовые поля только для 'int', но не для других целых типов, включая `enum', как то делают большинство компиляторов С.
`OBSTACK_CHUNK_SIZE'
Выражение на C для размера обычных obstack кусков. Если Вы не определяете, его по умолчанию используется разумное обычное значение.
`OBSTACK_CHUNK_ALLOC'
Функция, используемая, чтобы распределить obstack куски. Если Вы не ее, то будет использоваться `xmalloc'.
`OBSTACK_CHUNK_FREE'
Функция, используемая, чтобы освободить obstack куски. Если Вы не ее, то будет использоваться `free'.
`USE_C_ALLOCA'
Определите эту макрокоманду, чтобы указать, что транслятор работает с 'alloca', выполненной на C. Эта версия 'alloca' может быть найдена в файле 'alloca.c'; чтобы использовать ее, Вы должны также измениться переменную 'Makefile'-а - 'ALLOCA'. (Для систем, для которых мы знаем,что это необходимо, это выполнено автоматически)
Если Вы определяете эту макрокоманду, Вы должны вероятно сделать это следующим образом:
#ifndef __GNUC__
#define USE_C_ALLOCA
#else
#define alloca __builtin_alloca
#endif
так, чтобы, когда транслятор компилировался с GNU CC, он использовал более эффективную встроенную функцию `alloca'.
`FUNCTION_CONVERSION_BUG'
Определите эту макрокоманду, чтобы указать, что главный транслятор не правильно обрабатывает преобразование функционального значения к указатель-в-функцию, когда это используется в выражении.
`HAVE_VPRINTF'
Определите ее, если библиотечная функция `vprintf' является доступной на вашей системе.
`MULTIBYTE_CHARS'
Определите эту макрокоманду, чтобы допустить поддержку для символов мультибайта во вводе GNU CC. Это требует, когда главная система поддерживала ANSI C библиотечными функциями для преобразования символов мультибайта к широким символам.
`HAVE_PUTENV'
Определите ее, если библиотечная функция `putenv' является доступной на вашей системе.
`POSIX'
Определите ее, если ваша система - POSIX.1 совместима.
`NO_SYS_SIGLIST'
Определите ее, если ваша система *не* поддерживает переменную `sys_siglist'.
`DONT_DECLARE_SYS_SIGLIST'
Определите ее, если ваша система имеет переменную `sys_siglist', и она уже объявлена в системных файлах заголовков.
`USE_PROTOTYPES'
Определите эту макрокоманду 1-ой, если Вы знаете, что главный транслятор поддерживает прототипы, даже если это не определяет __STDC__, или определите ее 0, если Вы не хотите, что бы в GNU CC использовались какие то ни было прототипы. Если `USE_PROTOTYPES' не определена,то это буде определяться автоматический с помощью проверки определено ли `__STDC__'.
`NO_MD_PROTOTYPES'
Определите ее, если Вы же, что бы было подавление прототипов,сгенерированных их файла описания машины, но использовать другие прототипы внутри GNU CC. Если 'USE_PROTOTYPES' определен 0-ем,или главный транслятор не поддерживает прототипы, эта макрокоманда не будет иметь никакого эффекта.
`MD_CALL_PROTOTYPES'
Определите ее, если Вы желаете генерировать прототипы для функции 'gen_call' или `gen_call_value', сгенерированных из файла описания машины. Если 'USE_PROTOTYPES' определен 0-ем, или главный транслятор не поддерживает прототипы, или определен 'NO_MD_PROTOTYPES', то эта макрокоманда не воспринимается. Как только все машинные описания изменяются, чтобы иметь соответствующее число параметров, эта макрокоманда будет удалена.
В некоторые системах есть соответствующая переменная, но она может иметь разные имена, типа '_sys_siglist'. На этих системах,Вы можете определять 'sys_siglist' как макрокоманде,которая расширяется в фактическое переменной.
`NO_STAB_H'
Определите ее, если ваша система не имеет инклюд файла 'stab.h'.Если 'USG' определен, то 'NO_STAB_H' определен.
`PATH_SEPARATOR'
Эта макрокоманда должна быть определена символом, который используется для разделения в путях. По умолчанию используется символ двоеточия.
`DIR_SEPARATOR'
Если Ваша система использует символ, отличный от слэша для разделения имен директорий в указании файла, то определите его в эту макрокоманду.Когда GNU CC отображает имя файла будет использоваться определенный символ. GNU CC проверит и слыш и вами определенный символ при разборе имени файла.
`OBJECT_SUFFIX'
Определите эту макрокоманду, как расширение объектных файлов на вашей машине. По умолчанию используется `.o'.
`EXECUTABLE_SUFFIX'
Определите эту макрокоманду, как расширение исполняемых файлов на вашей машине. По умолчанию используется пустая строка.
`COLLECT_EXPORT_LIST'
Если определено, `collect2' просмотрит индивидуальные объектные файлы,определенные в командной строке и создаст экспортный список для линкера.Определите эту макрокоманду для систем подобных AIX, где линкер отбрасывает объектные файлы, не вызванные из 'main' или пользовательского export-списка.
Кроме того, файлы конфигурации для системы V определяют `bcopy', `bzero'
и `bcmp' как псевдонимы. Некоторые файлы определяют 'alloca' как макрокоманду при компиляции GNU CC, чтобы воспользоваться преимуществом встроенного в GNU CC 'alloca'.