/*
** Global variables
*/

#define FALSE       0
#define TRUE        1

/* help codes */
#define COMPILER    0
#define CODE        1
#define OPTIMIZE    2
#define WARNINGS    3
#define INCLUDES    4
#define DEFINE      5
#define LIBLINK     6
#define MAIN        7

/* exit codes for mainMenu() */
#define SAVE        1
#define SAVEDEFAULT 2
#define QUIT        3

/* for ignore/include tables */
#define EMPTY       -1
#define MAXWARNS    10

/* code and data models */
#define SMALL       0
#define LARGE       1

/* return value for parsefunction */
#define ILLEGALCHAR 100

/* keycode for ESC key */
#define ESC 27

/* non modifiable settings variables */
/*
char pp[120]  = {"-pp=vcpp -Ivinclude: -D__STDC__=1 %s %s >%s"};
char ppv[120] = {"-ppv=vcpp -Ivinclude: -D__STDC__=1 %s %s >%s"};
char as[120]  = {"-as=FreePhxAss opt NRQBTLPSM quiet %s to %s"};
char asv[120] = {"-asv=FreePhxAss opt NRQBTLPSM %s to %s"};
char rm[80]   = {"-rm=delete quiet %s"};
char rmv[80]  = {"-rmv=delete %s"};
char ld[160]  = {"-ld=PhxLnk vlib:startup.o %s %s vlib:vc.lib vlib:amiga.lib to %s"};
char l2[80]   = {"-l2=PhxLnk %s %s to %s"};
char ldv[160] = {"-ldv=PhxLnk vlib:startup.o %s %s vlib:vc.lib vlib:amiga.lib to %s"};
char l2v[80]  = {"-l2v=PhxLnk %s %s to %s"};
*/
char pp[120]  = "-pp=vcpp -Ivinclude: -D__STDC__=1 %s %s >%s";
char ppv[120] = "-ppv=vcpp -Ivinclude: -D__STDC__=1 %s %s >%s";
char as[120]  = "-as=FreePhxAss opt NRQBTLPSM quiet %s to %s";
char asv[120] = "-asv=FreePhxAss opt NRQBTLPSM %s to %s";
char rm[80]   = "-rm=delete quiet %s";
char rmv[80]  = "-rmv=delete %s";
char ld[160]  = "-ld=PhxLnk vlib:startup.o %s %s vlib:vc.lib vlib:amiga.lib to %s";
char l2[80]   = "-l2=PhxLnk %s %s to %s";
char ldv[160] = "-ldv=PhxLnk vlib:startup.o %s %s vlib:vc.lib vlib:amiga.lib to %s";
char l2v[80]  = "-l2v=PhxLnk %s %s to %s";


/* Settings variables */
char compilationName[255];
int optimizeMode;
/* int errorHighlight; */
int cpuCode;
int verboseOutput;
int compileMethod;
int keepIntermediateFiles;
int noStdLib;
int fpuCode;
int maxErrors;
int maxOptPasses;
int inlineSize;
int datamodel;
int codemodel;
int stripfilename;

/* program specific variables */
char defualtName[512];           /* filename for configfile      */
int ignoreWarnTable[MAXWARNS] = {EMPTY,EMPTY,EMPTY,EMPTY,EMPTY,EMPTY,EMPTY,EMPTY,EMPTY,EMPTY};
int warnTable[MAXWARNS] = {EMPTY,EMPTY,EMPTY,EMPTY,EMPTY,EMPTY,EMPTY,EMPTY,EMPTY,EMPTY};
char includePathTable[11][100] = {"", "", "", "", "", "", "", "", "", ""};
char libLinkTable[11][100] =  {"", "", "", "", "", "", "", "", "", ""};
char defineTable[11][100] = {"", "", "", "", "", "", "", "", "", ""};

char cpuname[6][30] = {
    "All  ",
    "[33m68010[0m",
    "[33m68020[0m",
    "[33m68030[0m",
    "[33m68040[0m",
    "[33m68060[0m"};


char on_off1[2][15] = {"[33mOff[0m", "On "};

char on_off2[2][15] = {"Off  ", "[33mOn [0m"};


char optimizename[5][20] = {
    "[33mNone[0m   ",
    "Default"          ,
    "[33mSome[0m   ",
    "[33mMost[0m   ",
    "[33mAll [0m   "};


char verbosename[4][20] = {
    "Off  ",
    "[33mOn   [0m",
    "[33mHeavy[0m"};


char docompilename[4][77] = {
    "Complete Compilation",
    "[33mDo not compile, save the preprocessed C sources with .i suffix[0m",
    "[33mDo not link, save the compiled files with .o suffix[0m",
    "[33mDo not assemble, save the compiled files with .asm suffix.[0m"};


char intermediatename[2][80] = {
    "Delete all intermediate files.",
    "[33mKeep all generated files (*.asm, *.i, *.o).[0m"};


char nostdlibname[2][60] = {
    "Link with stdlib",
    "[33mDo not link with standard-startup/librarie[0m"};


char fpuname[3][15] = {
    "None ",
     "[33mIEEE[0m",
     "[33mFPU[0m"};


char modelname[2][20] ={"[33mSmall[0m", "Large"};


/* macros */
#define negate(x)   ((x == TRUE) ? (x = FALSE) : (x = TRUE))
#define add(x,max)  ((x == max) ? (x = 0) : (x++))


/* protos */
int optimizeMenu(void);
int warningMenu(void);
int includePathMenu(void);
int defineMenu(void);
void line(int);
int libLinkMenu(void);
void back_quit(void);
void back_help_quit(void)
void updateLibList(void);
void removeLib(char *);
void addLib(char *);
int defineMenu(void);
int codeMenu(void);
int compilerMenu(void);
void help(int);

int getch(void);
