home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / historic / v92.tgz / v92.tar / v92 / src / h / config.h next >
C/C++ Source or Header  |  1996-03-22  |  17KB  |  899 lines

  1. /*
  2.  * Icon configuration.
  3.  */
  4.  
  5. /*
  6.  * System-specific definitions are in define.h
  7.  */
  8.  
  9. /*
  10.  *  A number of symbols are defined here.  Some are specific to individual
  11.  *  to operating systems.  Examples are:
  12.  *
  13.  *    MSDOS        MS-DOS for PCs
  14.  *    UNIX        any UNIX system
  15.  *    VMS        VMS for the VAX
  16.  *
  17.  *  These are defined to be 1 or 0 depending on which operating system
  18.  *  the installation is being done under.  They are all defined and only
  19.  *  one is defined to be 1.  (They are used in the form #if VAX || MSDOS.)
  20.  *
  21.  *  There also are definitions of symbols for specific computers and
  22.  *  versions of operating systems.  These include:
  23.  *
  24.  *    SUN        code specific to the Sun Workstation
  25.  *    MICROSOFT    code specific to the Microsoft C compiler for MS-DOS
  26.  *
  27.  *  Other definitions may occur for different configurations. These include:
  28.  *
  29.  *    DeBug        debugging code
  30.  *    MultiThread    support for multiple programs under the interpreter
  31.  *
  32.  *  Other definitions perform configurations that are common to several
  33.  *  systems. An example is:
  34.  *
  35.  *    Double        align reals at double-word boundaries
  36.  *
  37.  */
  38.  
  39. /*
  40.  * If COMPILER is not defined, code for the interpreter is compiled.
  41.  */
  42.  
  43. #ifndef COMPILER
  44. #define COMPILER 0
  45. #endif
  46.  
  47. /*
  48.  * The following definitions insure that all the symbols for operating
  49.  * systems that are not relevant are defined to be 0 -- so that they
  50.  * can be used in logical expressions in #if directives.
  51.  */
  52.  
  53. #ifndef PORT
  54. #define PORT 0
  55. #endif                    /* PORT */
  56.  
  57. #ifndef AMIGA
  58. #define AMIGA 0
  59. #endif                    /* AMIGA */
  60.  
  61. #ifndef ARM
  62. #define ARM 0
  63. #endif                    /* ARM */
  64.  
  65. #ifndef ATARI_ST
  66. #define ATARI_ST 0
  67. #endif                    /* ATARI_ST */
  68.  
  69. #ifndef MACINTOSH
  70. #define MACINTOSH 0
  71. #endif                    /* MACINTOSH */
  72.  
  73. #ifndef MSDOS
  74. #define MSDOS 0
  75. #endif                    /* MSDOS */
  76.  
  77. #ifndef SCCX_MX
  78. #define SCCX_MX 0
  79. #endif                    /* SCCX_MX */
  80.  
  81. #ifndef MVS
  82. #define MVS 0
  83. #endif                    /* MVS */
  84.  
  85. #ifndef OS2
  86. #define OS2 0
  87. #endif                    /* OS2 */
  88.  
  89. #ifndef OS2_32
  90. #define OS2_32 0
  91. #endif                    /* OS32 */
  92.  
  93. #ifndef UNIX
  94. #define UNIX 0
  95. #endif                    /* UNIX */
  96.  
  97. #ifndef VM
  98. #define VM 0
  99. #endif                    /* VM */
  100.  
  101. #ifndef VMS
  102. #define VMS 0
  103. #endif                    /* VMS */
  104.  
  105.  
  106. /*
  107.  * The following definitions serve to cast common conditionals is
  108.  *  a positive way, while allowing defaults for the cases that
  109.  *  occur most frequently.  That is, if co-expressions are not supported,
  110.  *  NoCoexpr is defined in define.h, but if they are supported, no
  111.  *  definition is needed in define.h; nonetheless subsequent conditionals
  112.  *  can be cast as #ifdef Coexpr.
  113.  */
  114.  
  115. /*
  116.  *  The mysterious Garden of Eden; not supported under the compiler.
  117.  */
  118.  
  119. #ifndef NoCoexpr
  120. #undef Coexpr
  121. #define Coexpr
  122. #endif                    /* NoCoexpr */
  123.  
  124. #ifdef NoCoexpr
  125. #undef MultiThread
  126. #undef EventMon
  127. #undef Eve
  128. #endif                    /* NoCoexpr */
  129.  
  130. #if COMPILER
  131. #undef Eve
  132. #undef MultiThread
  133. #undef Visualization
  134. #undef EventMon
  135. #endif                    /* COMPILER */
  136.  
  137. #ifdef Eve
  138. #undef EventMon
  139. #undef MultiThread
  140. #undef Visualization
  141. #define EventMon
  142. #define MultiThread
  143. #define Visualization
  144. #endif                    /* Eve */
  145.  
  146. #ifndef NoEnvVars
  147. #undef EnvVars
  148. #define EnvVars
  149. #endif                    /* NoEnvVars */
  150.  
  151. #ifndef NoStrInvoke
  152. #undef StrInvoke
  153. #define StrInvoke
  154. #endif                    /* NoStrInvoke */
  155.  
  156. #ifndef NoLargeInts
  157. #undef LargeInts
  158. #define LargeInts
  159. #endif                    /* NoLargeInts */
  160.  
  161. #ifdef EventMon
  162. #undef MultiThread
  163. #define MultiThread
  164. #endif                    /* EventMon */
  165.  
  166. #ifndef RefPath
  167. #define RefPath BinPath
  168. #endif                    /* RefPath */
  169.  
  170. #if UNIX
  171. #ifndef NoShellHeader
  172. #undef ShellHeader
  173. #define ShellHeader
  174. #endif                    /* NoShellHeader */
  175. #endif                    /* UNIX */
  176.  
  177. /*
  178.  * Names for standard environment variables, if they are supported.
  179.  * The standard names are used unless they are overridden.
  180.  */
  181.  
  182. #ifdef EnvVars
  183.  
  184. #ifndef NOERRBUF
  185. #define NOERRBUF "NOERRBUF"
  186. #endif
  187.  
  188. #ifndef TRACE
  189. #define TRACE "TRACE"
  190. #endif
  191.  
  192. #ifndef COEXPSIZE
  193. #define COEXPSIZE "COEXPSIZE"
  194. #endif
  195.  
  196. #ifndef STRSIZE
  197. #define STRSIZE "STRSIZE"
  198. #endif
  199.  
  200. #ifndef HEAPSIZE
  201. #define HEAPSIZE "HEAPSIZE"
  202. #endif
  203.  
  204. #ifndef BLOCKSIZE
  205. #define BLOCKSIZE "BLOCKSIZE"
  206. #endif
  207.  
  208. #ifndef BLKSIZE
  209. #define BLKSIZE "BLKSIZE"
  210. #endif
  211.  
  212. #ifndef MSTKSIZE
  213. #define MSTKSIZE "MSTKSIZE"
  214. #endif
  215.  
  216. #ifndef QLSIZE
  217. #define QLSIZE "QLSIZE"
  218. #endif
  219.  
  220. #ifndef ICONCORE
  221. #define ICONCORE "ICONCORE"
  222. #endif
  223.  
  224. #ifndef IPATH
  225. #define IPATH "IPATH"
  226. #endif
  227.  
  228. #endif                    /* EnvVars */
  229.  
  230. #ifdef MSWindows
  231. #undef Graphics
  232. #define Graphics 1
  233. #ifndef NTConsole
  234. #define ConsoleWindow 1
  235. #endif                    /* NTConsole */
  236. #endif                    /* MSWindows */
  237. #ifdef MacGraph
  238. #undef Graphics
  239. #define Graphics 1
  240. #endif                    /* MacGraph */
  241. #ifdef PresentationManager
  242. #define Graphics 1
  243. #define ConsoleWindow 1
  244. #endif                    /* PresentationManager */
  245.  
  246. #ifdef Graphics
  247. #ifndef NoXpmFormat
  248. #if UNIX
  249. #undef HaveXpmFormat
  250. #define HaveXpmFormat
  251. #endif                    /* UNIX */
  252. #endif                    /* NoXpmFormat */
  253. #ifndef MSWindows
  254. #ifndef PresentationManager
  255. #ifndef MacGraph
  256. #undef XWindows
  257. #define XWindows 1
  258. #endif                    /* MacGraph */
  259. #endif                    /* PresentationManager */
  260. #endif                    /* MSWindows */
  261. #undef LineCodes
  262. #define LineCodes
  263. #undef Polling
  264. #define Polling
  265. #ifndef NoIconify
  266. #define Iconify
  267. #endif                    /* NoIconify */
  268. #ifndef ICONC_XLIB
  269. #define ICONC_XLIB "-lX11"
  270. #endif                    /* ICONC_XLIB */
  271.  
  272. #ifdef ConsoleWindow
  273. /*
  274.  * knock out fprintf and putc; these are here so that consoles may be used
  275.  * in icont and rtt, not just iconx
  276.  */
  277. #undef fprintf
  278. #define fprintf Consolefprintf
  279. #undef putc
  280. #define putc Consoleputc
  281. #undef fflush
  282. #define fflush Consolefflush
  283. #undef printf
  284. #define printf Consoleprintf
  285. #undef exit
  286. #define exit c_exit
  287. #endif                    /* Console Window */
  288.  
  289. #endif                    /* Graphics */
  290.  
  291. #ifndef NoExternalFunctions
  292. #undef ExternalFunctions
  293. #define ExternalFunctions
  294. #endif                    /* NoExternalFunctions */
  295.  
  296. /*
  297.  * EBCDIC == 0 corresponds to ASCII.  EBCDIC == 1 corresponds to EBCDIC
  298.  *  collating sequence, while EBCDIC == 2 provides the ASCII collating
  299.  *  sequence for EBCDIC systems.
  300.  */
  301. #ifndef EBCDIC
  302. #define EBCDIC 0
  303. #endif                    /* EBCDIC */
  304.  
  305. /*
  306.  * Other defaults.
  307.  */
  308.  
  309. #ifdef DeBug
  310. #undef DeBugTrans
  311. #undef DeBugLinker
  312. #undef DeBugIconx
  313. #define DeBugTrans
  314. #define DeBugLinker
  315. #define DeBugIconx
  316. #endif                    /* DeBug */
  317.  
  318. #ifndef AllocType
  319. #define AllocType unsigned int
  320. #endif                    /* AllocType */
  321.  
  322. #ifndef ErrorExit
  323. #define ErrorExit 1
  324. #endif                    /* ErrorExit */
  325.  
  326. #ifndef NormalExit
  327. #define NormalExit 0
  328. #endif                    /* NormalExit */
  329.  
  330. #ifndef Hz
  331. #define Hz 60
  332. #endif                    /* Hz */
  333.  
  334. #ifndef MaxHdr
  335. #define MaxHdr 4096
  336. #endif                    /* MaxHdr */
  337.  
  338. #ifndef MaxPath
  339. #define MaxPath 200
  340. #endif                    /* MaxPath */
  341.  
  342. #ifndef StackAlign
  343. #define StackAlign 2
  344. #endif                    /* StackAlign */
  345.  
  346. #ifndef SysTime
  347. #define SysTime <time.h>
  348. #endif                    /* SysTime */
  349.  
  350. #ifndef WordBits
  351. #define WordBits 32
  352. #endif                    /* WordBits */
  353.  
  354. #ifndef IntBits
  355. #define IntBits WordBits
  356. #endif                    /* IntBits */
  357.  
  358. #ifndef SourceSuffix
  359. #define SourceSuffix ".icn"
  360. #endif                    /* SourceSuffix */
  361.  
  362. /*
  363.  * Representations of directories. LocalDir is the "current working directory".
  364.  *  SourceDir is where the source file is.
  365.  */
  366.  
  367. #define LocalDir ""
  368. #define SourceDir (char *)NULL
  369.  
  370. #ifndef TargetDir
  371. #define TargetDir LocalDir
  372. #endif                    /* TargetDir */
  373.  
  374.  
  375. #ifndef Pipes
  376. #if ARM || OS2 || UNIX || VMS
  377. #define Pipes
  378. #endif                    /* ARM || OS2 || UNIX || VMS */
  379. #endif                    /* Pipes */
  380.  
  381. #if UNIX || VMS
  382. #define SystemFnc
  383. #endif                    /* UNIX || VMS */
  384.  
  385.  
  386. /*
  387.  * Default sizing and such.
  388.  */
  389.  
  390. #define WordSize sizeof(word)
  391.  
  392. #ifndef ByteBits
  393. #define ByteBits 8
  394. #endif                    /* ByteBits */
  395.  
  396. /*
  397.  * Change the name of gcvt() if we're supplying our own version,
  398.  * to avoid complaints under VMS and others with shared libraries.
  399.  */
  400.  
  401. #ifndef NoIconGcvt
  402. #undef IconGcvt
  403. #define IconGcvt
  404. #define gcvt icon_gcvt
  405. #endif                    /* IconGcvt */
  406.  
  407. /*
  408.  *  The following definitions depend on whether or not the ANSI C standard
  409.  *  is supported.
  410.  */
  411.  
  412. #ifdef Standard
  413. #undef StandardC
  414. #undef StandardPP
  415. #undef StandardLib
  416. #define StandardC
  417. #define StandardPP
  418. #define StandardLib
  419. #endif                    /* Standard */
  420.  
  421. #ifdef StandardPP
  422. #define Cat(x,y) x##y
  423. #define Lit(x) #x
  424. #else                    /* StandardPP */
  425. #define Ident(x) x
  426. #define Cat(x,y) Ident(x)y
  427. #define Lit(x) "x"
  428. #endif                    /* StandardPP */
  429.  
  430. #ifdef StandardC
  431. #undef Prototypes
  432. #define Prototypes
  433. #undef VoidType
  434. #define VoidType
  435. #define Bell '\a'
  436. #else                    /* StandardC */
  437. #if EBCDIC
  438. #define Bell '\x2F'
  439. #else                    /* EBCDIC */
  440. #define Bell '\007'
  441. #endif                    /* EBCDIC */
  442. #endif                    /* StandardC */
  443.  
  444. #ifdef StandardLib
  445. #undef SysMem
  446. #define SysMem
  447. #endif                    /* StandardLib */
  448.  
  449. #if IntBits != WordBits
  450. #undef SysMem
  451. #endif                    /* Intbits != WordBits */
  452.  
  453. #ifdef SysMem
  454. #undef memcopy
  455. #undef memfill
  456. #define memcopy(to,from,len) memcpy(to,from,len)
  457. #define memfill(to,from,len) memset(to,from,len)
  458. #endif                    /* SysMem */
  459.  
  460. #ifdef SysOpt
  461. #define optindex optind
  462. #endif                    /* SysOpt */
  463.  
  464. /*
  465.  * Provide definition to use void if it's supported (mainly avoids error
  466.  *  messages with some C compilers.  Note: typedef does not work, so care
  467.  *  is needed not to use compound declarations.
  468.  */
  469.  
  470. #ifdef VoidType
  471. #define novalue void
  472. #define noargs void
  473. #else                    /* VoidType */
  474. #define novalue int
  475. #define noargs
  476. #endif                    /* VoidType */
  477.  
  478. /*
  479.  * And something to handle a cast problem for signal().
  480.  */
  481.  
  482. #ifndef SigFncCast
  483. #ifdef VoidType
  484. #define SigFncCast (void (*)(int))
  485. #else                    /* VoidType */
  486. #define SigFncCast
  487. #endif                    /* VoidType */
  488. #endif                    /* SigFncCast */
  489.  
  490. /*
  491.  * Customize output if not pre-defined.
  492.  */
  493.  
  494. #ifndef TraceOut
  495. #define TraceOut(s) fprintf(stderr,s)
  496. #endif                    /* TraceOut */
  497.  
  498. #if EBCDIC
  499. #define BackSlash "\xe0"
  500. #else                    /* EBCDIC */
  501. #define BackSlash "\\"
  502. #endif                    /* EBCDIC */
  503.  
  504. #ifndef WriteBinary
  505. #define WriteBinary "wb"
  506. #endif                    /* WriteBinary */
  507.  
  508. #ifndef ReadBinary
  509. #define ReadBinary "rb"
  510. #endif                    /* ReadBinary */
  511.  
  512. #ifndef ReadEndBinary
  513. #define ReadEndBinary "r+b"
  514. #endif                    /* ReadEndBinary */
  515.  
  516. #ifndef WriteText
  517. #define WriteText "w"
  518. #endif                    /* WriteText */
  519.  
  520. #ifndef ReadText
  521. #define ReadText "r"
  522. #endif                    /* ReadText */
  523.  
  524. /*
  525.  * "hidden" is used to declare static functions;  "hidden" normally == "static",
  526.  *  except with compilers that can't handle "static" in prototypes.
  527.  */
  528.  
  529. #ifndef hidden
  530. #define hidden static
  531. #endif                    /* hidden */
  532.  
  533. /*
  534.  * The "Params" macro allows a single declaration to be used with both old- and
  535.  *  new-style compilers.
  536.  */
  537.  
  538. #ifdef Prototypes
  539. #define Params(a) a
  540. #else                    /* Prototypes */
  541. #define Params(a) ()
  542. #endif                    /* Prototypes */
  543.  
  544. /*
  545.  * The following code is operating-system dependent [@config.01].
  546.  *  Any configuration stuff that has to be done at this point.
  547.  */
  548.  
  549. #if PORT
  550.    /* Probably nothing is needed. */
  551. Deliberate Syntax Error
  552. #endif                    /* PORT */
  553.  
  554. #if VMS
  555. #define ExecSuffix ".exe"
  556. #define ObjSuffix ".obj"
  557. #define LibSuffix ".olb"
  558. #endif                    /* VMS */
  559.  
  560. #if AMIGA || ARM || ATARI_ST || MACINTOSH || MVS || VM
  561. #endif                    /* AMIGA || ARM || ... */
  562.  
  563. #if MSDOS || OS2
  564.  
  565. /*
  566.  *  Define compiler-specific symbols to be zero if not already
  567.  *  defined.
  568.  */
  569.  
  570. #ifndef MICROSOFT
  571. #define MICROSOFT 0
  572. #endif                    /* MICROSOFT */
  573.  
  574. #ifndef CSET2
  575. #define CSET2 0
  576. #endif                    /* CSet/2 */
  577.  
  578. #ifndef CSET2V2
  579. #define CSET2V2 0
  580. #endif                    /* CSet/2 version 2 */
  581.  
  582. #ifndef TURBO
  583. #define TURBO 0
  584. #endif                    /* TURBO */
  585.  
  586. #ifndef HIGHC_386
  587. #define HIGHC_386 0
  588. #endif                    /* HIGHC_386 */
  589.  
  590. #ifndef INTEL_386
  591. #define INTEL_386 0
  592. #endif                    /* INTEL_386 */
  593.  
  594. #ifndef WATCOM
  595. #define WATCOM 0
  596. #endif                    /* WATCOM */
  597.  
  598. #ifndef ZTC_386
  599. #define ZTC_386 0
  600. #endif                    /* ZTC_386 */
  601.  
  602. #ifndef NT
  603. #define NT 0
  604. #endif                    /* NT */
  605.  
  606. #ifndef BORLAND_286
  607. #define BORLAND_286 0
  608. #endif                    /* BORLAND_286 (16-bit protected mode) */
  609.  
  610. #ifndef BORLAND_386
  611. #define BORLAND_386 0
  612. #endif                    /* BORLAND_386 (32-bit protected mode) */
  613.  
  614. #if HIGHC_386
  615. /*
  616.  * MetaWare's HighC 386 macro putc doesn't handle putc('\n') correctly -
  617.  * sometimes a CR is not written out before the LF.  So, redefine
  618.  * macro putc to actually issue an fputc.
  619.  */
  620. #undef putc
  621. #define putc(c,f) fputc(c,f)
  622. #endif                    /* HIGHC_386 */
  623. #endif                    /* MSDOS || OS2 */
  624.  
  625.  
  626. #if MACINTOSH
  627. #if LSC
  628. /*
  629.  * LightSpeed C requires that #define tokens appear after prototypes
  630.  */
  631. #define index strchr
  632. #define malloc mlalloc
  633. #define rindex strrchr
  634. #define unlink remove
  635. #endif                    /* LSC */
  636. #endif                    /* MACINTOSH */
  637.  
  638. #if MVS || VM
  639.  
  640. /*
  641.  *  Define compiler-specific symbols to be zero if not already
  642.  *  defined.
  643.  */
  644.  
  645. #ifndef SASC
  646. #define SASC 0
  647. #endif                    /* SASC */
  648.  
  649. #ifndef WATERLOO_C_V3_0
  650. #define WATERLOO_C_V3_0 0
  651. #endif                    /* WATERLOO_C_V3_0 */
  652. #endif                    /* MVS || VM */
  653.  
  654. #if UNIX || (MACINTOSH && MPW)
  655.  
  656. #undef WriteBinary
  657. #define WriteBinary "w"
  658.  
  659. #undef ReadBinary
  660. #define ReadBinary "r"
  661.  
  662. #undef ReadEndBinary
  663. #define ReadEndBinary "r+"
  664.  
  665. #ifndef NoHardWiredPaths
  666. #define HardWiredPaths
  667. #endif                    /* NoHardWiredPaths */
  668.  
  669. #ifndef NoHeader
  670. #undef Header
  671. #define Header
  672. #endif                    /* NoHeader */
  673.  
  674. #endif                    /* UNIX || (MACINTOSH && MPW) */
  675.  
  676. /*
  677.  * End of operating-system specific code.
  678.  */
  679.  
  680.  
  681. #ifndef DiffPtrs
  682. #define DiffPtrs(p1,p2) (word)((p1)-(p2))
  683. #endif                    /* DiffPtrs */
  684.  
  685. #ifndef AllocReg
  686. #define AllocReg(n) malloc((msize)n)
  687. #endif                    /* AllocReg */
  688.  
  689. #define MaxFileName 256
  690.  
  691. #ifndef RttSuffix
  692. #define RttSuffix ".r"
  693. #endif                    /* RttSuffix */
  694.  
  695. #ifndef DBSuffix
  696. #define DBSuffix ".db"
  697. #endif                    /* DBSuffix */
  698.  
  699. #ifndef PPInit
  700. #define PPInit ""
  701. #endif                    /* PPInit */
  702.  
  703. #ifndef PPDirectives
  704. #define PPDirectives {"passthru", PpKeep},
  705. #endif                    /* PPDirectives */
  706.  
  707. #ifndef NoRanlib
  708. #define Ranlib
  709. #endif                    /* NoRanlib */
  710.  
  711. #ifndef EventMon
  712. #if IntBits == 16
  713. #define NoSrcColumnInfo
  714. #endif                    /* IntBits == 16 */
  715. #endif                    /* EventMon */
  716.  
  717. #ifndef NoSrcColumnInfo
  718. #define SrcColumnInfo
  719. #endif                    /* NoSrcColumnInfo */
  720.  
  721. #ifndef ExecSuffix
  722. #define ExecSuffix ""
  723. #endif                    /* ExecSuffix */
  724.  
  725. #ifndef CSuffix
  726. #define CSuffix ".c"
  727. #endif                    /* CSuffix */
  728.  
  729. #ifndef HSuffix
  730. #define HSuffix ".h"
  731. #endif                    /* HSuffix */
  732.  
  733. #ifndef ObjSuffix
  734. #define ObjSuffix ".o"
  735. #endif                    /* ObjSuffix */
  736.  
  737. #ifndef LibSuffix
  738. #define LibSuffix ".a"
  739. #endif                    /* LibSuffix */
  740.  
  741. #ifndef CComp
  742. #define CComp "cc"
  743. #endif                    /* CComp */
  744.  
  745. #ifndef COpts
  746. #define COpts ""
  747. #endif                    /* COpts */
  748.  
  749. /*
  750.  * Note, size of the hash table is a power of 2:
  751.  */
  752. #define IHSize 128
  753. #define IHasher(x)    (((unsigned int)x)&(IHSize-1))
  754.  
  755. #if COMPILER
  756.  
  757. /*
  758.  * Code for the compiler.
  759.  */
  760.  
  761. #undef MultiThread        /* no way -- interpreter only */
  762. #undef EventMon            /* presently not supported in the compiler */
  763. #undef ExecImages               /* interpreter only */
  764.  
  765. #else                    /* COMPILER */
  766.  
  767. /*
  768.  * Code for the interpreter.
  769.  */
  770.  
  771. #ifndef IcodeSuffix
  772. #define IcodeSuffix ""
  773. #endif                    /* IcodeSuffix */
  774.  
  775. #ifndef IcodeASuffix
  776. #define IcodeASuffix ""
  777. #endif                    /* IcodeASuffix */
  778.  
  779. #ifndef U1Suffix
  780. #define U1Suffix ".u1"
  781. #endif                    /* U1Suffix */
  782.  
  783. #ifndef U2Suffix
  784. #define U2Suffix ".u2"
  785. #endif                    /* U2Suffix */
  786.  
  787. #ifndef USuffix
  788. #define USuffix ".u"
  789. #endif                    /* USuffix */
  790.  
  791. #endif                    /* COMPILER */
  792.  
  793. #ifndef IconOptions
  794.  
  795. #if ARM || MPW || UNIX || VMS
  796. #define IconOptions "C:ELS:Tce:f:mn:o:p:r:stuv:x"
  797. #endif                    /* ARM || MPW || UNIX || VMS */
  798.  
  799. #if THINK_C
  800. #define IconOptions "C:ELS:XITce:f:mn:o:p:r:stuv:x"
  801. #endif
  802.  
  803. #if MSDOS
  804. #ifdef MSWindows
  805. #define IconOptions "C:ELS:XITce:f:mn:o:p:qr:stuv:x"
  806. #else                    /* MSWindows */
  807. #define IconOptions "C:ELS:XITce:f:mn:o:p:r:stuv:x"
  808. #endif                    /* MSWindows */
  809. #endif                    /* MSDOS */
  810.  
  811. #if OS2
  812. #define IconOptions "C:ELS:Tce:f:in:o:p:r:stuv:x"
  813. #endif                    /* OS2 */
  814.  
  815. #endif                    /* Options */
  816.  
  817. #if EBCDIC
  818. #define CUsage "<-C C-comp> <-T> <-c> <-f{adelns}> <-n{acest}>\n\
  819.  <-o ofile> <-p C-opts> <-r runtime> <-s> <-t> <-u> <-v i>"
  820. #else                                   /* EBCDIC */
  821. #ifndef CUsage
  822. #if UNIX
  823. #define CUsage "[-C C-comp] [-E] [-T] [-c] [-f{adelns}] [-m] [-n{acest}]\n\
  824.  [-o ofile] [-p C-opts] [-r runtime] [-s] [-t] [-u] [-v i]"
  825. #else                    /* UNIX */
  826. #define CUsage "[-C C-comp] [-E] [-T] [-c] [-f{adelns}] [-n{acest}]\n\
  827.  [-o ofile] [-p C-opts] [-r runtime] [-s] [-t] [-u] [-v i]"
  828. #endif                    /* UNIX */
  829. #endif                    /* CUsage */
  830. #endif                    /* EBCDIC */
  831.  
  832. #ifndef TUsage
  833.  
  834. #if EBCDIC
  835. #define TUsage "<-cstu> <-fs> <-e efile> <-o ofile>"
  836. #endif                                   /* EBCDIC */
  837.  
  838. #if ARM || UNIX
  839. #define TUsage "[-cmstuE] [-fs] [-e efile] [-o ofile]"
  840. #endif                    /* ARM || UNIX */
  841.  
  842. #if MPW
  843. #define TUsage "[-cstuE] [-fs] [-e efile] [-o ofile]"
  844. #endif                    /* MPW */
  845.  
  846. #if THINK_C
  847. #define TUsage "[-cmstuE] [-fs] [-e efile] [-o ofile]"
  848. #endif
  849.  
  850. #if OS2
  851. #define TUsage "[-cistuEI] [-fs] [-e efile] [-o ofile]"
  852. #endif                    /* OS2 */
  853.  
  854. #if MVS || VM
  855. #define TUsage "<-cstuE> <-fs> <-e efile> <-o ofile>"
  856. #endif                    /* MVS || VM */
  857.  
  858. #if MSDOS
  859. #define TUsage "[-cstuEIX] [-fs] [-e efile] [-o ofile]"
  860. #endif                    /* MSDOS */
  861.  
  862. #endif                    /* TUsage */
  863.  
  864. #if (MSDOS || OS2) && !NT
  865. #undef DirectExecution
  866. #define DirectExecution
  867. #endif                    /* (MSDOS || OS2) && !NT */
  868.  
  869. #ifdef Header
  870. #undef DirectExecution
  871. #define DirectExecution
  872. #endif                    /* Header */
  873.  
  874. /*
  875.  * TEMPORARY
  876.  */
  877.  
  878. /*
  879.  *  Vsizeof is for use with variable-sized (i.e., indefinite)
  880.  *   structures containing an array of descriptors declared of size 1
  881.  *   to avoid compiler warnings associated with 0-sized arrays.
  882.  */
  883.  
  884. #define Vsizeof(s)    (sizeof(s) - sizeof(struct descrip))
  885.  
  886. /*
  887.  * Other sizeof macros:
  888.  *
  889.  *  Wsizeof(x)    -- Size of x in words.
  890.  *  Vwsizeof(x) -- Size of x in words, minus the size of a descriptor.    Used
  891.  *   when structures have a potentially null list of descriptors
  892.  *   at their end.
  893.  */
  894.  
  895. #define Wsizeof(x)    ((sizeof(x) + sizeof(word) - 1) / sizeof(word))
  896. #define Vwsizeof(x)    ((sizeof(x) - sizeof(struct descrip) +\
  897.                sizeof(word) - 1) / sizeof(word))
  898.  
  899.