home *** CD-ROM | disk | FTP | other *** search
- /*
- * Include header for make
- */
-
-
- #ifndef uchar
- #ifdef os9
- #define uchar char
- #define void int
- #define fputc putc
- #else
- #define uchar unsigned char
- #endif
- #endif
-
- #define bool uchar
- #define time_t long
- #define TRUE (1)
- #define FALSE (0)
- #define max(a,b) ((a)>(b)?(a):(b))
-
- #define DEFN1 "makefile" /* Default names */
- #ifdef unix
- #define DEFN2 "Makefile"
- #endif
- #ifdef eon
- #define DEFN2 "Makefile"
- #endif
-
- #ifdef amiga
- #define strcmp stricmp
- #endif
-
- /* os9 is case insensitive */
-
- #define LZ (1024) /* Line size */
-
-
-
- /*
- * A name. This represents a file, either to be made, or existant
- */
-
- struct name {
- struct name *n_next; /* Next in the list of names */
- char *n_name; /* Called */
- struct line *n_line; /* Dependencies */
- time_t n_time; /* Modify time of this name */
- uchar n_flag; /* Info about the name */
- };
-
- #define N_MARK 0x01 /* For cycle check */
- #define N_DONE 0x02 /* Name looked at */
- #define N_TARG 0x04 /* Name is a target */
- #define N_PREC 0x08 /* Target is precious */
- #define N_DOUBLE 0x10 /* Double colon target */
-
- /*
- * Definition of a target line.
- */
- struct line {
- struct line *l_next; /* Next line (for ::) */
- struct depend *l_dep; /* Dependents for this line */
- struct cmd *l_cmd; /* Commands for this line */
- };
-
-
- /*
- * List of dependents for a line
- */
- struct depend {
- struct depend *d_next; /* Next dependent */
- struct name *d_name; /* Name of dependent */
- };
-
-
- /*
- * Commands for a line
- */
- struct cmd {
- struct cmd *c_next; /* Next command line */
- char *c_cmd; /* Command line */
- };
-
-
- /*
- * Macro storage
- */
- struct macro {
- struct macro *m_next; /* Next variable */
- char *m_name; /* Called ... */
- char *m_val; /* Its value */
- uchar m_flag; /* Infinite loop check */
- };
-
- extern char *myname;
- extern struct name namehead;
- extern struct macro *macrohead;
- extern struct name *firstname;
- extern bool silent;
- extern bool ignore;
- extern bool rules;
- extern bool dotouch;
- extern bool quest;
- extern bool domake;
- extern char str1[];
- extern char str2[];
- extern int lineno;
-
- char *fgets();
- char *index();
- char *rindex();
- char *malloc();
- extern int errno;
-
- char *getmacro();
- struct macro *setmacro();
- void input();
- void error();
- void fatal();
- int make();
- struct name *newname();
- struct depend *newdep();
- struct cmd *newcmd();
- void newline();
- char *suffix();
- void touch();
- void makerules();
- char *gettok();
- void precious();
-