xref: /csrg-svn/old/make/defs (revision 6661)
1*6661Smckusick/* defs 4.4 82/05/07 */
22802Swnj#include <stdio.h>
32802Swnj#include <ctype.h>
46578Smckusick#include <sys/param.h>
5*6661Smckusick#include <dir.h>
62802Swnj
72802Swnj#define SHELLCOM "/bin/sh"
82802Swnj
92802Swnjtypedef long int TIMETYPE;
102802Swnj
112802Swnj#ifdef unix
122802Swnj/*  to install metering, add a statement like */
132802Swnj#define METERFILE "/usr/sif/make/Meter"
142802Swnj/* to turn metering on, set external variable meteron to 1 */
152802Swnj#endif
162802Swnj
172802Swnj/* define FSTATIC to be static on systems with C compilers
182802Swnj   supporting file-static; otherwise define it to be null
192802Swnj*/
202802Swnj#define FSTATIC static
212802Swnj
222802Swnj#define NO 0
232802Swnj#define YES 1
242802Swnj
252802Swnj#define unequal strcmp
262802Swnj#define HASHSIZE 1021
272802Swnj#define NLEFTS 512
282802Swnj#define NCHARS 500
292802Swnj#define NINTS  250
302802Swnj#define INMAX 2500
312802Swnj#define OUTMAX 3500
322802Swnj#define QBUFMAX 2500
332802Swnj#define MAXDIR 10
342802Swnj
352802Swnj#define ALLDEPS  1
362802Swnj#define SOMEDEPS 2
372802Swnj
382802Swnj#define META 01
392802Swnj#define TERMINAL 02
402802Swnjextern char funny[128];
412802Swnj
422802Swnj
432802Swnj#define ALLOC(x) (struct x *) ckalloc(sizeof(struct x))
442802Swnj
452802Swnjextern int sigivalue;
462802Swnjextern int sigqvalue;
472802Swnjextern int waitpid;
482802Swnjextern int dbgflag;
492802Swnjextern int prtrflag;
502802Swnjextern int silflag;
512802Swnjextern int noexflag;
522802Swnjextern int keepgoing;
532802Swnjextern int noruleflag;
542802Swnjextern int touchflag;
552802Swnjextern int questflag;
562802Swnjextern int ndocoms;
572802Swnjextern int ignerr;
582802Swnjextern int okdel;
592802Swnjextern int inarglist;
602802Swnjextern char *prompt;
612802Swnjextern int nopdir;
622802Swnjextern char junkname[ ];
632802Swnj
642802Swnj
652802Swnj
662802Swnjstruct nameblock
672802Swnj	{
682802Swnj	struct nameblock *nxtnameblock;
692802Swnj	char *namep;
702802Swnj	struct lineblock *linep;
712802Swnj	int done:3;
722802Swnj	int septype:3;
732802Swnj	TIMETYPE modtime;
742802Swnj	};
752802Swnj
762802Swnjextern struct nameblock *mainname ;
772802Swnjextern struct nameblock *firstname;
782802Swnj
792802Swnjstruct lineblock
802802Swnj	{
812802Swnj	struct lineblock *nxtlineblock;
822802Swnj	struct depblock *depp;
832802Swnj	struct shblock *shp;
842802Swnj	};
852802Swnjextern struct lineblock *sufflist;
862802Swnj
872802Swnjstruct depblock
882802Swnj	{
892802Swnj	struct depblock *nxtdepblock;
902802Swnj	struct nameblock *depname;
912802Swnj	};
922802Swnj
932802Swnjstruct shblock
942802Swnj	{
952802Swnj	struct shblock *nxtshblock;
962802Swnj	char *shbp;
972802Swnj	};
982802Swnj
992802Swnjstruct varblock
1002802Swnj	{
1012802Swnj	struct varblock *nxtvarblock;
1022802Swnj	char *varname;
1032802Swnj	char *varval;
1042802Swnj	int noreset:1;
1052802Swnj	int used:1;
1062802Swnj	};
1072802Swnjextern struct varblock *firstvar;
1082802Swnj
1092802Swnjstruct pattern
1102802Swnj	{
1112802Swnj	struct pattern *nxtpattern;
1122802Swnj	char *patval;
1132802Swnj	};
1142802Swnjextern struct pattern *firstpat;
1152802Swnj
1166578Smckusickstruct dirhdr
1172802Swnj	{
1186578Smckusick	struct dirhdr *nxtopendir;
1196578Smckusick	DIR *dirfc;
1202802Swnj	char *dirn;
1212802Swnj	};
1226578Smckusickextern struct dirhdr *firstod;
1232802Swnj
1242802Swnj
1252802Swnjstruct chain
1262802Swnj	{
1272802Swnj	struct chain *nextp;
1282802Swnj	char *datap;
1292802Swnj	};
1302802Swnj
1312802Swnjchar *copys(), *concat(), *subst();
1322802Swnjint *ckalloc();
1332802Swnjstruct nameblock *srchname(), *makename();
1342802SwnjTIMETYPE exists();
135