/*
 * compiler options
 * March 1989, Miles Bader
 */

/* increase this for more options */
#define MAXOPTS        64

#ifndef BITSPERLONG
#define BITSPERLONG 32
#endif

extern long globalOpts[MAXOPTS/BITSPERLONG];

#define options_IsSet(opt) \
 (globalOpts[(opt)/BITSPERLONG]&(1L<<((opt)%BITSPERLONG)))
#define options_Set(opt) \
 (globalOpts[(opt)/BITSPERLONG]|=(1L<<((opt)%BITSPERLONG)))
#define options_Clear(opt) \
 (globalOpts[(opt)/BITSPERLONG]&=~(1L<<(long)((opt)%BITSPERLONG)))

void options_SetByName(char *optname);
void options_Init();


#define OPT_NONE       0

#define OPT_ANSI       1       /* enforce ansi fascism */
#define OPT_CPP                2       /* compat with c++ */
#define OPT_TRAD       3       /* use traditional style cpp */

#define OPT_ABSCODE    4       /* use long (absolute) addressing for function calls */
#define OPT_ABSDATA    5       /* use long (absolute) addressing for data */

#define OPT_RELOADA4   6       /* reload reg a4 in each function */
#define OPT_SHORTINTS  7       /* use short integers */
#define OPT_REGARGS    8       /* use register argument passing */
#define OPT_LONGALIGN  9       /* align everything to long boundaries */
#define OPT_STACKCHECK 10      /* put stack-checking into the func prolog */
#define OPT_PURESTRINGS        11      /* put strings in the text segment */

#define OPT_FFP                12      /* use mot fast floating point */
#define OPT_881                13      /* compile for a 68881 */
#define OPT_IEEE       14      /* ieee floating point */

#define OPT_68K                15      /* compile for a 68000 and up */
#define OPT_020                16      /* compile for a 68020 and up */
#define OPT_030                17      /* compile for a 68030 */

#define OPT_DETACH     18      /* make a program that runs in the background */
#define OPT_TINYMAIN   19      /* use tinymain (this doesn't work) */
#define OPT_RESIDENT   20      /* try and make resident-able */
#define OPT_CATCH      21      /* compile in code to try and catch exceptions */

#define OPT_OPTIMIZE   22      /* optimize the obj module */
#define OPT_LINK       23      /* link the object modules */
#define OPT_COMPILE    24      /* (otherwise, just pre-process) */
#define OPT_ASSEMBLE   25      /* emit object-modules (else assembly) */
#define OPT_DEBUG      26      /* produce debugging info */

#define OPT_ECHO       27      /* echo what we execute */
#define OPT_FILTER     28      /* filter out yucky message from passes */
#define OPT_EXEC       29      /* actually run each pass */

#define OPT_BIGLC1     30      /* run lc1b instead of lc1 */
