home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 342a.lha / make / h.h < prev    next >
C/C++ Source or Header  |  1990-02-10  |  3KB  |  131 lines

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