#include #include #include #define MAXILINE (1500) /* largest logical line to read */ #define MAXBUFF (400) /* largest line produced from macro processor*/ #define MAXCMD (1800) /* absolute largest command produced */ #define COMMENT '#' /* delimits a comment */ #define MAKEFILE "makefile" /* name of default makefile */ #define BUILTINS "c:builtins.make" #define DEFTIME 0 /* default time when a file doesn't exist */ #define COLON ':' #define SEMICOLON ';' #define ESCAPE '$' #define FILENAME 1 #define EOS 0 #define ASSIGN '=' typedef struct _sn { struct _sn *next; char *string; } STRNODE; typedef struct _tn { struct _tn *lnode; /* pointer to left subtree */ struct _tn *rnode; /* pointer to right subtree */ struct _sn *targets; /* name of files being made */ struct _sn *depends; /* names of dependant files */ struct _sn *commands; /* Actions to be done to make file */ char error; /* any errors occured on branch */ } TNODE; typedef struct _bn { struct _bn *lnode; /* pointer to left subtree */ struct _bn *rnode; /* pointer to right subtree */ char *name; /* item name */ char *inode; /* pointer to date for name */ } TREENODE; /*----------------------------------------------------------------*/ extern TREENODE *Root; /* Root of file-name tree */ extern TREENODE *Macros; /* Root of macro substitutions */ extern BPTR OutputFile; extern int Inputline; /* current input line number */ extern char *cmdbuff; extern char AlwaysRebuild; /* -a */ #ifdef DEBUG extern char DebugMode; /* -d */ #endif extern char CreateBatch; /* -c */ extern char IgnoreErrors; /* -i */ extern char PrintMakeFile; /* -p */ extern char ContinueBranches; /* -k */ extern char NoExecuteMode; /* -c -n */ extern char DontPrintErrors; /* -q */ extern char SilentMode; /* -s */ extern char RespectCase; /* -o */ extern char QuestionMode; /* -q */ extern BPTR stdin, stdout, stderr; BPTR Open(), Input(), Output(); VOID Close(); LONG Read(), Write(); extern char *getmem(); extern char *getline(), *gmem(); extern STRNODE *makestr(); extern char *find(); extern long gtime();