home *** CD-ROM | disk | FTP | other *** search
- /***************************************************************\
- * *
- * PDMAKE, Atari ST version *
- * *
- * Adapted from mod.sources Vol 7 Issue 71, 1986-12-03. *
- * *
- * This port makes extensive use of the original net.sources *
- * port by Jwahar Bammi. *
- * *
- * Ton van Overbeek *
- * Email: TPC862@ESTEC.BITNET *
- * TPC862%ESTEC.BITNET@WISCVM.WISC.EDU (ARPA) *
- * ...!mcvax!tpc862%estec.bitnet (UUCP Europe) *
- * ...!ucbvax!tpc862%estec.bitnet (UUCP U.S.A.) *
- * 71450,3537 (CompuServe) *
- * *
- \***************************************************************/
-
- /*
- * Include header for make
- */
-
-
- #ifdef atarist
- #define ATARIST
- #endif
-
- #ifdef ATARIST
-
- #include <osbind.h>
- #include "decl.h"
-
- /* #define MEGRULES */ /* Define if default .c.o rule is to be
- * generated to use the Megamax C Compiler
- */
-
- /* #define MEGAMAX */ /* If using Megamax C to compile Make
- * This symbol has NO relation to the
- * symbol MEGRULES
- */
-
- #ifdef MEGAMAX
- #undef Fdatime /* Megamax has it incorrectly defined */
- #define Fdatime(a,b,c) gemdos(0x57,a,b,c)
- #endif /* MEGAMAX */
-
- #ifdef TRUE
- #undef TRUE
- #endif
-
- #ifdef FALSE
- #undef FALSE
- #endif
-
- #ifdef uchar
- #undef uchar
- #endif
-
- #ifdef NULL
- #undef NULL
- #endif
- #define NULL 0L
-
- #ifdef max
- #undef max
- #endif
-
- #endif /* ATARIST */
-
- #ifndef uchar
- #ifdef os9
- #define uchar char
- #define void int
- #define fputc putc
- #endif
- #ifdef ATARIST
- #define uchar char
- #define void int
- #endif
- #ifndef uchar
- #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
- /* os9 and Atari ST are 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();
-