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