| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| /* |
| * This redundant definition of TRUE and FALSE works around |
| * a limitation of Decus C. |
| */ |
| #ifndef TRUE |
| #define TRUE 1 |
| #define FALSE 0 |
| #endif |
| |
| /* |
| * Define the HOST operating system. This is needed so that |
| * cpp can use appropriate filename conventions. |
| */ |
| #define SYS_UNKNOWN 0 |
| #define SYS_UNIX 1 |
| #define SYS_VMS 2 |
| #define SYS_RSX 3 |
| #define SYS_RT11 4 |
| #define SYS_LATTICE 5 |
| #define SYS_ONYX 6 |
| #define SYS_68000 7 |
| |
| #ifndef HOST |
| #ifdef unix |
| #define HOST SYS_UNIX |
| #else |
| #ifdef vms |
| #define HOST SYS_VMS |
| #else |
| #ifdef rsx |
| #define HOST SYS_RSX |
| #else |
| #ifdef rt11 |
| #define HOST SYS_RT11 |
| #endif |
| #endif |
| #endif |
| #endif |
| #endif |
| |
| #ifndef HOST |
| #define HOST SYS_UNKNOWN |
| #endif |
| |
| /* |
| * We assume that the target is the same as the host system |
| */ |
| #ifndef TARGET |
| #define TARGET HOST |
| #endif |
| |
| /* |
| * In order to predefine machine-dependent constants, |
| * several strings are defined here: |
| * |
| * MACHINE defines the target cpu (by name) |
| * SYSTEM defines the target operating system |
| * COMPILER defines the target compiler |
| * |
| * The above may be #defined as "" if they are not wanted. |
| * They should not be #defined as NULL. |
| * |
| * LINE_PREFIX defines the # output line prefix, if not "line" |
| * This should be defined as "" if cpp is to replace |
| * the "standard" C pre-processor. |
| * |
| * FILE_LOCAL marks functions which are referenced only in the |
| * file they reside. Some C compilers allow these |
| * to be marked "static" even though they are referenced |
| * by "extern" statements elsewhere. |
| * |
| * OK_DOLLAR Should be set TRUE if $ is a valid alphabetic character |
| * in identifiers (default), or zero if $ is invalid. |
| * Default is TRUE. |
| * |
| * OK_CONCAT Should be set TRUE if # may be used to concatenate |
| * tokens in macros (per the Ansi Draft Standard) or |
| * FALSE for old-style # processing (needed if cpp is |
| * to process assembler source code). |
| * |
| * OK_DATE Predefines the compilation date if set TRUE. |
| * Not permitted by the Nov. 12, 1984 Draft Standard. |
| * |
| * S_CHAR etc. Define the sizeof the basic TARGET machine word types. |
| * By default, sizes are set to the values for the HOST |
| * computer. If this is inappropriate, see the code in |
| * cpp3.c for details on what to change. Also, if you |
| * have a machine where sizeof (signed int) differs from |
| * sizeof (unsigned int), you will have to edit code and |
| * tables in cpp3.c (and extend the -S option definition.) |
| * |
| * CPP_LIBRARY May be defined if you have a site-specific include directory |
| * which is to be searched *before* the operating-system |
| * specific directories. |
| */ |
| |
| #if TARGET == SYS_LATTICE |
| /* |
| * We assume the operating system is pcdos for the IBM-PC. |
| * We also assume the small model (just like the PDP-11) |
| */ |
| #define MACHINE "i8086" |
| #define SYSTEM "pcdos" |
| #endif |
| |
| #if TARGET == SYS_ONYX |
| #define MACHINE "z8000" |
| #define SYSTEM "unix" |
| #endif |
| |
| #if TARGET == SYS_VMS |
| #define MACHINE "vax" |
| #define SYSTEM "vms" |
| #define COMPILER "vax11c" |
| #endif |
| |
| #if TARGET == SYS_RSX |
| #define MACHINE "pdp11" |
| #define SYSTEM "rsx" |
| #define COMPILER "decus" |
| #endif |
| |
| #if TARGET == SYS_RT11 |
| #define MACHINE "pdp11" |
| #define SYSTEM "rt11" |
| #define COMPILER "decus" |
| #endif |
| |
| #if TARGET == SYS_68000 || defined(M68000) || defined(m68000) || defined(m68k) |
| /* |
| * All three machine designators have been seen in various systems. |
| * Warning -- compilers differ as to sizeof (int). cpp3 assumes that |
| * sizeof (int) == 2 |
| */ |
| #define MACHINE "M68000", "m68000", "m68k" |
| #define SYSTEM "unix" |
| #endif |
| |
| #if TARGET == SYS_UNIX |
| #define SYSTEM "unix" |
| #ifdef pdp11 |
| #define MACHINE "pdp11" |
| #endif |
| #ifdef vax |
| #define MACHINE "vax" |
| #endif |
| #endif |
| |
| /* |
| * defaults |
| */ |
| |
| #ifndef MSG_PREFIX |
| #define MSG_PREFIX "cpp: " |
| #endif |
| |
| #ifndef LINE_PREFIX |
| #define LINE_PREFIX "" |
| #endif |
| |
| /* |
| * OLD_PREPROCESSOR forces the definition of OK_DOLLAR, OK_CONCAT, |
| * COMMENT_INVISIBLE, and STRING_FORMAL to values appropriate for |
| * an old-style preprocessor. |
| */ |
| |
| #ifndef OLD_PREPROCESSOR |
| #define OLD_PREPROCESSOR FALSE |
| #endif |
| |
| #if OLD_PREPROCESSOR |
| #define OK_DOLLAR FALSE |
| #define OK_CONCAT TRUE |
| #define COMMENT_INVISIBLE TRUE |
| #define STRING_FORMAL TRUE |
| #define IDMAX 63 /* actually, seems to be unlimited */ |
| #endif |
| |
| /* |
| * RECURSION_LIMIT may be set to -1 to disable the macro recursion test. |
| */ |
| #ifndef RECURSION_LIMIT |
| #define RECURSION_LIMIT 1000 |
| #endif |
| |
| /* |
| * BITS_CHAR may be defined to set the number of bits per character. |
| * it is needed only for multi-byte character constants. |
| */ |
| #ifndef BITS_CHAR |
| #define BITS_CHAR 8 |
| #endif |
| |
| /* |
| * BIG_ENDIAN is set TRUE on machines (such as the IBM 360 series) |
| * where 'ab' stores 'a' in the high-bits and 'b' in the low-bits. |
| * It is set FALSE on machines (such as the PDP-11 and Vax-11) |
| * where 'ab' stores 'a' in the low-bits and 'b' in the high-bits. |
| * (Or is it the other way around?) -- Warning: BIG_ENDIAN code is untested. |
| */ |
| #ifndef BIG_ENDIAN |
| #define BIG_ENDIAN FALSE |
| #endif |
| |
| /* |
| * COMMENT_INVISIBLE may be defined to allow "old-style" comment |
| * processing, whereby the comment becomes a zero-length token |
| * delimiter. This permitted tokens to be concatenated in macro |
| * expansions. This was removed from the Draft Ansi Standard. |
| */ |
| #ifndef COMMENT_INVISIBLE |
| #define COMMENT_INVISIBLE FALSE |
| #endif |
| |
| /* |
| * STRING_FORMAL may be defined to allow recognition of macro parameters |
| * anywhere in replacement strings. This was removed from the Draft Ansi |
| * Standard and a limited recognition capability added. |
| */ |
| #ifndef STRING_FORMAL |
| #define STRING_FORMAL FALSE |
| #endif |
| |
| /* |
| * OK_DOLLAR enables use of $ as a valid "letter" in identifiers. |
| * This is a permitted extension to the Ansi Standard and is required |
| * for e.g., VMS, RSX-11M, etc. It should be set FALSE if cpp is |
| * used to preprocess assembler source on Unix systems. OLD_PREPROCESSOR |
| * sets OK_DOLLAR FALSE for that reason. |
| */ |
| #ifndef OK_DOLLAR |
| #define OK_DOLLAR TRUE |
| #endif |
| |
| /* |
| * OK_CONCAT enables (one possible implementation of) token concatenation. |
| * If cpp is used to preprocess Unix assembler source, this should be |
| * set FALSE as the concatenation character, #, is used by the assembler. |
| */ |
| #ifndef OK_CONCAT |
| #define OK_CONCAT TRUE |
| #endif |
| |
| /* |
| * OK_DATE may be enabled to predefine today's date as a string |
| * at the start of each compilation. This is apparently not permitted |
| * by the Draft Ansi Standard. |
| */ |
| #ifndef OK_DATE |
| #define OK_DATE TRUE |
| #endif |
| |
| /* |
| * The following definitions are used to allocate memory for |
| * work buffers. In general, they should not be modified |
| * by implementors. |
| * |
| * PAR_MAC The maximum number of #define parameters (31 per Standard) |
| * Note: we need another one for strings. |
| * IDMAX The longest identifier, 31 per Ansi Standard |
| * NBUFF Input buffer size |
| * NWORK Work buffer size -- the longest macro |
| * must fit here after expansion. |
| * NEXP The nesting depth of #if expressions |
| * NINCLUDE The number of directories that may be specified |
| * on a per-system basis, or by the -I option. |
| * BLK_NEST The number of nested #if's permitted. |
| * NFWORK FileNameWorkBuffer (added by erAck, was NWORK) |
| */ |
| |
| #ifndef IDMAX |
| #define IDMAX 127 |
| #endif |
| #ifdef SOLAR |
| #define PAR_MAC (253 + 1) |
| #else |
| #define PAR_MAC (31 + 1) |
| #endif |
| /* ER 13.06.95 19:33 |
| da Makros im file->buffer expandiert werden, muss NBUFF mindestens NWORK sein |
| #define NWORK 4096 |
| #define NBUFF 4096 |
| */ |
| /* ER 13.06.95 20:05 NWORK wg. grooossen Makros in *.src erhoeht, |
| da wir bald 10 Sprachen haben werden gleich ordentlich reingehauen.. */ |
| #define NWORK 128000 |
| #define NBUFF NWORK |
| #define NFWORK 1024 |
| #define NEXP 128 |
| #define NINCLUDE 100 |
| #define NPARMWORK (NWORK * 2) |
| #define BLK_NEST 32 |
| |
| |
| #ifndef ALERT |
| #ifdef EBCDIC |
| #define ALERT '\057' |
| #else |
| #define ALERT '\007' /* '\a' is "Bell" */ |
| #endif |
| #endif |
| |
| #ifndef VT |
| #define VT '\013' /* Vertical Tab CTRL/K */ |
| #endif |
| |
| |
| #ifndef FILE_LOCAL |
| #ifdef decus |
| #define FILE_LOCAL static |
| #else |
| #ifdef vax11c |
| #define FILE_LOCAL static |
| #else |
| #define FILE_LOCAL /* Others are global */ |
| #endif |
| #endif |
| #endif |
| |