home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 216.lha / PdMake / h.h < prev    next >
C/C++ Source or Header  |  1996-02-15  |  3KB  |  129 lines

  1. /*
  2.  *     Include header for make
  3.  */
  4.  
  5.  
  6. #define uchar        unsigned char
  7. #define bool        uchar
  8.  
  9. typedef struct {                        /* an amiga date stamp */
  10.     long            t[3];                /* 3 longwords */
  11. } TimeStamp;
  12.  
  13. #define TRUE        (1)
  14. #define FALSE        (0)
  15. #define max(a,b)    ((a)>(b)?(a):(b))
  16.  
  17. #define DEFN1        "makefile"            /*  Default names  */
  18. #define DEFN2        "Makefile"
  19.  
  20. #define LZ             (2048)                /*  Line size  */
  21.  
  22. /*
  23.  *     A name.    This represents a file, either to be made, or existant
  24.  */
  25.  
  26. struct name
  27. {    struct name        *n_next;            /* Next in the list of names */
  28.     char            *n_name;            /* Called */
  29.     struct line     *n_line;            /* Dependencies */
  30.     TimeStamp        n_time;                /* Modify time of this name */
  31.     uchar            n_flag;                /* Info about the name */
  32. };
  33.  
  34. #define N_MARK        0x01                /* For cycle check */
  35. #define N_DONE        0x02                /* Name looked at */
  36. #define N_TARG        0x04                /* Name is a target */
  37. #define N_PREC        0x08                /* Target is precious */
  38. #define N_DOUBLE    0x10                /* Double colon target */
  39.  
  40. /*
  41.  *     Definition of a target line.
  42.  */
  43. struct line
  44. {
  45.     struct line        *l_next;            /* Next line (for ::) */
  46.     struct depend    *l_dep;                /* Dependents for this line */
  47.     struct cmd        *l_cmd;                /* Commands for this line */
  48. };
  49.  
  50. /*
  51.  *     List of dependents for a line
  52.  */
  53. struct depend
  54. {    struct depend    *d_next;            /* Next dependent */
  55.     struct name     *d_name;            /* Name of dependent */
  56. };
  57.  
  58. /*
  59.  *     Commands for a line
  60.  */
  61. struct cmd
  62. {    struct cmd        *c_next;            /* Next command line */
  63.     char            *c_cmd;                /* Command line */
  64. };
  65.  
  66. /*
  67.  *     Macro storage
  68.  */
  69.  
  70. struct macro
  71. {    struct macro    *m_next;            /* Next variable */
  72.     char            *m_name;            /* Called ... */
  73.     char            *m_val;                /* Its value */
  74. /*    char            *m_sub;        */        /* Temp subst value, from PAMAKE */
  75.     uchar            m_flag;                /* Infinite loop check */
  76. };
  77.  
  78. #define M_LOOPCHK   0x01                /* For loop check */
  79. #define M_ENV        0x02                /* ex-environment macro */
  80. #define M_PERM        0x04                /* not resetable */
  81.  
  82. extern FILE            *ifile[4];
  83. extern int            fln[4];
  84. extern char            fname[4][80];
  85. extern int             nestlvl;
  86.  
  87. extern char            *myname;
  88. extern struct name  namehead;
  89. extern struct macro *macrohead;
  90. extern struct name    *firstname;
  91. extern bool            silent;
  92. extern bool            ignore;
  93. extern bool            rules;
  94. extern bool            dotouch;
  95. extern bool            quest;
  96. extern bool            domake;
  97. extern bool            makeall;
  98. extern bool            efirst;
  99. extern char            str1[];
  100. extern char            str2[];
  101. extern int            lineno;
  102. #if MSDOS
  103. extern bool            envirf;
  104. extern bool            display;
  105. #endif
  106.  
  107. char                *fgets();
  108. char                *index();
  109. char                *rindex();
  110.  
  111. char                *malloc();
  112. extern int            errno;
  113.  
  114. char                *getmacro();
  115. struct macro        *setmacro();
  116. void                input();
  117. void                error();            /* warning message */
  118. void                fatal();            /* fatal error message, does setjmp */
  119. int                    make();                /* does the actual 'make' traversal */
  120. struct name            *newname();
  121. struct depend        *newdep();
  122. struct cmd            *newcmd();
  123. void                newline();
  124. char                *suffix();
  125. void                touch();
  126. void                makerules();
  127. char                *gettok();
  128. void                precious();
  129.