$~ MKDEPEND.BCKї MKDEPEND.BCK!BACK [.MKDEPEND] MKDEPEND.BCK/SAV PIERONNE O`V5.3 _LAGON:: b _BISOU$DKA300: V5.3 ~ :*[PIERONNE.MKDEPEND]CPP.ED;1+,./ 48-G0 123KPWO56@EV7`E`89GHJ#:# $XConsortium: cpp.ed,v 1.3 89/12/12 12:44:18 jim Exp $# # $Locker $#/struct symtab stab/d/struct symtab \*defloc;/d/struct symtab \*udfloc;/d/struct symtab \*incloc;/d/struct symtab \*ifloc;/d/struct symtab \*elsloc;/d/struct symtab \*eifloc;/d/struct symtab \*ifdloc;/d/struct symtab \*ifnloc;/d/struct symtab \*ysysloc;/d/struct symtab \*varloc;/d/struct symtab \*lneloc;/d/struct symtab \*ulnloc;/d/struct symtab \*uflloc;/d/^sayline(/s/$/ DELETED/p .,/^}/d/^unfill(/s/$/ DELETED/p .-1,/^}/d/^doincl(/s/$/ DELETED/p .-1,/^}/d/^equfrm(/s/$/ DELETED/p .,/^}/d/^dodef(/s/$/ DELETED/p .-1,/^}/d/^control(/s/$/ DELETED/p .-1,/^}/d/^savestring(/s/$/ DELETED/p .-1,/^}/d/^stsym(/s/$/ DELETED/p .-1,/^}/d/^ppsym(/s/$/ DELETED/p .-1,/^}/d/^yyerror(/s/$/ DELETED/p .,/^}/d/^ppwarn(/s/$/ DELETED/p .,/^}/d/^lookup(/s/$/ DELETED/p .-1,/^}/d/^subst(/s/$/ DELETED/p .-1,/^}/d/^trmdir(/s/$/ DELETED/p .-1,/^}/d/^copy(/s/$/ DELETED/p .-1,/^}/d/^pperror(/s/$/ DELETED/p .,/^}/d3/^main(/s/$/ CHANGED to cpp_varsetup(argc,argv)/p.ccpp_varsetup(argc,argv)./^strdex(/s/$/ DELETED/p .-1,/^}/d4/^ for(i=1; i * This file is strictly for the sake of cpy.y and yylex.c (if' * you indeed have the source for cpp). */ #define IB 1 #define SB 2 #define NB 4 #define CB 8 #define QB 16 #define WB 32#define SALT '#',#if pdp11 | vax | ns16000 | mc68000 | ibm032#define COFF 128#else#define COFF 0#endif/*, * These variables used by cpy.y and yylex.c */&extern char *outp, *inp, *newp, *pend;extern char *ptrtab;extern char fastab[];extern char slotab[];/* * cppsetup */ struct filepointer *currentfile;struct inclist *currentinc;cppsetup(line, filep, inc) register char *line;$ register struct filepointer *filep; register struct inclist *inc;{ register char *p, savec;" static boolean setupdone = FALSE; boolean value; if (!setupdone) { cpp_varsetup(); setupdone = TRUE; } currentfile = filep; currentinc = inc; inp = newp = line; for (p=newp; *p; p++) ; /*8 * put a newline back on the end, and set up pend, etc. */ *p++ = '\n'; savec = *p; *p = '\0'; pend = p; ptrtab = slotab+COFF; *--inp = SALT; outp=inp;  value = yyparse(); *p = savec; return(value);}struct symtab *lookup(symbol) char *symbol;{# static struct symtab undefined; struct symtab *sp;$ sp = isdefined(symbol, currentinc); if (sp == NULL) { sp = &undefined; sp->s_value = NULL; } return (sp);}pperror(tag, x0,x1,x2,x3,x4) int tag,x0,x1,x2,x3,x4;{G warning("\"%s\", line %d: ", currentinc->i_file, currentfile->f_line); warning(x0,x1,x2,x3,x4);} yyerror(s) register char *s;{ fatal("Fatal error: %s\n", s);}#endif /* CPP */*[PIERONNE.MKDEPEND]DEF.H;1+,/ ./ 4H*-G0 123KPWO56>4R7}`89GHJ /*9 * $XConsortium: def.h,v 1.12 89/12/12 12:44:24 jim Exp $ */#include #include #ifdef VMS#include #include #else#include #include #include #endif#define MAXDEFINES 512#define MAXFILES 512#define MAXDIRS 10A#define SYMTABINC 10 /* must be > 1 for define() to work right */#define TRUE 1#define FALSE 0=/* the following must match the directives table in main.c */ #define IF 0#define IFDEF 1#define IFNDEF 2#define ELSE 3#define ENDIF 4#define DEFINE 5#define UNDEF 6#define INCLUDE 7#define LINE 8#define PRAGMA 9#define ERROR 10#define IDENT 11#define SCCS 12#define ELIF 13#define EJECT 14C#define IFFALSE 15 /* pseudo value --- never matched */C#define ELIFFALSE 16 /* pseudo value --- never matched */C#define INCLUDEDOT 17 /* pseudo value --- never matched */ #ifdef DEBUGextern int _debugmask;/* * debug levels are: *  * 0 show ifn*(def)*,endif * 1 trace defined/!defined * 2 show #include * 3 show #include SYMBOL * 4-6 unused */H#define debug(level,arg) { if (_debugmask & (1 << level)) warning arg; }#else#define debug(level,arg) /**/#endif /* DEBUG */typedef unsigned char boolean;struct symtab { char *s_name; char *s_value;};struct inclist {4 char *i_incstring; /* string from #include line */3 char *i_file; /* path name of the include file */@ struct inclist **i_list; /* list of files it itself includes */' int i_listlen; /* length of i_list */8 struct symtab *i_defs; /* symbol table for this file */4 struct symtab *i_lastdef; /* last symbol defined */' int i_deflen; /* number of defines */? boolean i_defchecked; /* whether defines have been checked */= boolean i_notified; /* whether we have revealed includes */6 boolean i_marked; /* whether it's in the makefile */5 boolean i_searched; /* whether we have read this */H boolean i_included_sym; /* whether #include SYMBOL was found */# /* Can't use i_list if TRUE */};struct filepointer { char *f_p; char *f_base; char *f_end; long f_len; long f_line;};char *copy();char *malloc();char *realloc();char *basename();char *getline();struct symtab *slookup();struct symtab *isdefined();struct symtab *fdefined();struct filepointer *getfile();struct inclist *newinclude();struct inclist *inc_path();*[PIERONNE.MKDEPEND]INCLUDE.C;1+,O%. / 4H -G0 123KPWO 56@'RQ7 2`89GHJ/*< * $XConsortium: include.c,v 1.8 89/12/12 12:44:20 jim Exp $ */#include "def.h"*extern struct inclist inclist[ MAXFILES ], *inclistp;extern char *includedirs[ ];extern char *notdotdot[ ];extern boolean show_where_not;,struct inclist *inc_path(file, include, dot) register char *file, *include; boolean dot;{ static char path[ BUFSIZ ]; register char **pp, *p; register struct inclist *ip; struct stat st; boolean found = FALSE; /*< * Check all previously found include files for a path that * has already been expanded. */% for (ip = inclist; ip->i_file; ip++)H if ((strcmp(ip->i_incstring, include) == 0) && !ip->i_included_sym) { found = TRUE; break; } /*= * If the path was surrounded by "", then check the absolute * path provided. */ if (!found && dot) { if (stat(include, &st) == 0) {% ip = newinclude(include, include); found = TRUE; } else if (show_where_not)% warning("\tnot in %s\n", include); } /*7 * See if this include file is in the directory of the * file being compiled. */ if (!found) {( for (p=file+strlen(file); p>file; p--) if (*p == '/') break; if (p == file) strcpy(path, include); else {% strncpy(path, file, (p-file) + 1); path[ (p-file) + 1 ] = '\0';( strcpy(path + (p-file) + 1, include); } remove_dotdot(path); if (stat(path, &st) == 0) {" ip = newinclude(path, include); found = TRUE; } else if (s how_where_not)" warning("\tnot in %s\n", path); } /*B * Check the include directories specified. (standard include dir * should be at the end.) */ if (!found)% for (pp = includedirs; *pp; pp++) {( sprintf(path, "%s/%s", *pp, include); remove_dotdot(path); if (stat(path, &st) == 0) {# ip = newinclude(path, include); found = TRUE; break; } else if (show_where_not)# warning("\tnot in %s\n", path); } if (!found) { /*; * If we've announced where it's not include it anyway so$ * it gets on the dependency list. */ if (show_where_not)% ip = newinclude(include, include); else ip = NULL; } return(ip);}/*? * Ocaisionally, pathnames are created that look like ../x/../yA * Any of the 'x/..' sequences within the name can be eliminated.- * (but only if 'x' is not a symbolic link!!) */remove_dotdot(path) char *path;{& register char *end, *from, *to, **cp; char *components[ MAXFILES ], newpath[ BUFSIZ ]; boolean component_copied; /*" * slice path up into components. */ to = newpath; if (*path == '/') *to++ = '/'; *to = '\0'; cp = components;! for (from=end=path; *end; end++) if (*end == '/') { while (*end == '/') *end++ = '\0'; if (*from) *cp++ = from; from = end; } *cp++ = from; *cp = NULL; /*6 * Now copy the path, removing all 'x/..' components. */ cp = components; component_copied = FALSE; while(*cp) {; if (!isdot(*cp) && !isdotdot(*cp) && isdotdot(*(cp+1))) { if (issymbolic(newpath, *cp)) goto dont_remove; cp++; } else { dont_remove: if (component_copied) *to++ = '/'; component_copied = TRUE; for (from = *cp; *from; ) *to++ = *from++; *to = '\0'; } cp++; } *to++ = '\0'; /*4 * copy the reconstituted path back to our pointer. */ strcpy(path, newpath);}isdot(p) register char *p;{% if(p && *p++ == '.' && *p++ == '\0') return(TRUE); return(FALSE);} isdotdot(p) register char *p;{4 if(p && *p++ == '.' && *p++ == '.' && *p++ == '\0') return(TRUE); return(FALSE);}issymbolic(dir, component) register char *dir, *component;{#ifdef S_IFLNK struct stat st; char buf[ BUFSIZ ], **pp;9 sprintf(buf, "%s%s%s", dir, *dir ? "/" : "", component); for (pp=notdotdot; *pp; pp++) if (strcmp(*pp, buf) == 0) return (TRUE); if (lstat(buf, &st) == 0' && (st.st_mode & S_IFMT) == S_IFLNK) { *pp++ = copy(buf);" if (pp >= ¬dotdot[ MAXDIRS ])/ fatal("out of .. dirs, increase MAXDIRS\n"); return(TRUE); }#endif return(FALSE);}/*? * Add an include file to the list of those included by 'file'. */.struct inclist *newinclude(newfile, incstring)$ register char *newfile, *incstring;{ register struct inclist *ip; /*= * First, put this file on the global list of include files. */ ip = inclistp++;( if (inclistp == inclist + MAXFILES - 1)- fatal("o ut of space: increase MAXFILES\n"); ip->i_file = copy(newfile); ip->i_included_sym = FALSE; if (incstring == NULL) ip->i_incstring = ip->i_file; else$ ip->i_incstring = copy(incstring); return(ip);}included_by(ip, newfile)' register struct inclist *ip, *newfile;{ register i; if (ip == NULL) return; /*A * Put this include file (newfile) on the list of files included< * by 'file'. If 'file' is NULL, then it is not an includeB * file itself (i.e. was probably mentioned on the command line).: * If it is already on the list, don't stick it on again. */ if (ip->i_list == NULL)" ip->i_list = (struct inclist **)6 malloc(sizeof(struct inclist *) * ++ip->i_listlen); else {! for (i=0; ii_listlen; i++)$ if (ip->i_list[ i ] == newfile) { if (!ip->i_included_sym) { /* only bitch if ip has */# /* no #include SYMBOL lines *// warning("%s includes %s more than once!\n"," ip->i_file, newfile->i_file); warning("Already have\n");# for (i=0; ii_listlen; i++). warning("\t%s\n", ip->i_list[i]->i_file); } return; }6 ip->i_list = (struct inclist **) realloc(ip->i_list,/ sizeof(struct inclist *) * ++ip->i_listlen); }) ip->i_list[ ip->i_listlen-1 ] = newfile;} inc_clean (){ register struct inclist *ip;* for (ip = inclist; ip < inclistp; ip++) { ip->i_marked = FALSE; }}*[PIERONNE.MKDEPEND]MAIN.C;1+,)./ 4J-G0 123KPWO56&R7`89GHJ /*: * $XConsortium: main.c,v 1.40 89/12/16 21:03:37 rws Exp $ */#include "def.h" #ifdef hpux#define sigvec sigvector#endif /* hpux */#include #ifdef VMS#include #include #endif #ifdef DEBUGint _debugmask;#endifchar *ProgramName;char *directives[] = { "if", "ifdef", "ifndef", "else", "endif", "define", "undef", "include", "line", "pragma", "error", "ident", "sccs", "elif", "eject", NULL};#define MAKEDEPEND0#include "imakemdep.h" /* from config sources */#undef MAKEDEPEND$struct symtab deflist[ MAXDEFINES ];#struct inclist inclist[ MAXFILES ], *inclistp = inclist;char *filelist[ MAXFILES ];char *includedirs[ MAXDIRS ];char *notdotdot[ MAXDIRS ]; #ifdef VMSchar *objfile = ".obj";#elsechar *objfile = ".o";#endifJchar *startat = "# DO NOT DELETE THIS LINE -- make depend depends on it.";int width = 78;boolean printed = FALSE;boolean verbose = FALSE;boolean show_where_not = FALSE;static#ifdef SIGNALRETURNSINTint#elsevoid#endif catch (sig) int sig;{ fflush (stdout); fatal ("got signal %d\n", sig);} #ifndef USGstruct sigvec sig_vec = { catch, (1<<(SIGINT -1)) |(1<<(SIGQUIT-1)) |(1<<(SIGBUS-1)) |(1<<(SIGILL-1)) |(1<<(SIGSEGV-1)) |(1<<(SIGHUP-1)) |(1<<(SIGPIPE-1)) |(1<<(SIGSYS-1)), 0};#endif /* USG */main(argc, argv) int argc; char **argv;{( register struct symtab *symp = deflist; register char **fp = filelist;$ register char **incp = includedirs; register char *p; register struct inclist *ip; char *makefile = NULL;! struct filepointer *filecontent; struct symtab *psymp = predefs; char *endmarker = NULL; ProgramName = argv[0]; #ifdef VMS symp->s_name = "VMS"; symp->s_value = ""; ++symp;#endif while (psymp->s_name) *symp++ = *psymp++;, for(argc--, argv++; argc; argc--, argv++) {> /* if looking for endmarker then check before parsing */4 if (endmarker && strcmp (endmarker, *argv) == 0) { endmarker = NULL; continue; } if (**argv != '-') { *fp++ = argv[0]; continue; } switch(argv[0][1]) { case '-': endmarker = &argv[0][2];. if (endmarker[0] == '\0') endmarker = "--"; break; #ifdef VMS case 'd' :#endif case 'D': symp->s_name = argv[0]+2; if (*symp->s_name == '\0') { symp->s_name = *(++argv); argc--; }! for (p=symp->s_name; *p ; p++) if (*p == '=') { *p++ = '\0'; break; } symp->s_value = p; symp++; break; #ifdef VMS case 'i' :#endif case 'I': *incp++ = argv[0]+2; if (**(incp-1) == '\0') { *(incp-1) = *(++argv); argc--; } break;* /* do not use if endmarker processing */ case 'w': if (endmarker) break; if (argv[0][2] == '\0') { argv++; argc--; width = atoi(argv[0]); } else width = atoi(argv[0]+2); break; case 'o':  if (endmarker) break; if (argv[0][2] == '\0') { argv++; argc--; objfile = argv[0]; } else objfile = argv[0]+2; break; case 'v': if (endmarker) break; verbose = TRUE; #ifdef DEBUG if (argv[0][2])! _debugmask = atoi(argv[0]+2);#endif break; case 's': if (endmarker) break; startat = argv[0]+2; if (*startat == '\0') { startat = *(++argv); argc--; } if (*startat != '#'). fatal("-s flag's value should start %s\n", "with '#'."); break; case 'f': if (endmarker) break; makefile = argv[0]+2; if (*makefile == '\0') { makefile = *(++argv); argc--; } break; 3 /* Ignore -O, -g so we can just pass ${CFLAGS} to makedepend */ case 'O': case 'g': break; default: if (endmarker) break;- /* fatal("unknown opt = %s\n", argv[0]); */, warning("ignoring option %s\n", argv[0]); } }#ifdef __GNUC__( *incp++ = "/usr/local/lib/gcc-include";#endif #ifdef VMS *incp++ = "/sys$library";#else *incp++ = INCLUDEDIR;#endif #ifdef CRAY *incp++ = "/usr/include/stdc";#endif redirect(startat, makefile); /* * catch signals. */ #ifdef USG8/* should really reset SIGINT to SIG_IGN if it was. */ signal (SIGHUP, catch); signal (SIGINT, catch); signal (SIGQUIT, catch); signal (SIGILL, catch); signal (SIGBUS, catch); signal (SIGSEGV, catch); signal (SIGSYS, catch);#else. sigvec(SIGHUP, &sig_vec, (struct sigvec *)0);. sigvec(SIGINT, &sig_vec, (struct sigvec *)0);/ sigvec(SIGQUIT, &sig_vec, (struct sigvec *)0);. sigvec(SIGILL, &sig_vec, (struct sigvec *)0);. sigvec(SIGBUS, &sig_vec, (struct sigvec *)0);/ sigvec(SIGSEGV, &sig_vec, (struct sigvec *)0);. sigvec(SIGSYS, &sig_vec, (struct sigvec *)0);#endif /*) * now peruse through the list of files. */ for(fp=filelist; *fp; fp++) { filecontent = getfile(*fp);% ip = newinclude(*fp, (char *)NULL);( find_includes(filecontent, ip, ip, 0); freefile(filecontent);6 recursive_pr_include(ip, ip->i_file, basename(*fp)); inc_clean(); } if (printed) printf("\n"); exit(0);}!struct filepointer *getfile(file) char *file;{ register int fd; struct filepointer *content; struct stat st;D content = (struct filepointer *)malloc(sizeof(struct filepointer));' if ((fd = open(file, O_RDONLY)) < 0) {( warning("cannot open \"%s\"\n", file);> content->f_p = content->f_base = content->f_end = malloc(1); *content->f_p = '\0'; return(content); } fstat(fd, &st); content->f_len = st.st_size+1;* content->f_base = malloc(content->f_len); if (content->f_base == NULL)! fatal("cannot allocate mem\n"); #ifdef VMS { char* pc = content->f_base; int len;6 while (len = read(fd, pc, st.st_size)) pc += len; }#else9 if (read(fd, content->f_base, st.st_size) != st.st_size)) fatal("cannot read all of %s\n", file);#endif close(fd); content->f_p = content->f_base;/ content->f_end = content->f_base + st.st_size; *content->f_end = '\0'; content->f_line = 0; return(content);} freefile(fp) struct filepointer *fp;{ free(fp->f_base); free(fp);}char *copy(str) register char *str;{, register char *p = malloc(strlen(str) + 1); strcpy(p, str); return(p);}match(str, list) register char *str, **list;{ register int i; for (i=0; *list; i++, list++) if (strcmp(str, *list) == 0) return(i); return(-1);}/*I * Get the next line. We only return lines beginning with '#' since that- * is all this program is ever interested in. */char *getline(filep)$ register struct filepointer *filep;{( register char *p, /* walking pointer */" *eof, /* end of file pointer */( *bol; /* beginning of line pointer */# register lineno; /* line number */ p = filep->f_p; eof = filep->f_end; if (p >= eof) return((char *)NULL); lineno = filep->f_line; for(bol = p--; ++p < eof; ) {: if (*p == '/' && *(p+1) == '*') { /* consume comments */ *p++ = ' ', *p++ = ' '; while (*p) {% if (*p == '*' && *(p+1) == '/') { *p++ = ' ', *p = ' '; break; } else if (*p == '\n') lineno++; *p++ = ' '; } continue; } else if (*p == '\n') { lineno++; if (*bol == '#') { register char *cp; *p++ = '\0';1 /* punt lines with just # (yacc generated) */ for (cp = bol+1; 3 *cp && (*cp == ' ' || *cp == '\t'); cp++); if (*cp) goto done; } bol = p+1; } } if (*bol != '#') bol = NULL;done: filep->f_p = p; filep->f_line = lineno; return(bol);}char *basename(file) register char *file;{ register char *p;6 for (p=file+strlen(file); p>file && *p != '/'; p--) ; if (*p == '/') p++; file = copy(p);5 for(p=file+strlen(file); p>file && *p != '.'; p--) ; if (*p == '.') *p = '\0'; return(file);}"#if defined(USG) && !defined(CRAY)int rename (from, to) char *from, *to;{: (void) unlink (to);1 if (link (from, to) == 0) {" unlink (from);u return 0; } else { return -1;  }}#endif /* USG */redirect(line, makefile) char *line, *makefile;{e struct stat st; FILE *fdin, *fdout; char backup[ BUFSIZ ],m buf[ BUFSIZ ]; boolean found = FALSE;e int len;d /*"4 * if makefile is "-" then let it pour onto stdout. */; if (makefile && *makefile == '-' && *(makefile+1) == '\0'), return; /*, * use a default makefile is not specified. */ if (!makefile) {r! if (stat("makefile", &st) == 0)u makefile = "makefile";E& else if (stat("Makefile", &st) == 0) makefile = "Makefile"; else) fatal("[mM]akefile is not present\n");M } else stat(makefile, &st);+ if ((fdin = fopen(makefile, "r")) == NULL)* fatal("cannot open \"%s\"\n", makefile);% sprintf(backup, "%s.bak", makefile);e #ifdef VMS remove(backup);#else  unlink(backup);#endif" if (rename(makefile, backup) < 0)6 fatal("cannot rename %s to %s\n", makefile, backup);6 if ((fdout = freopen(makefile, "w", stdout)) == NULL)( fatal("cannot open \"%s\"\n", backup); len = strlen(line);- while (fgets(buf, BUFSIZ, fdin) && !found) { 2 if (*buf == '#' && strncmp(line, buf, len) == 0) found = TRUE; fputs(buf, fdout); } if (!found) { if (verbose)D warning("Adding new delimiting line \"%s\" and dependencies...\n", line);g: puts(line); /* same as fputs(fdout); but with newline */ } fflush(fdout);; #ifdef USG chmod(makefile, st.st_mode);e#else* #ifdef VMS chmod(makefile, st.st_mode);r#else * fchmod(fileno(fdout), st.st_mode);#endif#endif /* USG */}c /*VARARGS*/c$fatal(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){k( warning(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9); exit (1);}- /*VARARGS0*/&warning(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){w' fprintf(stderr, "%s: ", ProgramName);m0 fprintf(stderr, x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);} /* if looking for endmarker then check before pa#*[PIERONNE.MKDEPEND]MAKEDEPEND.EXE;1+,c./ 4-G0 123 KPWO56Ȇ7`7I`89GHJ0DX0205(`7`|h(d MAKEDEPENDV1.0`A`7`05-05   $ 0 2>  ? ! VAXCRTL_001! LIBRTL_001! MTHRTL_001ififdefifndefelseendifdefineundefincludelinepragmaerroridentsccselifejectvax1VMS1.obj# DO NOT DELETE THIS LINE -- make depend depends on it.got signal %d VMS---s flag's value should start %s with '#'.ignoring option %s /sys$library cannot open "%s" cannot allocate mem makefilemakefileMakefileMakefile[mM]akefile is not present rcannot open "%s" %s.bakcannot rename %s to %s wcannot open "%s" Adding new delimiting line "%s" and dependencies... %s: not in %s not in %s %s/%s not in %s out of space: increase MAXFILES %s includes %s more than once! Already have %s %s, line %d: incomplete undef == "%s" %s (reading %s), line %d: unknown directive == "%s" %s (reading %s), line %d: incomplete include == "%s" %s, line %d: unknown directive == "%s" define() botch %s (reading %s): %s: cannot find include file "%s" r %s%s : %s # %s includes: # %s "(05<BHMRdX\^bdiN ^Rݬ¡^,>Y/X︝VYPST[QWмư`ƴPRa}a׬լ1?ZPWݼWPW1 PЬQ-a1мPQQ-11QD1QPPD  P?PPd1PdL`(1Y?PмPWg1SƵW1KЬUeb Uмb׬bP``= PP`PR1ЬUeTQ1Uмa׬1W1ЬP`UP׬ݼjPi1U~jPi1PW1ЬP`QP׬м1PQ1WzqPWjЬQahhP` Qмh׬hP`#GƸ6W2ЬP`[k&Pм[׬PPWݼ׬լ1[hsRb_bRbEb8 b+ b bRbYPboPTb PSSST3 TbaPݣSRb P|^$VPUݬPR)ݬHPPPeUPRU ݥ P ХTݭTR&PSSTݭTRPSRХeԥUP^ЬRR ^RRPPPSRSSP ^ЬRSbbݬPSPSRbPP|^ЬUeTХSTSPХQTVTVRTTS1Pd/GTP`*>TVPT f dhPd*TP`/TVPT f dJd Q d:d 5Qb#*RP`VV V P`V V V `TRTTS1pb#RTQRP ^ЬRRnRPSSRc/ SSRc/c/SЬRSPRR4RPSSRc.PSSRc.c.cRP|Θ^SVЬP `-P`լI-P 6ݥݤߦKߦkRդ PBPݠߦyRR SS ֤ x ~ݤ P RUB^MPF\\` !\\`^ﰓWެXhRPS1qެVެ U@`YZVD<fehS+P[[PP5'0A}1P^?P~efhPPRR RefhiPRR RR1efhi1PefhiPTT~efhP1sT T1eP[ eSjP[/eSjP$~efhPP1+efhi1efhiP1 ~efhP1լ efhiլ[PfS21PcShRݢeRݢgT1eSjPR1b1PeSjPR1b1PSefLtPSefLdP`PeTݤߧ'LfRTR ݢߧ*LShRݢߧ8P.eTݤߧ^LfRTR ݢߧaLShRݢߧoPhPS1P ^YЬTTPS1ެWެ UVgeTSPXXPPy111mmqqqqqqquq1uqg?PegTfPRR RegTfPRR RR-egTf"XPPXPSݤeRݢɖ&TPS1AP^YЬVЬRЬ SVWg g  Wg g WUeaezUeaezeXe WFPTXeT 4լ/e e  Ue e SRUPPTPTլTPe e  Ue e TPP)EEEy1x~?PSRU?P1\T1VPeRRRBiRe_eRRRBiRe_f1 SUPWЬRЧU SUPWe"ue<pSBSRSBUeRR"R<PUeR R"R<eP"Te/e"*Pe!e"Pee>Pee>fUVPTP^ЬRRPݬR PPP<^ЬUЬRPЬRݢUKPT5ЬPՠ,РSRՠ !PcUPTRSЬPR SЬRTP^ЬR bbݬ PRPRbPP^2P|^ՌV6TЬSЬRТPPUբxPPѢP~բ PxP~ݢzPP~PТP PPPQPxQQAQaPxPPPUТPPUPxPPѢP ƾSRbPPP@dPb_RbPPP@dPb_bSPeb b  Rb b RP^iT~ݬ ЬSݣPRYЬPSPݣݠdF ݣߤ7ݬ ߤ*3~ݬ ЬPݠ^PRRݬ*ݢfPSݬRS7S< ^ЬSЬTЬ UѣT UTS"Rգ PUTBRR <^[TﴍUЬSߤ6ݣPRR>;-`R*+<PRRPP0Ѭe4Ьeݬ ߤ8IPPR,PPPR)R գeݣߤCRգ BP`ߤSRR @@!|\< dl$ld|DL8 , t z @VAXCRTLLIBRTLMTHRTLzzz MAIN dcatch( (dmainggetfilehfreefile hcopy0 hmatch1 igetlineibasenameshjredirect lfatal4PlwarningO d|CPPSETUPINCLUDElinc_path\n remove_dotdot 4oisdotPoisdotdot po issymbolicxo newincludeho included_byp inc_clean$ lɹ  PARSEp find_includes Lsgobble@tdeftypelv isdefined1vfdefinedtTwslookup.w zero_value wdefine: Pp  PRx add_includeyrecursive_pr_includeP ypr& x[  *[PIERONNE.MKDEPEND]MAKEFILE.;1+,,./ 4g-G0123KPWO56 7`7`89GHJmakedepend.exe : main.obj, cppsetup.obj, include.obj, parse.obj, pr.obj open/write f sys$scratch:makedepend.opt write f "sys$share:vaxcrtl/share" close f link/exe=makedepend.exe main.obj, cppsetup.obj, include.obj, - parse.obj, pr.obj, sys$scratch:makedepend.opt/opt delete sys$scratch:makedepend.opt; # DO NOT DELETE THIS LINE -- make depend depends on it. main.obj : DEF.H,SYS$COMMON:[SYSLIB]STDIO.H main.obj : SYS$COMMON:[SYSLIB]STDDEF.H,SYS$COMMON:[SYSLIB]CTYPE.H main.obj : SYS$COMMON:[SYSLIB]TYPES.H,SYS$COMMON:[SYSLIB]STAT.H main.obj : SYS$COMMON:[SYSLIB]SIGNAL.H,SYS$COMMON:[SYSLIB]FILE.H main.obj : IMAKEMDEP.H cppsetup.obj : DEF.H,SYS$COMMON:[SYSLIB]STDIO.H cppsetup.obj : SYS$COMMON:[SYSLIB]STDDEF.H,SYS$COMMON:[SYSLIB]CTYPE.H cppsetup.obj : SYS$COMMON:[SYSLIB]TYPES.H,SYS$COMMON:[SYSLIB]STAT.H include.obj : DEF.H,SYS$COMMON:[SYSLIB]STDIO.H include.obj : SYS$COMMON:[SYSLIB]STDDEF.H,SYS$COMMON:[SYSLIB]CTYPE.H include.obj : SYS$COMMON:[SYSLIB]TYPES.H,SYS$COMMON:[SYSLIB]STAT.H parse.obj : DEF.H,SYS$COMMON:[SYSLIB]STDIO.H parse.obj : SYS$COMMON:[SYSLIB]STDDEF.H,SYS$COMMON:[SYSLIB]CTYPE.H parse.obj : SYS$COMMON:[SYSLIB]TYPES.H,SYS$COMMON:[SYSLIB]STAT.H parse.obj : SYS$COMMON:[SYSLIB]SIGNAL.H pr.obj : DEF.H,SYS$COMMON:[SYSLIB]STDIO.H pr.obj : SYS$COMMON:[SYSLIB]STDDEF.H,SYS$COMMON:[SYSLIB]CTYPE.H pr.obj : SYS$COMMON:[SYSLIB]TYPES.H,SYS$COMMON:[SYSLIB]STAT.H b!*[PIERONNE.MKDEPEND]MKDEPEND.ALW;1+,I'./ 4-G0123KPWO56"c`7`89GHJ%! %%Dimensions: 0 0 612 792 %%Title: dvialw mkdepend %%CreationDate: Sat Mar 23 21:58:00 1991 %%Creator: PIERONNE and [TeX82 DVI Translator Version 2.10b for PostScr- %-ipt [Apple LaserWriter laser printer] %%Pages: (atend) %%BugHistory: Incorporates Allan Hetzel's 31-Oct-85 DARPA LASER-LOVERS - %-PS Version 23.0 X-on/X-off bug workaround %%EndComments %%EndProlog /TeXdict 200 dict def TeXdict begin /bdf {bind def} def /B { /h exch def /w exch def gsave currentpoint newpath moveto w 1 sub 0 rlineto 0 h 1 sub rlineto w 1 sub neg 0 rlineto closepath fill grestore } bdf /BOJ { 72 Resolution div 72 Resolution div scale userdict /note known {NOTE} {LETTER} ifelse } bdf /BOP { clear Mtrx setmatrix 20 260 translate } bdf /ch-image {ch-data 0 get} bdf /ch-xoff {ch-data 1 get} bdf /ch-yoff {ch-data 2 get} bdf /ch-width {ch-data 3 get} bdf /ch-height {ch-data 4 get} bdf /ch-tfmw {ch-data 5 get} bdf /CharBuilder { /ch-code exch def /font-dict exch def /ch-data font-dict /BitMaps get ch-code get def ch-data null eq not { ch-tfmw 0 ch-xoff neg ch-yoff ch-height sub ch-width ch-xoff sub ch-yoff setcachedevice 0 0 SNAP translate ch-width ch-height true [ 1 0 0 -1 ch-xoff ch-yoff ] {ch-image} imagemask } if } bdf /D { /ch-code exch def /ch-data exch def currentfont /BitMaps get ch-code ch-data put currentfont /Encoding get ch-code dup 3 string cvs cvn put } bdf /EOJ { end } bdf /EOP { /#copies exch def showpage } bdf /LANDSCAPE { letter initmatrix 72 Resolution div dup scale 0 3300 translate -90 rotate 0 -750 translate Mtrx currentmatrix pop } bdf /LEGAL { legal initmatrix 72 Resolution div dup scale 0 900 translate Mtrx currentmatrix pop } bdf /LETTER { letter initmatrix 72 Resolution div dup scale Mtrx currentmatrix pop } bdf /M { moveto } bdf /Mtrx 6 array def /NF { /newname exch def newname 7 dict def newname load begin /BitMaps 128 array def /BuildChar { CharBuilder } def /Encoding 128 array def 0 1 127 { Encoding exch /.notdef put } for /FontBBox [ 0 0 1 1 ] def /FontMatrix [ 1 0 0 1 0 0 ] def /FontType 3 def end newname newname load definefont pop } bdf() pop /NOTE { note initmatrix 72 Resolution div dup scale Mtrx currentmatrix pop } bdf /P {show} bdf() pop /Q {moveto w h B} bdf() pop /R {0 rmoveto show} bdf() pop /Resolution 300 def /S {moveto show} bdf() pop /SF {findfont exch scalefont setfont} bdf() pop /SNAP {transform 2 {floor 0.5 add exch} repeat itransform} bdf /T {currentpoint exch pop moveto show} bdf() pop end TeXdict begin BOJ /TB {save} bdf /TE {restore} bdf /BB {save /F0 NF 1 /F0 SF} bdf /BE {restore} bdf /cmbx10_3732 NF % TEX$PKDIR:cmbx10.746pk /F1 {1 /cmbx10_3732 SF} bdf /cmbx10_2160 NF % TEX$PKDIR:cmbx10.432pk /F2 {1 /cmbx10_2160 SF} bdf /cmbx12_1500 NF % TEX$PKDIR:cmbx12.300pk /F3 {1 /cmbx12_1500 SF} bdf /cmti12_1500 NF % TEX$PKDIR:cmti12.300pk /F4 {1 /cmti12_1500 SF} bdf /cmr12_1500 NF % TEX$PKDIR:cmr12.300pk /F5 {1 /cmr12_1500 SF} bdf %%Page: 3 1 BOP F2[<000007C00000000007C0000000000FE0000000000FE0000000000FE0000000001FF0 000000001FF0000000003FF8000000003FF8000000003FF8000000007FFC000000007FFC 00000000FFFE00000000F3FE00000000F3FE00000001F3FF00000001E1FF00000003E1FF 80000003C0FF80000003C0FF80000007C0FFC0000007807FC000000F807FE000000F003F E000000F003FE000001F003FF000001E001FF000003FFFFFF800003FFFFFF800003FFFFF F800007C000FFC0000780007FC0000F80007FE0000F00003FE0000F00003FE0001F00003 FF0001E00001FF0003E00001FF80FFFF003FFFFEFFFF003FFFFEFFFF003FFFFE>-2 41 47 41 51.9714750]65 D [-3 41 34 41 41.3446687]76 D [<00007FF007000007FFFE0F00001FFFFF9F00007 FF01FFF0000FF8003FF0003FF0001FF0007FC0000FF000FF800007F000FF800003F001FF 000003F003FF000001F003FE000001F007FE000000F007FE000000F007FC000000F00FFC 000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC 000000000FFC000000000FFC000000000FFC003FFFFF8FFC003FFFFF87FC003FFFFF87FE 00001FF007FE00001FF003FE00001FF003FF00001FF001FF00001FF000FF80001FF000FF 80001FF0007FC0001FF0003FF0003FF0000FFC003FF00007FF81FFF00001FFFFFBF00000 7FFFE1F0000007FF80700>-4 41 45 41 54.0470251]71 D [<0000FFE000000007FFFC 0000003FFFFF8000007FC07FC00001FF001FF00003FC0007F80007F80003FC000FF80003 FE001FF00001FF001FF00001FF003FE00000FF803FE00000FF807FE00000FFC07FC00000 7FC07FC000007FC07FC000007FC0FFC000007FE0FFC000007FE0FFC000007FE0FFC00000 7FE0FFC000007FE0FFC000007FE0FFC000007FE0FFC000007FE0FFC000007FE0FFC00000 7FE07FC000007FC07FE00000FFC07FE00000FFC03FE00000FF803FE00000FF801FF00001 FF001FF00001FF000FF80003FE0007FC0007FC0003FE000FF80001FF001FF00000FFC07F E000003FFFFF8000000FFFFE00000000FFE00000>-4 41 43 41 51.6393161]79 D [-3 41 48 41 51.5563397]82 D [-1 41 23 41 26.0687772] 73 D [<7FFFFFFFFFC07FFFFFFFFFC07FFFFFFFFFC07F807FC03FC07C007FC007C078007 FC003C078007FC003C070007FC001C0F0007FC001E0F0007FC001E0E0007FC000E0E0007 FC000E0E0007FC000E0E0007FC000E0E0007FC000E000007FC0000000007FC0000000007 FC0000000007FC0000000007FC0000000007FC0000000007FC0000000007FC0000000007 FC0000000007FC0000000007FC0000000007FC0000000007FC0000000007FC0000000007 FC0000000007FC0000000007FC0000000007FC0000000007FC0000000007FC0000000007 FC0000000007FC0000000FFFFFFE00000FFFFFFE00000FFFFFFE000>-2 40 43 40 47.8203749]84 D [-3 41 47 41 53.7979692]72 D [-3 41 58 41 65.2549195]77 D F5[<7FFFFFF87FFFFFF87C0780F8700780386007801860078018E007801CC007800CC0 07800CC007800CC007800CC007800C000780000007800000078000000780000007800000 078000000780000007800000078000000780000007800000078000000780000007800000 078000000780000007800000078000000780000007800003FFFF0003FFFF00>-2 34 30 34 35.2263312]84 D [<0F0000FF0000FF00001F00000F00000F00000F00000F00000F0 0000F00000F00000F00000F00000F00000F1F800F7FE00FE1E00FC1F00F80F00F80F00F0 0F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0 0F0FFF3FFFFF3FF>-1 35 24 35 27.0971779]104 D [<01FC0007FF001F0F803E03C03 C01C07801E07801E0FFFFE0FFFFE0F00000F00000F00000F00000F000007800007800603 C00E03E01C00F83C007FF0001FC00>-1 21 19 21 21.6777423]101 D [<1FF0007FFC0 07C3E007C1F007C0F00380F00000F00001F0007FF001FFF003F0F007C0F00F80F00F00F0 0F00F18F00F18F01F18F81F187C7FB83FF7F01FC3C0>-2 21 21 21 24.3874601]97 D [<0F1F80FFFFE0FFE1F00F80F80F007C0F003C0F003C0F001E0F001E0F001E0F001E0F00 1E0F001E0F003E0F003C0F003C0F807C0F80F80FE1F00F7FE00F3F800F00000F00000F00 000F00000F00000F00000F00000F0000FFF000FFF000>-1 21 23 31 27.0971779]112 D [<0F3EFFFFFFEF1FCF0F8F0F800F000F000F000F000F000F000F000F000F000F000F00 0F000F00FFF8FFF8>-1 21 16 21 18.9680245]114 D [<01FC0007FF000F07801C01C0 3800E07800F0700070F00078F00078F00078F00078F00078F00078F000787000707800F0 3800E01C01C00F078007FF0001FC00>-1 21 21 21 24.3874601]111 D [<03FE000FFF 801F0F803E0F803C0F80780700780000F00000F00000F00000F00000F00000F00000F000 007800007800C03C01C03E01801F87800FFF0003FC00>-2 21 18 21 21.6777423]99 D [<0F00F0FF0FF0FF0FF01F01F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00 F00F00F00F00F00F00F00F01F00F01F00F03F00787F807FEFF01FCFF>-1 21 24 21 27.0971779]117 D [<1FD83FF87878F038E018E018F000FC00FFC07FF03FF80FF800FCC 03CC01CE01CE01CF03CF878FFF0CFE0>-2 21 14 21 19.2389963]115 D [<0001E0001 FE0001FE00003E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 1E003F9E00FFFE01F0FE03E03E07C01E07801E07801E0F001E0F001E0F001E0F001E0F00 1E0F001E0F001E07001E07801E07803E03C07E01F0FF00FFDFE03F1FE>-2 35 23 35 27.0971779]100 D [<0E001F001F001F000E00000000000000000000000000000000000 F00FF00FF001F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 F00FFE0FFE0>0 34 11 34 13.5485889]105 D [<0F1F80FF7FE0FFE1E01FC1F00F80F0 0F80F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0 0F00F00F00F0FFF3FFFFF3FF>-1 21 24 21 27.0971779]110 D [<0300030003000300 0700070007000F001F003F00FFF8FFF80F000F000F000F000F000F000F000F000F000F00 0F0C0F0C0F0C0F0C0F0C0F1C079807F801F0>-1 31 14 31 18.9680245]116 D [<0000 F003FBF807FFB81F1F781E0F383C07803C07803C07803C07803C07803C07801E0F001F1F 001FFC001BF8003800003800003C00001FFF001FFFC00FFFE03FFFF07C01F8F00078E000 78E00038E00038F00078F000787C01F03F07E00FFF8003FE00>-1 22 21 33 24.3874601]103 D [<0F1FC0FE00FF7FF3FF80FFF1F78F801FC0FE07C00F807C03C00F8 07C03C00F007803C00F007803C00F007803C00F007803C00F007803C00F007803C00F007 803C00F007803C00F007803C00F007803C00F007803C00F007803C00F007803C0FFF3FF9 FFCFFF3FF9FFC>-1 21 38 21 40.6457668]109 D [<0F0000FF0000FF00001F00000F0 0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F1F800FFFE00FE 1F00F80780F003C0F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F0 03C0F003C0F807C0F80F80FE1F00E7FE00C3F80>-1 35 23  35 27.0971779]98 D [<0F 00FF00FF001F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F 000F000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF0FFF0>0 35 12 35 13.5485889]108 D [<003F0000FF0001FF8003EF8003CF80078F8007800007800 0078000078000078000078000078000078000FFF800FFF80007800007800007800007800 007800007800007800007800007800007800007800007800007800007800007800007800 00780007FFC007FFC00>0 35 17 35 14.9034478]102 D [-1 21 23 31 25.7423190]121 D [<7038F87CFC7EFC7E7C3E 0C060C060C061C0E180C180C381C7038E070E070>-2 35 15 15 24.3874601]34 D [-2 34 14 34 17.5958736]73 D [-1 21 23 21 25.7423190]118 D [<70F8F8F870>-4 5 5 5 13.5485889]46 D [<000FF030007FFC3000FC1E7003F0077007C003F00F8001F01F0001F01F0000F03E0000 F03C0000707C0000707C0000707C000030F8000030F8000030F8000000F8000000F80000 00F8000000F8000000F8000000F8000000F80000307C0000307C0000307C0000303E0000 703E0000601F0000E01F0000C00F8001C007C0038003F0070000FC1E00007FFC00000FF0 00>-3 35 28 36 35.2263312]67 D [-1 21 32 21 35.2263312]119 D [<70F8F8F870000000000000000000000070F8F8F870>-4 21 5 21 13.5485889]58 D [<000FE000007FF00000F8700001E0F80003C0F80007C0F8000780F8 0007807000078000000780000007800000078000000780000007800000FFFFF800FFFFF8 000780F80007807800078078000780780007807800078078000780780007807800078078 0007807800078078000780780007807800078078000780780007807800078078007FE1FF 807FE1FF80>0 35 25 35 27.0971779]12 D [<0F0000FF0000FF00001F00000F00000F 00000F00000F00000F00000F00000F00000F00000F00000F00000F0FFC0F0FFC0F07E00F 07C00F07000F0E000F1C000F38000F7C000FFC000FFE000FBF000F1F000F0F800F0FC00F 07C00F03E00F03E00F03F0FFE7FEFFE7FE>-1 35 23 35 25.7423190]107 D F4[<7FF8 FFF8FFF8>-3 12 13 3 17.4347347]45 D [<00FFF800FFF8000F00000F00001F00001E 00001E00001E00003E00003C00003C00003C00007C0000780000780000780000F80000F0 0000F00000F00001F00001E00001E00001E00003E00003C00003C00003C00007C0000780 000780000F8000FFF800FFF800>-3 34 21 34 18.7724282]73 D F4[<00FFFFF00000F FFFFC00000F003E00000F000F00001F000780001E000780001E0003C0001E0003C0003E0 003C0003C0003E0003C0003E0003C0003E0007C0003E000780003E000780003E00078000 3E000F80007C000F00007C000F00007C000F00007C001F0000F8001E0000F8001E0000F0 001E0001F0003E0001E0003C0003C0003C0007C0003C000780007C000F000078001E0000 7800780000F801F0000FFFFFC0000FFFFF00000>-3 34 35 34 36.7837539]68 D F5[< 70F8F8F870000000000000000000000070F8F8F8781818181838307070E0C0>-4 21 5 31 13.5485889]59 D [<000FF018003FFC1800FC0F3803F003B807C001(F80F8000F80F0 000F81F0000783E0000783E0000387C0000387C0000387C000018F8000018F8000018F80 00000F8000000F8000000F8000000F8000000F8000000F8001FFFF8001FFF7C0000787C0 000787C0000783E0000783E0000781F0000780F8000780FC0007807E000F803F001F800F E0798003FFF18000FF800>-3 35 32 36 38.2704882]71 D [<70F8FCFC7C0C0C0C1C18 183870E0E0>-4 5 6 15 13.5485889]44 D F3[-2 22 42 22 46.6998768]109 D [<07FE001FFF803F0FC03F07E 03F07F03F03F01E03F00003F00003F001FFF00FFFF03FE3F07F03F07E03F0FE03F0FC03F 0FC03F0FC07F0FE0FF87F1FFF3FFDFF0FF0FF>-2 22 24 22 27.2415948]97 D [-2 35 26 35 29.5765886]107 D [<01FE0007FF801F87E03F03E03E01F07E00F07C00F8FC00F8FC00F 8FFFFF8FFFFF8FC0000FC0000FC0000FC00007E00007E00003F00381F80780FE1F007FFE 000FF80>-2 22 21 22 25.5695887]101 D [<0003FE000003FE000003FE0000007E000 0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 1FE7E0007FFFE001FC3FE003F00FE003E007E007E007E007C007E00FC007E00FC007E00F C007E00FC007E00FC007E00FC007E00FC007E00FC007E007C007E007E007E003E00FE003 F01FE001F83FFC00FFFFFC001FC7FC0>-2 35 26 35 31.1332512]100 D [-2 22 26 32 31.1332512]112 D [-2 22 26 22 31.1332512]110 D F5[<7FE3FF007FE3FF0 00FC1F80003C1E00003E1C00001E3800000F3000000FF0000007E0000003C0000003E000 0003E0000007F00000067800000C7C00001C3C0000381E0000781F0000F81F800FFC3FF8 0FFC3FF80>0 21 25 21 25.7423190]120 D [-2 34 29 34 34.5402874]66 D [<03F8600FFCE01F0EE 03E07E07C03E07801E07801E0F801E0F001E0F001E0F001E0F001E0F001E0F001E07801E 07801E07C03E03E07E01F0FE00FFDE003F1E00001E00001E00001E00001E00001E00001E 00001E00001E0001FFE001FFE>-2 21 23 31 25.7423190]113 D [<70F8FCFC7C0C0C0 C1C18183870E0E0>-4 35 6 15 13.5485889]39 D [-2 34 27 34 31.8305696]70 D F4[<00001FF000 007FF80000F03C0001C03C0001C03C000380380003800000038000000700000007000000 07000000070000000F0000000E000000FFFFE000FFFFE0000E01E0000E01C0001E01C000 1C01C0001C03C0001C0380001C0380003C03800038078000380700003807000038070C00 780F1C00700E1800700E1800700E3800700F3000F007F000E003E000E0000000E0000001 E0000001C0000001C0000071C00000F3800000F7000000FF0000007E000000>2 35 30 45 27.3976031]12 D [<03E01FE01FC003C003C003C00380038007800780070007000F0 00F000E000E001E001E001C001C003C003C00380038007800780070007180F180F380E30 0E300F7007E003C00>-4 35 11 35 12.4534272]108 D [<01F807FE0F8E1E063C06780 6780EF83CFFF8FFC0F000F000E000E000E000E006E00EF01C78783FF01FC0>-6 21 15 21 22.4161689]101 D [<000100030007000F001E007E03FE07DE001C001C003C003C00 380038007800780070007000F000F000E000E001E001E001C001C003C003C00380038007 80FFFCFFFC>-6 33 16 33 24.9067910]49 D [<70F8F8F0F0>-6 5 5 5 14.9441126] 46 D [<007E0001FF8007C3800F07801E07801E07803C00003C000078000078000078000 0F80000F00000F00000F00000F00300700700780E003C3C003FF8000FE000>-5 21 17 21 22.4161689]99 D F4[<000FC0003FF000F8F801E03C01C03C03801C07381E06181E0 E181E0C181E0C383E1C303C18703C18607C1DE0781FC0F80F01F00003E0000780000F000 03E0000F80001E0000380000700000E00181C00383800703000707FC1E07FFFE0E1FFC0C 0FF80C03E00>-4 33 23 34 24.9067910]50 D [<0E1E1E1E1E060E0C0C1C383070E0C0 >-3 5 7 15 14.9441126]44 D F4[<01F0000FF0000FE00001E00001E00001E00001C00 001C00003C00003C000038000038000078000078000071F80077FC00FF1C00FC1E00F80E 00F00E01E01E01E01C01C01C01C01C03C03C03C038038038038078678070E78070C700F0 C700E1CF00F38F007F0E003E0>-3 35 23 35 24.9067910]104 D [<00F9C003FDC0078 FC00F07C01E07801E07803C07807C0780780700780700780F00F80F00F00E00F00E18F01 E38F01E30F03C30707C7079FE603FCFE01F07C0>-5 21 21 21 24.9067910]97 D [<00 007C0003FC0003F80000780000780000780000700000700000F00000F00000E00000E000 01E00001E000F9C003FDC0078FC00F07C01E07801E07803C07807C078078070078070078 0F00F80F00F00E00F00E18F01E38F01E30F03C30707C7079FE603FCFE01F07C0>-5 35 22 35 24.9067910]100 D [<0F07C01F9FE03BFC7031F07061F0F061E0F0E3C0E003C00 00380000380000780000780000700000700000F00000F00000E00000E00001E00001E000 01C0000>-3 21 20 21 20.5481865]114 D F4[<00007E0000FF0001EF0001CF00038E0 00380000380000780000700000700000700000700000F00000E0000FFF000FFF0000E000 01E00001E00001C00001C00001C00001C00003C000038000038000038000038000078000 0700000700000700000700000F00000E00000E00000E00001E00001C00001C00071C000F 38000F70000FF00007E0000>2 35 24 45 14.9441126]102 D F5[-1 34 47 35 50.1124870]87 D [<00C001C007C0FFC0FBC003C003C003C003C003C003C003C003C003C003C003C003C003 C003C003C003C003C003C003C003C003C003C003C003C003C003C0FFFFFFFF>-4 33 16 33 24.3874601]49 D [<03F8000FFE003C3F00380F807007C06007C0E003E0F803E0F80 3E0F801E0F801E07003E00003E00003C00007C00007C0000F80000F00001E00003C00007 80000F00001E00001C0000380600700600E00601C00E03800C07FFFC0FFFFC0FFFFC0FFF FC0>-2 33 19 33 24.3874601]50 D F4[<007E0001FF8007C7C00F83C01F01E01E01E0 3C01E03C01E07801E07801E07803E0F803C0F003C0F003C0F00780F00F80700F00781E00 3C7C001FF0000FC000>-5 21 19 21 24.9067910]111 D F2[<3E003E007F807F80FFC0 FFC0FFC0FFC0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE07FE07FE03FE03FE000E000E001E0 01E001C001C001C001C003C003C003800380078007800F000F001F001F003E003E003C00 3C0038003800>-2 42 27 22 36.0313923]34 D [<00FF80E003FFF1E00FFFFFE01FC0F FE03F001FE03E0007E07E0003E07C0003E0FC0001E0FC0001E0FC0000E0FE0000E0FF000 0E0FF800000FFF80000FFFFC0007FFFF8007FFFFE003FFFFF801FFFFFC00FFFFFC007FFF FE001FFFFF0003FFFF00003FFF800001FF800000FF8000007F8E00003F8E00001F8E0000 1F8E00001F8F00001F8F00001F0F80003F0FC0003E0FF0007E0FFE01FC0FFFFFF80F1FFF E00E03FF800>-4 41 29 41 38.1898554]83 D [-3 41 39 41 45.1636733]69 D F5[<007000E001E001C0038 007000F000E001E001C003C003C00380078007800700070007000F000F000F000F000F00 0F000F000F000F000F000F000F000F000F0007000700070007800780038003C003C001C0 01E000E000F000700038001C001E000E00070>-3 37 12 50 18.9680245]40 D [-3 37 12 50 18.9680245]41 D F2[-3 41 41 41 48.8996381]66 D [-3 41 46 41 52.8847221]85 D F4[<00000700E000 000600C000000600C000000E01C000000C018000001C0380000018030000001803000000 38070000003006000000700E000000600C000000E01C000000C018000000C018000001C0 380000018030003FFFFFFFE03FFFFFFFE0000E01C000000C018000001C03800000180300 0000180300000038070000003006000000700E0000FFFFFFFF80FFFFFFFF800180300000 0380700000030060000003006000000700E000000600C000000E01C000000C018000001C 038000001803000000180300000038070000003006000000700E000000600C000000600C 000000>-5 35 35 45 39.8509036]35 D [<00780078007800700000000000000000000 00000000000000F801FC039C031C071C061C0E3C0038003800780070007000F000E181E3 81C301C301C701CE01FC00F80>-3 33 13 33 14.9441126]105 D F4[<0F07E0001F9FF 0003BFC780031F8380061F0380061E03800E3C0780003C0700003807000038070000780F 0000780E0000700E0000701E1800F01C3800F01C3000E03C3000E0387001E03CE001E01F C001C00F800>-3 21 25 21 27.3975397]110 D [<0780381FC0383CE07830E07870E07 061E070E1C0F001C0F003C0E00380E00381E00781E00701C00701C30703C70703C607038 607078E079FCC03FDF!`~ MKDEPEND.BCKI'G![PIERONNE.MKDEPEND]MKDEPEND.ALW;10C01F0F8>-3 21 24 21 26.1521970]117 D F3[-2 34 48 34 53.1572141]77 D F5[<000F E3F0007FFFF800F87F7C01E0FE7C03C0FC7C07C0FC7C0780780007807800078078000780 780007807800078078000780780007807800FFFFFFC0FFFFFFC007807800078078000780 780007807800078078000780780007807800078078000780780007807800078078000780 780007807800078078000780780007807800078078007FE1FFC07FE1FFC0>0 35 30 35 28.4520367]11 D [ -2 34 40 34 44.6930514]77 D [-2 34 27 34 33.1854285]80 D [<007000F800F800F800700000000 0000000000000000000000000007807F807F800F80078007800780078007800780078007 80078007800780078007800780078007800780078007800780078F878F8F8F8F0F9E07FC 03F00>3 34 13 44 14.9034478]106 D [<000180000003C0000003C0000003C0000007 E0000007E0000007E000000FF000000CF000000CF000001CF80000187800001878000038 3C0000303C0000303C0000601E0000601E0000601E0000C00F0000C00F0000C00F0001FF FF8001FFFF8001800780030003C0030003C0030003C0060001E0060001E0060001E00E00 00F01F0001F0FFC00FFFFFC00FFF>-2 35 32 35 36.5638981]65 D [<03F8000FFE003 E1F00380F807807C07C07C07C07C07C07C07C07C00007C00007C0000780000F80001F000 03E0003FC0003F800001E00000F000007800007C00003E00003E07003E0F803E0F803E0F 803E0F803E0E007C07007C0780F803E1F000FFE0003F800>-2 33 19 34 24.3874601] 51 D TB F2(ALGORITHM)242 2805 S F5(The)242 2713 S(approac)343 T(h)510 T(used) 555 T(in)668 T(this)727 T(program)824 T(enables)1021 T(it)1194 T(to) 1245 T(run)1306 T(an)1397 T(order)1467 T(of)1596 T(magnitude)1654 T (faster)1897 T(than)2033 T(an)242 2652 S(y)293 T(other)333 T("dep)460 T (endency)561 T(generator")750 T(I)991 T(ha)1025 T(v)1076 T(e)1102 T(ev) 1137 T(er)1185 T(seen.)1240 T(Cen)1365 T(tral)1449 T(to)1540 T(this) 1600 T(p)1695 T(erformance)1723 T(are)1974 T(t)2055 T(w)2074 T(o)2108 T (assumptions:)242 2592 S(that)544 T(all)653 T(\014les)724 T(compiled) 825 T(b)1034 T(y)1061 T(a)1105 T(single)1149 T(mak)1288 T(e\014le)1379 T(will)1481 T(b)1576 T(e)1604 T(compiled)1646 T(with)1855 T(roughly) 1969 T(the)242 2532 S(same)326 T F4(-I)450 T F5(and)503 T F4(-D)599 T F5(options;)671 T(and)858 T(that)954 T(most)1061 T(\014les)1181 T(in) 1280 T(a)1338 T(single)1380 T(directory)1517 T(will)1726 T(include)1819 T(largely)1988 T(the)242 2472 S(same)325 T(\014les.)447 T(Giv)314 2412 S(en)391 T(these)457 T(assumptions,)584 T F3(mak)876 T(edep)979 T(end) 1095 T F5(exp)1199 T(ects)1275 T(to)1374 T(b)1436 T(e)1464 T(called) 1504 T(once)1643 T(for)1756 T(eac)1832 T(h)1900 T(mak)1944 T(e\014le,) 2035 T(with)242 2351 S(all)352 T(source)419 T(\014les)567 T(that)665 T (are)770 T(main)851 T(tained)956 T(b)1103 T(y)1130 T(the)1171 T(mak) 1254 T(e\014le)1345 T(app)1443 T(earing)1522 T(on)1669 T(the)1736 T (command)1820 T(line.)2041 T(It)242 2291 S(parses)295 T(eac)442 T(h)510 T(source)552 T(and)702 T(include)797 T(\014le)966 T(exactly)1045 T (once,)1213 T(main)1339 T(taining)1444 T(an)1609 T(in)1677 T(ternal) 1717 T(sym)1858 T(b)1944 T(ol)1972 T(table)2025 T(for)242 2231 S(eac) 312 T(h.)380 T(Th)439 T(us,)501 T(the)574 T(\014rst)654 T(\014le)751 T (on)826 T(the)890 T(command)971 T(line)1190 T(will)1278 T(tak)1367 T(e) 1436 T(an)1469 T(amoun)1533 T(t)1676 T(of)1707 T(time)1759 T(prop)1867 T(ortional)1965 T(to)242 2171 S(the)301 T(amoun)386 T(t)529 T(of)564 T (time)620 T(that)732 T(a)838 T(normal)879 T(C)1045 T(prepro)1097 T (cessor)1236 T(tak)1379 T(es.)1448 T(But)1525 T(on)1622 T(subsequen) 1690 T(t)1906 T(\014les,)1941 T(if)2053 T(it)2098 T(encoun)242 2111 S (ter's)391 T(an)497 T(include)565 T(\014le)733 T(that)812 T(it)917 T (has)966 T(already)1053 T(parsed,)1225 T(it)1393 T(do)1442 T(es)1494 T (not)1552 T(parse)1639 T(it)1767 T(again.)1815 T(F)314 2050 S(or)343 T (example,)400 T(imagine)603 T(y)783 T(ou)809 T(are)874 T(compiling)954 T(t)1175 T(w)1194 T(o)1228 T(\014les,)1265 T F4(\014le1.c)1375 T F5(and) 1515 T F4(\014le2.c,)1608 T F5(they)1762 T(eac)1871 T(h)1939 T(include) 1979 T(the)242 1990 S(header)325 T(\014le)482 T F4(he)560 T(ader.h,)606 T F5(and)768 T(the)863 T(\014le)947 T F4(he)1025 T(ader.h)1071 T F5(in) 1218 T(turn)1275 T(includes)1383 T(the)1570 T(\014les)1654 T F4(def1.h) 1751 T F5(and)1894 T F4(def2.h.)1989 T F5(When)242 19:30 S(y)383 T(ou) 409 T(run)475 T(the)565 T(command)649 T(mak)871 T(edep)962 T(end)1061 T (\014le1.c)1151 T(\014le2.c)1290 T F3(mak)242 1870 S(edep)345 T(end)460 T F5(will)565 T(parse)660 T F4(\014le1.c)791 T F5(and)935 T(consequen) 1033 T(tly)1249 T(,)1304 T F4(he)1335 T(ader.h)1381 T F5(and)1532 T (then)1630 T F4(def1.h)1744 T F5(and)1891 T F4(def2.h.)1989 T F5(It)242 1810 S(then)296 T(decides)407 T(that)576 T(the)683 T(dep)768 T (endencies)845 T(for)1063 T(this)1139 T(\014le)1235 T(are)1315 T (\014le1.o:)1397 T(header.h)1559 T(def1.h)1758 T(def2.h)1904 T(But)2050 T(when)242 1749 S(the)369 T(program)453 T(parses)648 T F4(\014le2.c)795 T F5(and)936 T(disco)1031 T(v)1136 T(ers)1162 T(that)1237 T(it,)1343 T (to)1405 T(o,)1449 T(includes)1505 T F4(he)1692 T(ader.h,)1738 T F5(it) 1901 T(do)1950 T(es)2002 T(not)2060 T(parse)242 1689 S(the)369 T (\014le,)453 T(but)545 T(simply)635 T(adds)791 T F4(he)906 T(ader.h,) 952 T(def1.h)1114 T F5(and)1258 T F4(def2.h)1353 T F5(to)1496 T(the) 1556 T(list)1640 T(of)1722 T(dep)1778 T(endencies)1855 T(for)2072 T F4 (\014le2.o.)242 1629 S F2("SEE)242 1485 S(ALSO")428 T F5(cc\0501\051,) 242 1392 S(mak)376 T(e\0501\051)467 T F2(BUGS)242 1248 S F5(If)242 1156 S(y)292 T(ou)318 T(do)385 T(not)455 T(ha)543 T(v)594 T(e)619 T(the)657 T(source)743 T(for)894 T(cpp,)970 T(the)1078 T(Berk)1163 T(eley)1265 T (C)1363 T(prepro)1417 T(cessor,)1556 T(then)1713 T F3(mak)1826 T(edep) 1929 T(end)2045 T F5(will)242 1095 S(b)336 T(e)364 T(compiled)405 T(in) 613 T(suc)673 T(h)741 T(a)785 T(w)828 T(a)863 T(y)887 T(that)930 T(all) 1038 T F4(#if)1108 T F5(directiv)1197 T(es)1358 T(will)1417 T(ev)1511 T (aluate)1557 T(to)1705 T("true")1767 T(regardless)1922 T(of)242 1035 S (their)302 T(actual)424 T(v)576 T(alue.)600 T(This)738 T(ma)855 T(y)920 T(cause)966 T(the)1102 T(wrong)1191 T F4(#include)1343 T F5(directiv) 1556 T(es)1717 T(to)1778 T(b)1843 T(e)1871 T(ev)1915 T(aluated.)1961 T F3(Mak)242 975 S(edep)351 T(end)466 T F5(should)568 T(simply)723 T(ha) 879 T(v)930 T(e)956 T(its)992 T(o)1060 T(wn)1084 T(parser)1161 T (written)1308 T(for)1479 T F4(#if)1553 T F5(expressions.)1639 T(Imagine) 314 915 S(y)502 T(ou)528 T(are)596 T(parsing)680 T(t)853 T(w)872 T(o) 906 T(\014les,)947 T(sa)1061 T(y)1104 T F4(\014le1.c)1147 T F5(and)1290 T F4(\014le2.c,)1387 T F5(eac)1546 T(h)1614 T(includes)1657 T(the)1847 T(\014le)1933 T F4(def.h.)2014 T F5(The)242 855 S(list)347 T(of)434 T (\014les)495 T(that)598 T F4(def.h)709 T F5(includes)833 T(migh)1026 T (t)1131 T(truly)1171 T(b)1297 T(e)1325 T(di\013eren)1369 T(t)1527 T (when)1567 T F4(def.h)1700 T F5(is)1824 T(included)1879 T(b)2079 T(y) 2106 T F4(\014le1.c)242 794 S F5(than)386 T(when)505 T(it)637 T(is)690 T(included)744 T(b)944 T(y)971 T F4(\014le2.c.)1016 T F5(But)1191 T (once)1292 T F3(mak)1408 T(edep)1511 T(end)1627 T F5(arriv)1734 T(es) 1835 T(at)1896 T(a)1960 T(list)2005 T(of)2091 T(dep)242 734 S(endencies) 319 T(for)535 T(a)610 T(\014le,)650 T(it)743 T(is)791 T(cast)840 T(in) 941 T(concrete.)998 T F2(A)242 590 S(UTHOR)293 T F5(T)242 497 S(o)274 T (dd)299 T(Brunho\013,)368 T(T)586 T(ektronix,)618 T(Inc.)823 T(and)924 T(MIT)1019 T(Pro)1133 T(ject)1212 T(A)1306 T(thena)1343 T(3)1174 123 S TE 1 EOP %%Page: 2 2 BOP F2[<7FFFFC3FFFF07FFFFC3FFFF07FFFFC3FFFF001FF8000F80000FFC001F000007FE003 E000007FE003E000003FF007C000001FF80F8000001FF81F0000000FFC1F00000007FE3E 00000007FF7C00000003FF7C00000001FFF800000001FFF000000000FFE0000000007FE0 000000003FF0000000003FF0000000001FF8000000001FFC000000003FFC000000007FFE 000000007FFF00000000FBFF00000001F1FF80000001F0FFC0000003E0FFE0000007C07F E000000F803FF000000F801FF800001F001FF800003E000FFC00003C0007FE00007C0007 FE0000F80003FF0001F00001FF80FFFFC03FFFFEFFFFC03FFFFEFFFFC03FFFFE>-2 41 47 41 51.9714750]88 D [-3 41 39 41 46.9901675]80 D F5[-2 34 32 34 36.5638981]78 D [<07F0600FFE601E1FE03807 E07003E07001E0E000E0E000E0E00060E00060F00060F00000F800007C00007F00003FF0 001FFE000CFFF8003FFC0007FC00007E00001E00001F00000F00000F0C00070C00070C000 70E00070E000F0F000E0F801E0FC01C0FF0780C7FF00C1FC00>-3 35 20 36 27.0971779]83 D [-2 34 33 35 35.8951463]82 D [-3 18 31 12 37.9360490]61 D [-2 34 25 34 30.4757107]76 D [-1 12 11 3 16.2583067] 45 D [<000FE000007FFC0000F83E0003E00F80078003C00F0001E00F0001E01E0000F03 E0000F83C0000787C00007C7C00007C7800003C7800003CF800003EF800003EF800003EF 800003EF800003EF800003EF800003EF800003EF800003E7C00007C7C00007C7C00007C3 C0000783E0000F81E0000F00F0001E00F8003E007C007C003E00F8000F83E00007FFC000 00FE000>-3 35 31 36 37.9360490]79 D [-2 34 31 34 37.2500052]68 D [-2 34 32 34 36.5638981]72 D [-2 34 33 34 37.9187570] 75 D [<000180000180000380000300000300000700000600000600000E00000C00000C0 0001C0000180000180000180000380000300000300000700000600000600000E00000C00 000C00001C0000180000180000380000300000300000700000600000600000E00000C000 00C00000C00001C0000180000180000380000300000300000700000600000600000E0000 0C00000C00000>-3 37 17 49 24.3874601]47 D [<3FFFC03FFFC03C0FC0380F80301F 00703E00607E00607C0060F80001F00003F00003E0C007C0C00F80C01F80C01F01C03E01 807C0380FC0780FFFF80FFFF80>-1 21 18 21 21.6777423]122 D [0 14 23 2 24.3874601]123 D [<00C00000C00007F0000FFC003EDE0038C70070C30070C 380E0C780E0CF80E0CF80E0CF80E0CF80F0C000F8C0007CC0007FC0003FF0001FF8000FF C0001FE0000FF0000CF0000C78000C78070C380F8C380F8C380F8C380F0C380E0C380E0C 70070CF0078CE003CFC001FF80007F00000C00000C00000C000>-3 37 17 40 24.3874601]36 D F2[-3 41 47 41 53.7979692]78 D F3[<01FF8007FFE01FC3F03F03F03E03F07 E03F07C01E0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC00007E00007E00003 F00703F80F01FE1E007FFC001FF00>-2 22 20 22 24.9066010]99 D [<0038007800F0 01E003C003C007800F800F001F001E003E003E003C007C007C007C007C00FC00F800F800 F800F800F800F800F800F800F800F800F800FC007C007C007C007C003C003E003E001E00 1F000F000F80078003C003C001E000F000780038>-5 37 13 49 21.7932758]40 D [<0 0180000780003F800FFF800FFF800FDF80001F80001F80001F80001F80001F80001F8000 1F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8000 1F80001F80001F80001F80001F8007FFFE07FFFE07FFFE0>-4 32 19 32 28.0199261] 49 D [-3 37 13 49 21.7932758]41 D [<3C7EFFFFFFFF7E3C>-4 8 8 8 15.5666256]46 D [-1 14 14 5 18.6799507]45 D [-2 34 37 34 42.9523840]68 D [<7FFFFFFFF0FFFFFFFFF8F FFFFFFFF8000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000FFFFFFFFF8FFFFFFFFF87FFFFFFFF0>-3 20 37 15 43.5865517]61 D [<003F8001FFC003F7E007E7E007E7E00FC7E00FC3C00FC0000FC000 0FC0000FC0000FC0000FC000FFFC00FFFC00FFFC000FC0000FC0000FC0000FC0000FC000 0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0007FFC00 7FFC007FFC00>-1 35 19 35 17.1232882]102 D [<00FE0007FFC00F83E01E00F03E00 F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C00 7C3E00F81F01F00F83E007FFC000FE00>-2 22 23 22 28.0199261]111 D [-2 22 19 22 22.8887543]114 D F4[<0F03F03F001F8FF8FF803BDE39E38031F83F83C061F01F01C06 1E01E01C0E3C03C03C003C03C03800380380380038038038007807807800780780700070 07007000700700F0C0F00F00E1C0F00F00E180E00E01E180E00E01C381E01E01E701E01E 00FE01C01C007C0>-3 21 38 21 39.8509036]109 D F3[<3C007F00FF00FF80FF80FF8 07F803D80018003800380030007000E000E001C0038003000>-4 35 9 18 15.5666256] 39 D [<0FFF003FFF007C1F00780F00F00700F00700F80000F OF0000FFF8007FFC007FFE0 01FFF000FFF80007F80E00F80E00F80F00780F00780F80F00FE1F00FFFE00C7F800>-2 22 17 22 22.1046590]115 D F4[<3FFFFFFF3FFFFFFF00000000000000000000000000 00000000000000000000000000000000000000FFFFFFFCFFFFFFFC>-5 18 32 12 37.3602815]61 D F3[-1 34 19 34 20.8708443]73 D [<1F003F807F807F807F807F803F801F000 00000000000000000000000FF80FF80FF801F801F801F801F801F801F801F801F801F801 F801F801F801F801F801F801F80FFF0FFF0FFF0>-1 36 12 36 15.5666256]105 D [-1 35 12 35 15.5666256]108 D [-2 22 26 22 31.1332512]117 D [<000FF800007FFC0001FC3E0003F03F0007E07F000FE07F000FC07 F000FC07F000FC03E000FC01C000FC000000FC000000FC00000FFFFFF00FFFFFF00FFFFF F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03 F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F007FF0FFE07FF0F FE07FF0FFE0>-1 35 27 35 31.1332512]12 D [-2 35 26 35 31.1332512]98 D [<003C007 E00FF00FF00FF00FF007E003C00000000000000000000000003FF03FF03FF003F003F003 F003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F003 F003F783FFC3FFC7FFC7EFCFC7FF81FC0>3 36 16 46 17.1232882]106 D [<000FF81F F800007FFEFFFC0001FC1FF83E0003F01FE03F0007E03FC07F000FE03FC07F000FC03F80 7F000FC03F807F000FC03F803E000FC01F801C000FC01F8000000FC01F8000000FC01F80 0000FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF000FC01F803F000FC01F803F000FC01F80 3F000FC01F803F000FC01F803F000FC01F803F000FC01F803F000FC01F803F000FC01F80 3F000FC01F803F000FC01F803F000FC01F803F000FC01F803F000FC01F803F000FC01F80 3F000FC01F803F007FF8FFF1FFE07FF8FFF1FFE07FF8FFF1FFE0>-1 35 43 35 46.6998768]14 D [-1 22 27 22 29.5765886]120 D F5[<000FE07F00007FF9FFC000F83FC1C001F07F83E003E07F03E00 7C07E03E007807C03E007803C01C007803C000007803C000007803C000007803C0000078 03C000007803C0000FFFFFFFFE0FFFFFFFFE007803C03E007803C01E007803C01E007803 C01E007803C01E007803C01E007803C01E007803C01E007803C01E007803C01E007803C0 1E007803C01E007803C01E007803C01E007803C01E007803C01E007803C01E07FF1FF8FF E7FF1FF8FFE>0 35 39 35 40.6457668]14 D F4[<07C03FC03F8007800780078007000 70007000F000E000E000E001E001CF81FFC1F9E3E0F3C0F3C0F380F780F700F700F701FF 01EE01 UEE01EE03CE03CE07870F071E03FC01F00>-5 35 16 35 22.4161689]98 D F4[< 07000F800F800F000F00000000000000000000000000000000000000000000007000F800 F800F000F000>-6 21 9 21 14.9441126]58 D [<0000E00001E00001E00001C0000000 000000000000000000000000000000000000000000003E00007F0000E78001C380038380 030380070780000780000700000700000F00000F00000E00000E00001E00001E00001C00 001C00003C00003C0000380000380000780000780000700000F00070E000F1E000F3C000 FF80007E0000>2 33 19 43 14.9441126]106 D F3[<01C00001C00001C00001C00003C 00003C00003C00007C00007C0000FC0003FFF00FFFF00FFFF000FC0000FC0000FC0000FC 0000FC0000FC0000FC0000FC0000FC0000FC0000FC3800FC3800FC3800FC3800FC3800FC 78007E70003FE0001FC00>-1 32 17 32 21.7932758]116 D [<01FE3F0007FFFF800F8 7FF801F03E7803E01F7803E01F0003E01F0003E01F0003E01F0003E01F0003E01F0001F0 3E0000F87C0001FFF80001DFE0000180000001C0000001E0000001FFFE0001FFFFC001FF FFE000FFFFF003FFFFF007E007F80FC001F80F8000F80F8000F80F8000F80FC001F807E0 03F003F80FE000FFFF80001FFC000>-1 22 25 33 28.0199261]103 D F3[-1 22 37 22 40.4732265]119 D [-2 35 26 35 31.1332512]104 D F5[<6000007000007FFFE0 7FFFE07FFFE07FFFC0600180E00380C00700C00600C00E00001C00001800003800003000 00700000600000E00000E00001E00001E00001C00003C00003C00003C00003C00007C000 07C00007C00007C00007C00007C00007C00007C000038000>-3 34 19 35 24.3874601] 55 D [<03F8000FFE001F1F003C07803803807003C07001C07001C07001C07801C07C03C 03E07803F87001FDE000FFC0007F80007FE000FFF001E3F803C1FC07807C07003E0F001E 0E001E0E000E0E000E0E000E0F000E07001C07803C03C07801E0F000FFE0003F800>-2 33 19 34 24.3874601]56 D F3[-2 34 32 34 36.7833738]69 D [<7FFFC3FFF07FFFC3FFF07FFFC3FF F001FE003C0000FE00780000FF007000007F80E000003F81E000003FC3C000001FE38000 000FE78000000FFF00000007FE00000003FE00000003FC00000001FE00000000FE000000 00FF00000001FF80000001FFC0000003FFC00000079FE00000070FF000000F0FF000001E 07F800001C03FC00003C03FC00007801FE0000F000FF0000E000FF0001E0007F80FFFE03 FFFEFFFE03FFFEFFFE03FFFE>-1 34 39 34 42.3181529]88 D [<00007000000000F80 0000000F800000000F800000001FC00000001FC00000003FE00000003FE00000003FE000 000077F000000077F0000000F7F8000000E3F8000000E3F8000001E3FC000001C1FC0000 01C1FC00000380FE00000380FE00000780FF000007007F000007007F00000FFFFF80000F FFFF80001FFFFFC0001C001FC0001C001FC0003C001FE00038000FE00038000FE0007000 07F00FFF00FFFF [8FFF00FFFF8FFF00FFFF8>-2 34 37 34 42.3181529]65 D [-2 34 32 34 38.2823963]80 D [-2 34 29 34 33.6700487]76 D TB F2(EXAMPLE)242 2805 S F5(Normally)242 2712 S(,)436 T F3(mak)464 T(edep) 567 T(end)683 T F5(will)785 T(b)877 T(e)905 T(used)943 T(in)1055 T(a) 1111 T(mak)1152 T(e\014le)1243 T(target)1341 T(so)1485 T(that)1545 T(t) 1650 T(yping)1669 T("mak)1802 T(e)1917 T(dep)1953 T(end")2030 T(will) 242 2652 S(bring)338 T(the)470 T(dep)559 T(endencies)636 T(up)858 T(to) 933 T(date)998 T(for)1111 T(the)1190 T(mak)1279 T(e\014le.)1370 T(F) 1502 T(or)1531 T(example,)1594 T(SR)1805 T(CS)1868 T(=)1950 T(\014le1.c) 2009 T(\014le2.c)242 2592 S(...)381 T(CFLA)448 T(GS)582 T(=)664 T(-O) 720 T(-DHA)792 T(CK)919 T(-I../fo)1008 T(obar)1134 T(-xyz)1247 T(dep) 1354 T(end:)1431 T(mak)1546 T(edep)1637 T(end)1736 T({)1828 T($\050CFLA) 1870 T(GS\051)2047 T({)242 2532 S($\050SR)283 T(CS\051)389 T F2(OPTIONS) 242 2387 S F3(Mak)242 2295 S(edep)351 T(end)466 T F5(will)571 T(ignore) 667 T(an)816 T(y)867 T(option)911 T(that)1066 T(it)1175 T(do)1226 T(es) 1278 T(not)1339 T(understand)1429 T(so)1687 T(that)1750 T(y)1859 T(ou) 1885 T(ma)1954 T(y)2019 T(use)2063 T(the)242 2235 S(same)325 T(argumen) 447 T(ts)631 T(that)685 T(y)790 T(ou)816 T(w)882 T(ould)917 T(for)1025 T F3(cc\0501\051.)1099 T(-Dname=def)242 2133 S(or)569 T(-Dname)639 T F5 (De\014ne.)363 2073 S(This)532 T(places)641 T(a)782 T(de\014nition)821 T(for)1035 T F4(name)1107 T F5(in)1235 T F3(mak)1290 T(edep)1393 T (end's)1509 T F5(sym)1646 T(b)1732 T(ol)1760 T(table.)1810 T(Without) 1951 T F4(=def)363 2012 S F5(the)479 T(sym)563 T(b)649 T(ol)677 T(b)730 T(ecomes)758 T(de\014ned)924 T(as)1092 T("1".)1152 T F3(-Iincludedir) 242 1911 S F5(Include)363 1850 S(directory)532 T(.)720 T(This)753 T (option)861 T(tells)1010 T F3(mak)1110 T(edep)1213 T(end)1329 T F5(to) 1428 T(prep)1485 T(end)1581 T F4(include)1670 T(dir)1818 T F5(to)1892 T (its)1948 T(list)2013 T(of)2091 T(directories)363 1790 S(to)597 T(searc) 655 T(h)761 T(when)802 T(it)928 T(encoun)975 T(ters)1124 T(a)1216 T F4 (#include)1255 T F5(directiv)1460 T(e.)1621 T(By)1677 T(default,)1752 T F3(mak)1928 T(ede-)2031 T(p)363 1730 S(end)396 T F5(only)500 T(searc) 607 T(hes)713 T(/usr/include.)796 T F3(-fmak)242 1628 S(e\014le)381 T F5(Filename.)363 1568 S(This)593 T(allo)705 T(ws)779 T(y)851 T(ou)877 T (to)943 T(sp)1003 T(ecify)1050 T(an)1165 T(alternate)1233 T(mak)1439 T (e\014le)1530 T(in)1629 T(whic)1686 T(h)1783 T F3(mak)1826 T(edep)1929 T(end)2045 T F5(can)363 1508 S(place)452 T(its)577 T(outpuat.)645 T F3 (-o)242 1406 S(ob)291 T(jsu\016x)353 T F5(Ob)363 1346 S(ject)431 T (\014le)529 T(su\016x.)612 T(Some)774 T(systems)909 T(ma)1095 T(y)1160 T(ha)1205 T(v)1256 T(e)1282 T(ob)1323 T(ject)1377 T(\014les)1475 T (whose)1578 T(su\016x)1726 T(is)1860 T(something)1914 T(other)363 1286 S(than)490 T(".o".)603 T(This)724 T(option)835 T(allo)986 T(ws)1060 T(y) 1131 T(ou)1157 T(to)1222 T(sp)1281 T(ecify)1328 T(another)1442 T (su\016x,)1620 T(suc)1762 T(h)1830 T(as)1872 T(".b")1931 T(with)2036 T F4(-o.b)363 1225 S F5(or)459 T(":ob)518 T(j")610 T(with)666 T F4(-o:obj) 777 T F5(and)913 T(so)1008 T(forth.)1068 T F3(-sstring)242 1123 S F5 (Starting)363 1063 S(string)555 T(delimiter.)695 T(This)927 T(option) 1041 T(p)1194 T(ermits)1222 T(y)1374 T(ou)1400 T(to)1469 T(sp)1531 T (ecify)1578 T(a)1694 T(di\013eren)1737 T(t)1895 T(string)1932 T(for) 2072 T F3(mak)363 1003 S(edep)466 T(end)582 T F5(to)684 T(lo)744 T(ok) 782 T(for)849 T(in)924 T(the)981 T(mak)1065 T(e\014le.)1156 T F3 (-wwidth)242 901 S F5(Line)363 841 S(width.)479 T(Normally)656 T(,)850 T F3(mak)888 T(edep)991 T(end)1107 T F5(will)1215 T(ensure)1314 T(that) 1473 T(ev)1585 T(ery)1633 T(output)1721 T(line)1887 T(that)1986 T(it) 2098 T(writes)363 781 S(will)509 T(b)602 T(e)630 T(no)671 T(wider)740 T (than)875 T(78)990 T(c)1057 T(haracters)1079 T(for)1291 T(the)1367 T (sak)1453 T(e)1522 T(of)1561 T(readabilit)1618 T(y)1819 T(.)1842 T(This) 1882 T(option)1995 T(enables)363 721 S(y)534 T(ou)560 T(to)626 T(c)686 T(hange)708 T(this)847 T(width.)942 T F3(-)242 619 S(-)279 T(options) 316 T(-)512 T(-)549 T F5(If)363 559 S F3(mak)415 T(edep)518 T(end)634 T F5(encoun)739 T(ters)888 T(a)985 T(double)1029 T(h)1189 T(yphen)1216 T (\050-)1363 T(-\051)1418 T(in)1473 T(the)1533 T(argumen)1620 T(t)1804 T (list,)1841 T(then)1941 T(an)2055 T(y)2106 T(unrecognized)363 498 S (argumen)654 T(t)838 T(follo)870 T(wing)959 T(it)1074 T(will)1120 T(b) 1211 T(e)1239 T(silen)1275 T(tly)1369 T(ignored;)1441 T(a)1627 T(second) 1666 T(double)1821 T(h)1976 T(yphen)2003 T(terminates)363 438 S(this) 602 T(sp)695 T(ecial)742 T(treatmen)852 T(t.)1045 T(In)1097 T(this)1155 T(w)1248 T(a)1283 T(y)1307 T(,)1329 T F3(mak)1355 T(edep)1458 T(end) 1574 T F5(can)1674 T(b)1761 T(e)1789 T(made)1826 T(to)1954 T(safely) 2011 T(ignore)363 378 S(esoteric)515 T(compiler)697 T(argumen)900 T(ts) 1084 T(that)1143 T(migh)1254 T(t)1359 T(normally)1399 T(b)1610 T(e)1638 T(found)1682 T(in)1824 T(a)1886 T(CFLA)1933 T(GS)2067 T F3(mak)363 318 S(e)466 T F5(macro)506 T(\050see)652 T(the)750 T F3(EXAMPLE)833 T F5 (section)1132 T(ab)1295 T(o)1347 T(v)1371 T(e\051.)1397 T(All)1471 T (options)1550 T(that)1721 T F3(mak)1826 T(edep)1929 T(end)2045 T F5 (recognizes)363 258 S(and)593 T(app)688 T(ear)767 T(b)850 T(et)878 T(w) 919 T(een)953 T(the)1038 T(pair)1122 T(of)1222 T(double)1278 T(h)1435 T (yphens)1462 T(are)1625 T(pro)1706 T(cessed)1777 T(normally)1925 T(.) 2109 T(2)1174 123 S TE 1 EOP %%Page: 1 3 BOP F1[-4 71 104 71 112.7460491]77 D [<0000000003E000000000000000000007F00000000000000000000 FF80000000000000000000FF80000000000000000001FFC0000000000000000001FFC000 0000000000000001FFC0000000000000000003FFE0000000000000000003FFE000000000 0000000007FFF0000000000000000007FFF0000000000000000007FFF000000000000000 000FFFF800000000000000000FFFF800000000000000001FFFFC00000000000000001FFF FC00000000000000001FFFFC00000000000000003FFFFE00000000000000003FFFFE0000 0000000000007FFFFF00000000000000007E7FFF0000000000000000FE7FFF8000000000 000000FE7FFF8000000000000000FC3FFF8000000000000001FC3FFFC000000000000001 F81FFFC000000000000003F81FFFE000000000000003F81FFFE000000000000003F00FFF E000000000000007F00FFFF000000000000007E007FFF00000000000000FE007FFF80000 000000000FC007FFF80000000000000FC003FFF80000000000001FC003FFFC0000000000 001F8001FFFC0000000000003F8001FFFE0000000000003F0001FFFE0000000000003F00 00FFFE0000000000007F0000FFFF0000000000007E00007FFF000000000000FE00007FFF 800000000000FC00003FFF800000000001FC00003FFFC00000000001FC00003FFFC00000 000001F800001FFFC00000000003F800001FFFE00000000003FFFFFFFFFFE00000000007 FFFFFFFFFFF00000000007FFFFFFFFFFF00000000007FFFFFFFFFFF0000000000FFFFFFF FFFFF8000000000FC0000003FFF8000000001FC0000003FFFC000000001F80000003FFFC 000000001F80000001FFFC000000003F80000001FFFE000000003F00000000FFFE000000 007F00000000FFFF000000007E00000000FFFF000000007E000000007FFF00000000FE00 0000007FFF80000000FC000000003FFF80000001FC000000003FFFC0000001F800000000 1FFFC0000007FE000000001FFFE0000FFFFFFE00007FFFFFFFF80FFFFFFE00007FFFFFFF F80FFFFFFE00007FFFFFFFF80FFFFFFE00007FFFFFFFF80FFFFFFE00007FFFFFFFF80>-4 71 81 71 89.7951575]65 D [-4 71 83 71 93.0943244]75 D [-4 70 70 70 78.0327781]69 D [-4 71 79 71 91.0861056]68 D [-4 71 69 71 81.1886048]80 D [-4 71 84 71 92.9509209]78 D F2[-1 41 49 41 51.9714750]89 D F5[-5 37 7 49 13.5485889]91 D F5[-1 37 7 49 13.5485889]93 D F2[-3 41 45 41 52.7186426]68 D [<00007FF003800007FFFE0780001FFFFF8F80007FF80FFF80 00FFC003FF8003FF0000FF8007FE00007F800FFC00003F800FF800001F801FF000001F80 3FF000000F803FE000000F807FE0000007807FE0000007807FC000000780FFC000000000 FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000 FFC000000000FFC000000000FFC000000000FFC0000000007FC0000000007FE000000380 7FE0000003803FE0000003803FF0000003801FF0000007800FF8000007000FFC00000F00 07FE00001E0003FF00007C0000FFC000F800007FF807F000001FFFFFC0000007FFFF0000 00007FF80000>-4 41 41 41 49.6468691]67 D F4[<00FE0003FF800783800F07800E0 7800E07800E03000F00000FF0000FFC0003FE00007F00001F00000F00700F00F00E00F00 E00E01E00F07C007FF8001FE000>-3 21 17 21 19.9255468]115 D F5[-2 34 29 34 33.1854285]69 D F4[<01F0000FF0000FE00001E00001E00001E00001C00001C00003C00003C000038000 0380000780000780000701E00707F00F0E300F1C700E38F00E70F01EE0E01FC0001F8000 1FF0003DF8003C7800383C00381C30781C70783C607038607038E0F03DC0F01F80E00F00 >-3 35 20 35 22.4161689]107 D F4[<00FFC0000FFC00FFC0000FFC000FC0001F8000 0FC0003F80001FC0003F80001BC0006F00001BC0006F00001BC000DF00003BC0019F0000 33C0019E000033C0031E000031E0033E000071E0063E000061E0063C000061E00C3C0000 61E0187C0000E1E0187C0000C1E030780000C1E030780000C1E060F80001C1E0C0F80001 81E0C0F0000181E180F0000180F181F0000380F301F0000300F601E0000300F601E00003 00FC03E0000700FC03E0000600F803C0000E00F803C0001F00F007C000FFE0E07FFC00FF E0E07FFC00>-3 34 46 34 43.6792825]77 D F5[<0000C018000000C018000000C0180 00001C038000001803000000180300000018030000003807000000300600000030060000 003006000000700E000000600C000000600C000000600C000000E01C000000C018000FFF FFFFFC0FFFFFFFFC00018030000001803000000180300000038070000003006000000300 6000000300600000030060000FFFFFFFFC0FFFFFFFFC000600C000000E01C000000C0180 00000C018000000C018000001C0380000018030000001803000000180300000038070000 00300600000030060000003006000000700E000000600C000000600C00000>-3 35 34 45 40.6457668]35 D TB F1(MAKEDEPEND)242 2463 S F2(NAME)242 2213 S F5(mak)242 2101 S(edep)332 T(end)431 T(-)521 T(create)554 T(dep)698 T(endencies)775 T(in)992 T(mak) 1049 T(e\014les)1140 T F2(SYNOPSIS)242 1898 S F3(mak)242 1786 S(edep) 345 T(end)460 T F5([)559 T F3(-Dname=def)586 T F5(])908 T([)935 T F3 (-Dname)962 T F5(])1167 T([)1194 T F3(-Iincludedir)1221 T F5(])1518 T([) 1545 T F3(-fmak)1571 T(e\014le)1710 T F5(])1820 T([)1847 T F3(-o)1874 T (ob)1923 T(jsu\016x)1985 T F5(])242 1726 S([)272 T F3(-sstring)301 T F5 (])499 T([)529 T F3(-wwidth)559 T F5(])774 T([)804 T(-)834 T(-)866 T F3 (otheroptions)899 T F5(-)1222 T(-)1255 T(])1287 T(source\014le)1317 T (...)1529 T F2(DESCRIPTION)242 1462 S F3(Mak)242 1351 S(edep)351 T(end) 466 T F5(reads)569 T(eac)696 T(h)764 T F4(sour)806 T(c)897 T(e\014le) 917 T F5(in)1017 T(sequence)1074 T(and)1276 T(parses)1371 T(it)1518 T (lik)1567 T(e)1619 T(a)1657 T(C-prepro)1698 T(cessor,)1888 T(pro-)2044 T(cessing)242 1290 S(all)405 T F4(#include,)473 T(#de\014ne,)696 T (#undef,)893 T(#ifdef,)1081 T(#ifndef,)1245 T(#endif,)1437 T(#if)1613 T F5(and)1700 T F4(#else)1796 T F5(directiv)1930 T(es)2091 T(so)242 1230 S(that)304 T(it)412 T(can)464 T(correctly)556 T(tell)761 T(whic)848 T(h) 945 T F4(#include,)990 T F5(directiv)1216 T(es)1377 T(w)1436 T(ould) 1471 T(b)1581 T(e)1609 T(used)1650 T(in)1765 T(a)1824 T(compilation.) 1868 T(An)242 1170 S(y)305 T F4(#include,)344 T F5(directiv)564 T(es) 725 T(can)780 T(reference)867 T(\014les)1071 T(ha)1167 T(ving)1218 T (other)1322 T F4(#include)1448 T F5(directiv)1653 T(es,)1814 T(and)1883 T(parsing)1976 T(will)242 1110 S(o)333 T(ccur)358 T(in)464 T(these)521 T(\014les)646 T(as)744 T(w)804 T(ell.)839 T(Ev)314 1040 S(ery)373 T (\014le)454 T(that)531 T(a)636 T F4(sour)676 T(c)767 T(e\014le)787 T F5 (includes,)886 T(directly)1086 T(or)1263 T(indirectly)1321 T(,)1519 T (is)1548 T(what)1597 T F3(mak)1718 T(edep)1821 T(end)1937 T F5(calls) 2038 T(a)242 980 S("dep)285 T(endency".)386 T(These)623 T(dep)766 T (endencies)843 T(are)1063 T(then)1146 T(written)1259 T(to)1432 T(a)1494 T F4(make\014le)1536 T F5(in)1727 T(suc)1786 T(h)1854 T(a)1898 T(w)1940 T(a)1975 T(y)1999 T(that)2041 T F3(mak)242 920 S(e\0501\051)345 T F5 (will)451 T(kno)538 T(w)615 T(whic)660 T(h)757 T(ob)794 T(ject)848 T (\014les)936 T(m)1029 T(ust)1070 T(b)1144 T(e)1172 T(recompiled)1205 T (when)1446 T(a)1568 T(dep)1603 T(endency)1680 T(has)1864 T(c)1945 T (hanged.)1967 T(By)314 850 S(default,)397 T F3(mak)582 T(edep)685 T(end) 801 T F5(places)909 T(its)1059 T(output)1133 T(in)1298 T(the)1361 T (\014le)1451 T(named)1536 T F4(make\014le)1699 T F5(if)1893 T(it)1944 T (exists,)1999 T(otherwise)242 790 S F4(Make\014le.)462 T F5(An)685 T (alternate)769 T(mak)979 T(e\014le)1070 T(ma)1172 T(y)1237 T(b)1282 T(e) 1310 T(sp)1352 T(eci\014ed)1399 T(with)1553 T(the)1667 T F4(-f)1755 T F5(option.)1808 T(It)1990 T(\014rst)2046 T(searc)242 730 S(hes)348 T (the)437 T(mak)527 T(e\014le)618 T(for)724 T(the)805 T(line)896 T(#)995 T(DO)1059 T(NOT)1157 T(DELETE)1290 T(THIS)1515 T(LINE)1655 T({)1796 T (mak)1843 T(e)1934 T(dep)1978 T(end)2055 T(dep)242 669 S(ends)319 T(on) 435 T(it.)507 T(or)590 T(one)655 T(pro)750 T(vided)820 T(with)955 T(the) 1072 T F4(-s)1161 T F5(option,)1219 T(as)1391 T(a)1456 T(delimiter)1502 T(for)1713 T(the)1792 T(dep)1881 T(endency)1958 T(output.)242 609 S(If) 419 T(it)466 T(\014nds)513 T(it,)628 T(it)688 T(will)735 T(delete)825 T (ev)964 T(erything)1012 T(follo)1202 T(wing)1291 T(this)1406 T(to)1499 T(the)1557 T(end)1639 T(of)1729 T(the)1782 T(mak)1864 T(e\014le)1955 T (and)2052 T(put)242 549 S(the)330 T(output)414 T(after)574 T(this)689 T (line.)784 T(If)895 T(it)944 T(do)993 T(esn't)1045 T(\014nd)1162 T(it,) 1260 T(the)1322 T(program)1406 T(will)1601 T(app)1693 T(end)1772 T(the) 1865 T(string)1949 T(to)2087 T(the)242 489 S(end)323 T(of)413 T(the)467 T(mak)549 T(e\014le)640 T(and)736 T(place)829 T(the)952 T(output)1034 T (follo)1192 T(wing)1281 T(that.)1396 T(F)1520 T(or)1549 T(eac)1605 T(h) 1673 T F4(sour)1713 T(c)1804 T(e\014le)1824 T F5(app)1921 T(earing)2000 T(on)242 429 S(the)311 T(command)398 T(line,)623 T F3(mak)732 T(edep) 835 T(end)951 T F5(puts)1056 T(lines)1168 T(in)1282 T(the)1342 T(mak) 1428 T(e\014le)1519 T(of)1621 T(the)1679 T(form)1766 T(source\014le.o:) 1884 T(d\014le)242 368 S(...)347 T(Where)411 T("source\014le.o")567 T (is)866 T(the)915 T(name)1000 T(from)1130 T(the)1246 T(command)1330 T (line)1553 T(with)1645 T(its)1757 T(su\016x)1825 T(replaced)1955 T(with) 242 308 S(".o",)355 T(and)475 T("d\014le")573 T(is)730 T(a)782 T(dep) 826 T(endency)903 T(disco)1094 T(v)1199 T(ered)1225 T(in)1332 T(a)1392 T F4(#include)1435 T F5(directiv)1645 T(e)1806 T(while)1846 T(parsing) 1976 T F4(sour)242 248 S(c)332 T(e\014le)352 T F5(or)451 T(one)510 T(of) 600 T(the)655 T(\014les)739 T(it)837 T(included.)886 T(1)1174 123 S TE 1 EOP EOJ %%Trailer %%Pages: 3 %%PageTable: 3 1 3240 2 2 32504 1 3 52438 !*[PIERONNE.MKDEPEND]MKDEPEND.MAN;1+,,./ 4N-G0 123KPWO56jlV7 c`89GHJ-.TH MAKEDEPEND 1 "Release 4" "X Version 11".UC 4 .SH NAME0makedepend \- create dependencies in makefiles.SH SYNOPSIS.B makedepend[.B \-Dname=def] [ .B \-Dname] [.B \-Iincludedir] [.B \-fmakefile] [.B \-oobjsuffix] [.B \-sstring] [ .B \-wwidth] [\-\ \-.B otheroptions\-\ \-]sourcefile ....br.SH DESCRIPTION.B Makedepend reads each.I sourcefile2in sequence and parses it like a C-preprocessor,processing all.I #include, .I #define, .I #undef, .I #ifdef, .I #ifndef, .I #endif,.I #ifand .I #else0directives so that it can correctly tell which.I #include,,directives would be used in a compilation.Any.I #include,-directives can reference files having other .I #include<directives, and parsing will occur in these files as well..PPEvery file that a.I sourcefile includes,directly or indirectly, is what.B makedependcalls a "dependency".*These dependencies are then written to a .I makefilein such a way that .B make(1)Pwill know which object files must be recompiled when a dependency has changed..PP By default,.B makedepend%places its output in the file named .I makefileif it exists, otherwise.I Makefile.1An alternate makefile may be specified with the.I -f option.$It first searches the makefile for the line.sp= # DO NOT DELETE THIS LINE -- make depend depends on it..spor one provided with the.I -s option,+as a delimiter for the dependency output.+If it finds it, it will delete everything+following this to the end of the makefile%and put the output after this line.$If it doesn't find it, the program3will append the string to the end of the makefile&and place the output following that. For each.I sourcefile appearing on the command line,.B makedepend(puts lines in the makefile of the form.sp sourcefile.o: dfile ....sp3Where "sourcefile.o" is the name from the command*line with its suffix replaced with ".o",-and "dfile" is a dependency discovered in a .I #includedirective while parsing.I sourcefile"or one of the files it included. .SH EXAMPLE Normally,.B makedependEwill be used in a makefile target so that typing "make depend" will5bring the dependencies up to date for the makefile.For example,.nf SRCS = file1.c file2.c ...) CFLAGS = -O -DHACK -I../foobar -xyz depend:0 makedepend -- $(CFLAGS) -- $(SRCS).fi .SH OPTIONS.B MakedependHwill ignore any option that it does not understand so that you may use'the same arguments that you would for .B cc(1)..TP 5.B \-Dname=def or \-Dname Define.This places a definition for .I namein.B makedepend'ssymbol table. Without .I =def$the symbol becomes defined as "1"..TP 5.B \-IincludedirInclude directory.This option tells.B makedepend to prepend.I includedir9to its list of directories to search when it encountersa .I #include directive. By default,.B makedependonly searches /usr/include..TP 5.B \-fmakefile Filename.;This allows you to specify an alternate makefile in which.B makedependcan place its output..TP 5.B \-oobjsuffixObject file suffix.DSome systems may have object files whose suffix is something other than ".o".;This option allows you to specify another suffix, such as ".b" with .I -o.b or ":obj"with .I -o:objand so forth..TP 5.B \-sstringStarting string delimiter.$This option permits you to specifya different string for.B makedependto look for in the makefile..TP 5 .B \-wwidth Line width. Normally,.B makedependIwill ensure that every output line that it writes will be no wider than,78 characters for the sake of readability./This option enables you to change this width..TP 5.B "\-\ \- options \-\ \-"If.B makedepend;encounters a double hyphen (\-\ \-) in the argument list,-then any unrecognized argument following itBwill be silently ignored; a second double hyphen terminates thisspecial treatment.In this way,.B makedependEcan be made to safely ignore esoteric compiler arguments that mightnormally be found in a CFLAGS .B makemacro (see the .B EXAMPLEsection above).All options that.B makedepend:recognizes and appear between the pair of double hyphensare processed normally..SH ALGORITHMKThe approach used in this program enables it to run an order of magnitude@faster than any other "dependency generator" I have ever seen.2Central to this performance are two assumptions:%that all files compiled by a single1makefile will be compiled with roughly the same.I -Iand.I -D options;Dand that most files in a single directory will include largely the same files..PPGiven these assumptions,.B makedepend3expects to be called once for each makefile, with-all source files that are maintained by the)makefile appearing on the command line.#It parses each source and include9file exactly once, maintaining an internal symbol table for each.FThus, the first file on the command line will take an amount of timeHproportional to the amount of time that a normal C preprocessor takes.<But on subsequent files, if it encounter's an include file9that it has already parsed, it does not parse it again..PPFor example,&imagine you are compiling two files, .I file1.cand .I file2.c,#they each include the header file.I header.h,and the file .I header.hin turn includes the files .I def1.hand .I def2.h.When you run the command.sp makedepend fil e1.c file2.c.sp.B makedepend will parse .I file1.cand consequently, .I header.h and then .I def1.hand .I def2.h.9It then decides that the dependencies for this file are.sp% file1.o: header.h def1.h def2.h.spBut when the program parses .I file2.c&and discovers that it, too, includes.I header.h,it does not parse the file,but simply adds.I header.h, .I def1.hand .I def2.h!to the list of dependencies for .I file2.o..SH "SEE ALSO"cc(1), make(1) .SH BUGSEIf you do not have the source for cpp, the Berkeley C preprocessor,then.B makedepend)will be compiled in such a way that all.I #ifFdirectives will evaluate to "true" regardless of their actual value.This may cause the wrong .I #includedirectives to be evaluated..B Makedepend/should simply have its own parser written for.I #ifexpressions..PP$Imagine you are parsing two files,say .I file1.cand .I file2.c,each includes the file .I def.h.The list of files that .I def.h(includes might truly be different when .I def.his included by .I file1.cthan when it is included by .I file2.c. But once.B makedepend/arrives at a list of dependencies for a file,it is cast in concrete. .SH AUTHOR7Todd Brunhoff, Tektronix, Inc. and MIT Project Athena!*[PIERONNE.MKDEPEND]MKDEPEND.TEX;1+,?!./ 4 -G0123KPWO56_)`7`89GHJ\documentstyle[12pt,twoside]{report} \setlength{\textwidth}{16cm} \setlength{\textheight}{22cm} \setlength{\oddsidemargin}{-0.5cm} \setlength{\evensidemargin}{-0.5cm} \setlength{\topmargin}{0cm} \begin{document} \chapter*{MAKEDEPEND} \markboth{MAKEDEPEND}{MAKEDEPEND} \subsection*{NAME} makedepend - create dependencies in makefiles \subsection*{SYNOPSIS} {\bf makedepend} \mbox{[} {\bf -Dname=def} \mbox{]} \mbox{[} {\bf -Dname} \mbox{]} \mbox{[} {\bf -Iincludedir} \mbox{]} \mbox{[} {\bf -fmakefile} \mbox{]} \mbox{[} {\bf -oobjsuffix} \mbox{]} \mbox{[} {\bf -sstring} \mbox{]} \mbox{[} {\bf -wwidth} \mbox{]} \mbox{[} - - {\bf otheroptions} - - \mbox{]} sourcefile ... \\\subsection*{DESCRIPTION} {\bf Makedepend} reads each {\em sourcefile} in sequence and parses it like a C-preprocessor, processing all {\em \#include,} {\em \#define,} {\em \#undef,} {\em \#ifdef,} {\em \#ifndef,} {\em \#endif,} {\em \#if} and {\em \#else} directives so that it can correctly tell which {\em \#include,} directives would be used in a compilation. Any {\em \#include,} directives can reference files having other {\em \#include} directives, and parsing will occur in these files as well. Every file that a {\em sourcefile} includes, directly or indirectly, is what {\bf makedepend} calls a "dependency". These dependencies are then written to a {\em makefile} in such a way that {\bf make(1)} will know which object files must be recompiled when a dependency has changed. By default, {\bf makedepend} places its output in the file named {\em makefile} if it exists, otherwise {\em Makefile.} An alternate makefile may be specified with the {\em -f} option. It first searches the makefile for the line \# DO NOT DELETE THIS LINE -- make depend depends on it. or one provided with the {\em -s} option, as a delimiter for the dependency output. If it finds it, it will delete everything following this to the end of the makefile and put the output after this line. If it doesn't find it, the program will append the string to the end of the makefile and place the output following that. For each {\em sourcefile} appearing on the command line, {\bf makedepend} puts lines in the makefile of the form sourcefile.o: dfile ... Where "sourcefile.o" is the name from the command line with its suffix replaced with ".o", and "dfile" is a dependency discovered in a {\em \#include} directive while parsing {\em sourcefile} or one of the files it included. \subsection*{EXAMPLE} Normally, {\bf makedepend} will be used in a makefile target so that typing "make depend" will bring the dependencies up to date for the makefile. For example, SRCS = file1.c file2.c ... CFLAGS = -O -DHACK -I../\-foobar -xyz depend: makedepend -- \$(CFLAGS) -- \$(SRCS) \subsection*{OPTIONS} {\bf Makedepend} will ignore any option that it does not understand so that you may use the same arguments that you would for {\bf cc(1).} \begin{description} \item[-Dname=def or -Dname]~\\ Define. This places a definition for {\em name} in {\bf makedepend's} symbol table. Without {\em =def} the symbol becomes defined as "1". \item[-Iincludedir]~\\ Include directory. This option tells {\bf makedepend} to prepend {\em includedir} to its list of directories to search when it encounters a {\em \#include} directive. By default, {\bf makedepend} only searches /\-usr/\-include. \item[-fmakefile]~\\ Filename. This allows you to specify an alternate makefile in which {\bf makedepend} can place its output. \item[-oobjsuffix]~\\ Object file suffix. Some systems may have object files whose suffix is something other than ".o". This option allows you to specify another suffix, such as ".b" with {\em -o.b} or ":obj" with {\em -o:obj} and so forth. \item[-sstring]~\\ Starting string delimiter. This option permits you to specify a different string for {\bf makedepend} to look for in the makefile. \item[-wwidth]~\\ Line width. Normally, {\bf makedepend} will ensure that every output line that it writes will be no wider than 78 characters for the sake of readability. This option enables you to change this width. \item[- - options - -]~\\ If {\bf makedepend} encounters a double hyphen (- -) in the argument list, then any unrecognized argument following it will be silently ignored; a second double hyphen terminates this special treatment. In this way, {\bf makedepend} can be made to safely ignore esoteric compiler arguments that might normally be found in a CFLAGS {\bf make} macro (see the {\bf EXAMPLE} section above). All options that {\bf makedepend} recognizes and appear between the pair of double hyphens are processed normally. \end{description} \subsection*{ALGORITHM} The approach used in this program enables it to run an order of magnitude faster than any other "dependency generator" I have ever seen. Central to this performance are two assumptions: that all files compiled by a single makefile will be compiled with roughly the same {\em -I} and {\em -D} options; and that most files in a single directory will include largely the same files. Given these assumptions, {\bf makedepend} expects to be called once for each makefile, with all source files that are maintained by the makefile appearing on the command line. It parses each source and include file exactly once, maintaining an internal symbol table for each. Thus, the first file on the command line will take an amount of time proportional to the amount of time that a normal C preprocessor takes. But on subsequent files, if it encounter's an include file that it has already parsed, it does not parse it again. For example, imagine you are compiling two files, {\em file1.c} and {\em file2.c,} they each include the header file {\em header.h,} and the file {\em header.h} in turn includes the files {\em def1.h} and {\em def2.h.} When you run the command makedepend file1.c file2.c\\ {\bf makedepend} will parse {\em file1.c} and consequently, {\em header.h} and then {\em def1.h} and {\em def2.h.} It then decides that the dependencies for this file are file1.o: header.h def1.h def2.h But when the program parses {\em file2.c} and discovers that it, too, includes {\em header.h,} it does not parse the file, but simply adds {\em header.h,} {\em def1.h} and {\em def2.h} to the list of dependencies for {\em file2.o.} \subsection*{"SEE ALSO"} cc(1), make(1) \subsection*{BUGS} If you do not have the source for cpp, the Berkeley C preprocessor, then {\bf makedepend} will be compiled in such a way that all {\em \#if} directives will evaluate to "true" regardless of their actual value. This may cause the wrong {\em \#include} directives to be evaluated. {\bf Makedepend} should simply have its own parser written for {\em \#if} expressions. Imagine you are parsing two files, say {\em file1.c} and {\em file2.c,} each includes the file {\em def.h.} The list of files that {\em def.h} includes might truly be different when {\em def.h} is included by {\em file1.c} than when it is included by {\em file2.c.} But once {\bf makedepend} arrives at a list of dependencies for a file, it is cast in concrete. \subsection*{AUTHOR} Todd Brunhoff, Tektronix, Inc. and MIT Project Athena \end{document} l~ MKDEPEND.BCK*G[PIERONNE.MKDEPEND]PARSE.C;1Fh*[PIERONNE.MKDEPEND]PARSE.C;1+,*./ 4F*-G0 123KPWO56@!R7#`89GHJ/*; * $XConsortium: parse.c,v 1.15 89/12/12 12:44:22 jim Exp $ */#include "def.h" #ifdef VMS#include #include #else#include #endifextern char *directives[];extern struct symtab deflist[];/find_includes(filep, file, file_red, recursion) struct filepointer *filep;" struct inclist *file, *file_red; int recursion;{ register char *line; register int type; while (line = getline(filep)) {= switch(type = deftype(line, filep, file_red, file, TRUE)) { case IF: doif:$ type = find_includes(filep, file, file_red, recursion+1);0 while ((type == ELIF) || (type == ELIFFALSE))) type = gobble(filep, file, file_red); if (type == ELSE)" gobble(filep, file, file_red); break; case IFFALSE: doiffalse:( type = gobble(filep, file, file_red); if (type == ELSE)! find_includes(filep, file, file_red, recursion+1); else if (type == ELIF) goto doif; else if (type == ELIFFALSE) goto doiffalse; break; case IFDEF: case IFNDEF:3 if ((type == IFDEF && isdefined(line, file_red))8 || (type == IFNDEF && !isdefined(line, file_red))) { debug(1,(type == IFNDEF ?3 "line %d: %s !def'd in %s via %s%s\n" : "", filep->f_line, line,3 file->i_file, file_red->i_file, ": doit"));% type = find_includes(filep, file, file_red, recursion+1); if (type == ELSE)# gobble(filep, file, file_red); } else { debug(1,(type == IFDEF ?3 "line %d: %s !def'd in %s via %s%s\n" : "", filep->f_line, line,5 file->i_file, file_red->i_file, ": gobble"));) type = gobble(filep, file, file_red); if (type == ELSE) find_includes(filep, file, file_red, recursion+1); } break; case ELSE: case ELIFFALSE: case ELIF: if (!recursion)" gobble(filep, file, file_red); case ENDIF: if (recursion) return(type); case DEFINE: define(line, file); break; case UNDEF: /*7 * undefine all occurances of line by killing s_name */ if (!*line) {; warning("%s, line %d: incomplete undef == \"%s\"\n",+ file_red->i_file, filep->f_line, line); break; } { struct symtab *val;' for(val = isdefined(line, file_red); (val && val->s_name);' val = isdefined(line, file_red)) *(val->s_name) = '\0'; } break; case INCLUDE:, add_include(file, file_red, line, FALSE); break; case INCLUDEDOT:+ add_include(file, file_red, line, TRUE); break; case PRAGMA: case ERROR: case IDENT: case SCCS: case EJECT: break; case -1:# warning("%s", file_red->i_file); if (file_red != file). warning(" (reading %s)", file->i_file);6 warning(", line %d: unknown directive == \"%s\"\n", filep->f_line, line); break; case -2:# warning("%s", file_red->i_file); if (file_red != file). warning(" (reading %s)", file->i_file);7 warning(", line %d: incomplete include == \"%s\"\n", filep->f_line, line); break; } } return(-1);}gobble(filep, file, file_red)$ register struct filepointer *filep;" struct inclist *file, *file_red;{ register char *line; register int type; while (line = getline(filep)) {> switch(type = deftype(line, filep, file_red, file, FALSE)) { case IF: case IFFALSE: case IFDEF: case IFNDEF:( type = gobble(filep, file, file_red);0 while ((type == ELIF) || (type == ELIFFALSE)), type = gobble(filep, file, file_red); if (type == ELSE)/ (void)gobble(filep, file, file_red); break; case ELSE: case ENDIF:! debug(0,("%s, line %d: #%s\n", file->i_file, filep->f_line, directives[type])); return(type); case DEFINE: case UNDEF: case INCLUDE: case INCLUDEDOT: case PRAGMA: case ERROR: case IDENT: case SCCS: case EJECT: break; case ELIF: case ELIFFALSE: return(type); case -1:8 warning("%s, line %d: unknown directive == \"%s\"\n",+ file_red->i_file, filep->f_line, line); break; } } return(-1);}/*0 * Decide what type of # directive this line is. */3int deftype (line, filep, file_red, file, parse_it) register char *line;$ register struct filepointer *filep;* register struct inclist *file_red, *file; int parse_it;{ register char *p; char *directive, savechar; register int ret; char sp[257]; /* * Parse the directive... */ directive=line+1;0 while (*directive == ' ' || *directive == '\t') directive++; p = directive; while (*p >= 'a' && *p <= 'z') p++; savechar = *p; *p = '\0';$ ret = match(directive, directives); *p = savechar;F /* If we don't recognize this compiler directive or we happen to justE * be gobbling up text while waiting for an #endif or #elif or #elseF * in the case of an #elif we must check the zero_value and return an * ELIF or an ELIFFALSE. */ if (ret == ELIF && !parse_it) {$ while (*p == ' ' || *p == '\t') p++; /* * parse an expression. */' debug(0,("%s, line %d: #elif %s ",& file->i_file, filep->f_line, p));( if (zero_value(p, filep, file_red)) { debug(0,("false...\n")); return(ELIFFALSE); } else { debug(0,("true...\n")); return(ret); } } if (ret < 0 || ! parse_it) return(ret); /*5 * now decide how to parse the directive, and do it. */ while (*p == ' ' || *p == '\t') p++; switch (ret) { case IF: /* * parse an expression. */# debug(0,("%s, line %d: #if %s\n",$ file->i_file, filep->f_line, p));% if (zero_value(p, filep, file_red)) ret = IFFALSE; break; case IFDEF: case IFNDEF:# debug(0,("%s, line %d: #%s %s\n",5 file->i_file, filep->f_line, directives[ret], p)); case UNDEF: /** * separate the name of a single symbol. */" while (isalnum(*p) || *p == '_') *line++ = *p++; *line = '\0'; break; case INCLUDE:( debug(2,("%s, line %d: #include %s\n",$ file->i_file, filep->f_line, p));' /* Support ANSI macro substitution */ {2 struct symtab *sym = isdefined(p, file_red); while (sym) { p = sym->s_value;. debug(3,("%s : #includes SYMBOL %s = %s\n", file->i_incstring, sym -> s_name, sym -> s_value));6 /* mark file as having included a 'soft include' */ file->i_included_sym = TRUE; sym = isdefined(p, file_red); } } /*+ * Separate the name of the include file. */ #ifdef VMS# if ((*p != '"') && (*p != '<')) { int i = 2; sp[0] = '<'; sp[1] = *p;) while (isalnum(*++p)) sp[i++] = *p; sp[i++] = '.'; sp[i++] = 'h'; sp[i++] = '>'; sp[i++] = '\0'; p = sp;  }#endif& while (*p && *p != '"' && *p != '<') p++; if (! *p) return(-2); if (*p++ == '"') { ret = INCLUDEDOT; while (*p && *p != '"') *line++ = *p++; } else while (*p && *p != '>') *line++ = *p++; *line = '\0'; break; case DEFINE: /*; * copy the definition back to the beginning of the line. */ strcpy (line, p); break; case ELSE: case ENDIF: case ELIF: case PRAGMA: case ERROR: case IDENT: case SCCS: case EJECT: debug(0,("%s, line %d: #%s\n",2 file->i_file, filep->f_line, directives[ret])); /* * nothing to do. */ break; } return(ret);}&struct symtab *isdefined(symbol, file) register char *symbol; struct inclist *file;{ register struct symtab *val;& if (val = slookup(symbol, deflist)) {4 debug(1,("%s defined on command line\n", symbol)); return(val); }" if (val = fdefined(symbol, file)) return(val);; debug(1,("%s not defined in %s\n", symbol, file->i_file)); return(NULL);}%struct symtab *fdefined(symbol, file) register char *symbol; struct inclist *file;{* register struct inclist **ip; register struct symtab *val; register int i; static int recurse_lvl = 0; if (file->i_defchecked) return(NULL);y file->i_defchecked = TRUE;n) if (val = slookup(symbol, file->i_defs))d8 debug(1,("%s defined in %s\n", symbol, file->i_file));! if (val == NULL && file->i_list)> for (ip = file->i_list, i=0; i < file->i_listlen; i++, ip++)% if (val = fdefined(symbol, *ip)) {" debug(1,("%s defined in %s\n", symbol, (*ip)->i_file)); break; } recurse_lvl--;  file->i_defchecked = FALSE; return(val);e}f$struct symtab *slookup(symbol, stab) register char *symbol;t register struct symtab *stab;{l if (stab) for (; stab->s_name; stab++)) if (strcmp(symbol, stab->s_name) == 0)  return(stab);F return(NULL);}a/*3 * Return true if the #if expression evaluates to 0  */S zero_value(exp, filep, file_red) register char *exp;$ register struct filepointer *filep;# register struct inclist *file_red;{i #ifdef CPP. return (cppsetup(exp, filep, file_red) == 0);#elseI return(TRUE);#endif /* CPP */}=define(def, file)l register char *def; register struct inclist *file;l{, register char *p;' struct symtab *sp = file->i_lastdef++;  register int i; /*s/ * If we are out of space, allocate some more.  */ if (file->i_defs == NULL 7 || file->i_lastdef == file->i_defs + file->i_deflen) {  if (file->i_defs)19 file->i_defs = (struct symtab *) realloc(file->i_defs,e9 sizeof(struct symtab)*(file->i_deflen+SYMTABINC));  else# file->i_defs = (struct symtab *)/ malloc(sizeof (struct symtab) * SYMTABINC);i i=file->i_deflen;  file->i_deflen += SYMTABINC; while (i < file->i_deflen)% file->i_defs[ i++ ].s_name = NULL;s> file->i_lastdef = file->i_defs + file->i_deflen - SYMTABINC;: if (sp) /* be sure we use last cell in previous group */ file->i_lastdef--;l sp = file->i_lastdef++;e }: else if (file->i_lastdef > file->i_defs + file->i_deflen) fatal("define() botch\n"); /*" * copy the symbol being defined. */ p = def; ! while (isalnum(*p) || *p == '_') p++; if (*p) *p++ = '\0'; sp->s_name = copy(def); /*\ * And copy its value.> */ while (*p == ' ' && *p == '\t') p++; sp->s_value = copy(p); }t *val;' for(val = isdefined(line, file_red); (val && val->s_name);' val = isdefined(line, file_red)) *(val->s_name) = '\0'; } break; case INCLUDE:, add_include(f*[PIERONNE.MKDEPEND]PR.C;1+,%./ 4B-G0 123KPWO56`]xR7~`89GHJ/*7 * $XConsortium: pr.c,v 1.9 89/12/12 12:44:26 jim Exp $ */#include "def.h"*extern struct inclist inclist[ MAXFILES ], *inclistp;extern char *objfile;extern int width;extern boolean printed;extern boolean verbose;extern boolean show_where_not;)add_include(file, file_red, include, dot)! struct inclist *file, *file_red; char *include; boolean dot;{" register struct inclist *newfile;& register struct filepointer *content; /*B * First decide what the pathname of this include file really is. */0 newfile = inc_path(file->i_file, include, dot); if (newfile == NULL) { if (file != file_red) warning("%s (reading %s): ",$ file_red->i_file, file->i_file); else! warning("%s: ", file->i_file);8 warning("cannot find include file \"%s\"\n", include); show_where_not = TRUE;1 newfile = inc_path(file->i_file, include, dot); show_where_not = FALSE; } included_by(file, newfile); if (!newfile->i_searched) { newfile->i_searched = TRUE;% content = getfile(newfile->i_file);/ find_includes(content, newfile, file_red, 0); freefile(content); }}&recursive_pr_include(head, file, base) register struct inclist *head; register char *file, *base;{ register int i; if (head->i_marked) return; head->i_marked = TRUE; if (head->i_file != file) pr(head, file, base);" for (i=0; ii_listlen; i++)6 recursive_pr_include(head->i_list[ i ], file, base);}pr(ip, file, base) register struct inclist *ip; char *file, *base;{ static char *lastfile; static int current_len; register int len, i; char buf[ BUFSIZ ]; #ifdef VMS char fn[257]; char* cP;" FILE* f = fopen(ip->i_file, "r");  fgetname (f, fn); cP = strchr(fn, ';'); *cP = '\0'; fclose(f);#endif printed = TRUE; #ifdef VMS len = strlen(fn)+1;#else len = strlen(ip->i_file)+1;#endif5 if (current_len + len > width || file != lastfile) { lastfile = file;#ifdef VMS 1 sprintf(buf, "\n%s%s : %s", base, objfile, fn);#else8 sprintf(buf, "\n%s%s: %s", base, objfile, ip->i_file);#endif" len = current_len = strlen(buf); } else {#ifdef VMS  buf[0] = ','; strcpy(buf+1, fn);#else buf[0] = ' '; strcpy(buf+1, ip->i_file);#endif current_len += len; } fwrite(buf, len, 1, stdout); /*> * If verbose is set, then print out what this file includes. */7 if (! verbose || ip->i_list == NULL || ip->i_notified) return; ip->i_notified = TRUE; lastfile = NULL;( printf("\n# %s includes:", ip->i_file); for (i=0; ii_listlen; i++)2 printf("\n#\t%s", ip->i_list[ i ]->i_incstring);}D~ MKDEPEND.BCKI?k~D.EXE;1F @Se'~wJTb 4K+e٨ 0?:ˇgDr.)[Sn$qEۊn5j RVsAJFC?|ו91d\\On-ux;:*QŋIaG\[girldK8\q% u0ˆ}^3W6 h"[aC`|/sw#hbtQQw7X:nmun\Z$~ָG>T/50+$aH:2 BhLv!7W&)o[ %# ۛ Ua)?JE;QZ5 d66'hWw9 IGoS/Q)g,7LN[ [}ewqkr(AsA)|;!)}Mj7E+aSy3ACxKpe9':XD~Ou v9 >)q+NqV+9o\V3*0f .|tf8jplT fsry=|p~c7Q{wn5;aCWsv ;a9k7Y3:L^tpf4OK9Q`1g;u? 1g^o t@!@-W1"Ud{&1,.HeQe))> Nvl>iK {MGA!ɺpMj+zO57}`sKͮk;x=~Q'p"jך-TdGzK]ۀ-(6|Qgxboc$ U-[wMЅ֊BCqvP÷AԒ}폺P'*AN8;3vwe;^R'b :#L)\Gpr |vmM>A;998v5 1()OKv{m]>[;|.~1aO60,]ymSt9/Scn$߷~n{M 0FPIW.FG8G{45O˫DNiKPw傔BMi`ga&OGWG>.W7_3 -X!* QYѲNYfN N$ !0@`20%jrodST@Ōm5I0)DFJ/T;PH }tf k]}7ɹ S3*NP *z Q 5C:#S].p_:LC0%HM][|JVNJ QM7F7!$F_m: $|^(M/ RBnb!{}jlf$58[xXF‱Kr]ӵ%? Ȱ\;?jhDDNDvNv-3|q%2/E[VYб!K>Ls'4D:LIvNh= 3"Jl7`yW}Dt]WҦKr\GtVS0aHCG oJն=qq۱Z ZUh?y;! X_KDNn +zOZuMi{|&pLҸoF7uJLfP^c2γ@r8yeXI|@-re+[ T1:$oyy9 8TbHMgPwGՕiI jg]a l=&^'|7k@h@9 AoNveu; *R0WJ ;BWJJ!}p>(E3=-t*)IB!oEr8.(X[XYfh_2(I5r wL^ck-Xo4H+d;)?\~R3L!7M^AIq[T7͏QFv9^2sl^3k<6}Y+n_o[Iz&ظ 99:7awdhG(b!,\WyҭC $Ce,k0e=g/ab=Q2+_<#3m^ZtX*8Ik&DžN@*1O,& -++X kcYu#~+3c5$j9dY`ed m\YL@5r3` GK Gm7V< I~~@xbs){O|ux1E̎иե' 3x?L#uq7r'ڕ/UScdW! Knu.)}bh⦨ͣi(}ƙg2bkhmXͨ<7ƽ?{yҎL[//e$kȦ@+}4-q> M4r 7x)rkP&Y%hgEj*5i*JUB Sj`~h?k8!6搧C^Z52}ɪOYʫ)[~?FfV.d䔁2+S 9~rrBu+c*>eꪄB|wg< #؄Cў~j>δk횏@@bėu*K#NENgɧQen/)˪j!([ NWI,"aśߘoifujRJ{\T"\ dnucu])tʅW^d| XD0m'/O92{%%(  g@dOP>Mapg}E<,8KREM@JUXH^` Hs;>0"|%VYO_USxW?. X*LM S,l 5 ]6v  Bg}oo AO%&\MyJ?,->q/lgS5/ ?=:cH04"ce]l#ZJho:?Pa/ccdu&^efNKA+$n5OG#p"6LlZDz 5@i"6W5n8G?0T$cdfv3iizzy. XAfu|dWYfo".'e`_1*7Vu4rdI#~,'3: DJ0+DH|vjmtI|#.kOpnzdDNN7c2^GRh$GAL _W[XswiH#-$jB\=*K_~1, G^xD>z9ug ~(hrA<0N{{UK_V3-TU?CqMg SrE ^9w Z\o`AEZ/^_]59DsO=D \EL!20OS0u53DG ]USp`\`hh^tBI]T/ ADGhxybx~' mbueH"+<+rOTH+vpL?iCsxxyM_=q| wpTIDt w{E6?C WZ ,/8d8f^) $BGRSn au;<`~dWJBDD5+IQQ (QO8Y8)@di~P9M&hce^CXnf30kYO-ZF3<b:61t7,y0kcO3-)V)$n^=P%+CMPJhzg0DYVZDp&a6>+BJ]7 M+s3g &YA" B1tyB"J ;{|ZjLT'\lIlFrr.ZPL$N(VL5CFc8^1qt,!LC~OPf<! {Fi98qp2#S.kZoCOxi`t&5\7Xlb7GaHm]e]Wi{3g<^e\ (PBX:miX{mpBL9CH#n!a!T$EV.J#1bf{lw"Is/RJ2k6 K!S,V>d,[`|y:[;^\4_B <J|tUQU3T ՗7wZ ^ ˤɮL|bpgH]鰴}áU[2PEƕju<˴麩Hgn`ɦCge,J84tk;5:fNMf 翪ڟaby\󱝲ŏɋ:L  xp鳶{ f|vZ\sEx)⥐ah9d aoَՑԣJN4 y߳r9is7-H 0psm>|1.*7il·ͱِxhk\ρ䐤5Oؐl:8)~bjʏRmÍ'ts 8$>iyiu+igzO%:HR{ : ^rV%p i* xH8W1f2,7UFHfUT..Q!q-:QN}UCV;{AXPtoDH5ji1 `WP!&ub3jSEKhDjyN}j\ZT>92b_[/TQsc5IWr_A0=`eh%Qg/W[[rCM'|R9lOZzbafBX@|Vy :%7!@^g~8S;Sd 4Lf&YZ[}Ph#˥!_.-Ŝ$Ѕ d d qqW?oٷۚ(sl'ۇ/Ib۵l+κE.G"M#N '"02pusݎ}~5׾2Oð(Ƙbanɏ̗wLl- }]p6:stz;q=5W\V<%,  Ki^TZ0 vM Y3OF%.{iN6tC wudu:4sE v]Mo{fopU%c 0  mzH@_bkz,g+*th#W893jbdu\!0P|d4hBjMr4i{lt ,k  ` k(YFg~ln[GQuP2|v9hU7AۜlaiT0vu{زb47 Sw%D+P_^l=Պtn8ڎ 98f1GSdd f$֝>3m'Ⱥ.%g&̂1\I`x@0,mt| m٦0ǑSLo-<:TUp!$tXeT؍}hpNho25AUE)ć}>T,c^ʠX pqtեɎՠv j#iz@m<.5&f 7A?e ? Y\[CnALY/APOZ2_JTLi~ˉȯG䉑2^ך =pejiMFXLg-Lo6M l}$Ju_]K@_1)_CT,KF0%mGa$< Q:l1pS}Te:_bbW"nj=EF#CǻCO$m::Q슦o!Fmч*fAc^ha@nZ*FF$R"n왚,e-TV^yq(1qZ/yqvtFME(JRtg =A-JNGUg~~Ofs]fa< ( 7]PSTX uUTGHHPxgn}8P,i@$/D+&C LVS"'q{&s7#F !TW\VcVon9V7+2vpwf@okCzl|jD,nz2'q|@W+jciDj#E301),@@|c`b*LU>(y@w@t}&{w%3N /O:9lyPIHKB/V(n]BP]q4 nKL*qm=\+MUc}|u-BjDJy1/E)@OF)dqbnw@&\ k`<W@_JnmmQuNeZ!2$K f* 79X% i@;NS.xn"OJggF=L!#)+ycM]TgQ&{IQ;7~W#n -W_a %0FN~eSg1T)W@$@8daID2OwLJDL(>D_\CV$7,'xg0DC/1A`pAbTH_;eGx\]N~18Z):kYjr,k~Y=LvVNS\].rW s,LINJsw} Bo"ZWAI2WlZ;6*a6f#qxpv\w0=>k;' OHa869?-0"G+ = K cKe9MK~Ud+RZ8$+[xtrM@Nsn2;<)Vf>^J%:K.61K<1(#c ]g. (|;4Ft{%FQ\H<2hv5+uP=.#=X'idr sdfljmaW!CFP0U1RoMJ'PB]T9\]zF 9/H V2-#\1l63G%kr3iuf7Vg9;if~ 4k\r[[A#$?WCn Y5DF]E, uq}\u gZ9<.P}&B X2P7xb`W3NSdA|xYOo`+DsJ[GgR2HSCNAU)I!?I 69pKYq]?Y }jpzYs9d8*bFJq)DTQ1-C /df"7]6tnlr%lN&&K$kq ~wCPD<T*&2ndwtg H^, NTXzuhO]kmp.Q(u_O.kQ`av1Y)pm|.5t3o=;S2d4]>e{Q<\Q Gjs-lT2,wT?n ]P1C ~ &oW]  @s7j7xh|D`s}~QFrGs?]GYKK8s,2MT)bhHu@ty*GbJ  *vSMLLil jbtPO"o[fJV^h4$MIFq]IU[$'Frq,ww%;~y  Fwqyv Nd`m63U]X`d!;W&5YP 09o".>N:SFBiTet(SE+yg%Y`dJ NR0VE}Z?"td%F)~uG%#!ma *E+';2q(lkQ^F`C&Bjw"A07uJa:L""67% >=ziGnPvt#D;s%D:NXkj\m(wQK4PB,:@U),vuu 6 hUj`W+WEuc;z8;yI^1s8II!:OE^]3(]y|]Nn @0p|Ip7< "8;F  V_18tzpu{ >d,c t aV!mvqp$gSw5!|g98| GtEs8*feWom:K]Fr2*mzw;B@%%t lQt<@0c OkB8JC@${u?k{]:lz72gLknw mlu@ x*`]yG6< OE2pxd@yQ^ac]$ A%3\Ibrr35f7fEV)VWx!hy)gen6q^,K,jcdR 9.;SvjrI_DCE #6IuggTUmBQ,A=|0q{,>]- LPq c"peP]B2YBsq;O C  Qg{;/ eIdy6aY|sK^UUO% 0 &l|D8+sZ $9/[RgiJ3/64Fe 6j]]&j\^!)Hx9zdcu%+]&.1_yc ikX]~p "no'R'X+a{*$a=~|$x1tNC`x5OF on e9JC 9%495g6zl|?wN)*qg2G%sh3)E`*'=;2JY_L;?xKO\'e@ k.u^*_e9H2 &K}/%|fQS-{< ^XS\Gu$MO\VA^^ 8 `RQ/X|;4,xA%'8P#Tbt|CO*d 1f.tKb|Cw,_VZ:;*%X%>%:G{6%M8_;-I&&_p?ohmX  R=1 7--g@msNsf82ikBS ?k]fbKy o\(k. 3UdtDP4&`=e`/\|webTK[MMok4,)4e|1MAR|xJ|Cz}&:JBa/yhC Vz^,Bc` &`Az"8OO9IL=Cm7Y %4J r\QY84lpw8V:$L|Ju9xC^4ni *o.z<mu"lwG[5,[.xhoqC+~'r2G^tl-VyAN5|. !090J6o VSrY@Ao]{/5MDph{rrK/J1p L]O /ppB ;(O!a5~!}r-nacobiT0"44KM _:$q&Ts2)O?krp@r~Vee E}8d~^Xf_z! U9b[ I_Q7E#`weU#an{ fWs +0ARl->Q[1f+25e|+i&h*2Z Uy{x(Bs&ceI,+B5n`IgZ m~q%5V}dB:r0MOKB)t Qn3 w}9hQyk /L4U,t*p  {nTUBB,6m+ F 7$7dVrpI=NT\''&H(R0Md! ^Q ?z=< 1$tcUHkWp|k;; "MH5k%m#$Y4Gbeb->Ue{A*v_ztK?}[G.6a&+.gd^)WrH]y:!oq H@ g{Do 2{bdf\^$#z#;J^+c$}% D4I 1%tT%nE(44z6$ )w42>h5 gN-GeF'9@ ?g= J[4QKpI%p~WXV1IT5dwIu2_g0,~qcqn!'S2$%o!7.fo6^;-jaR@HjLC$*7>Tt^:xK>=?zB_$]}Uct3*SWQ}qiM{< &WF\PJ!x N#?(P KXe ~^Mg. Cf`pqi~Y1x4}e8^>JH\0O7f)q^j+KYNUjrr5u6pWe] hE_\lhE@ (8:d">:*|]?', "|TtKzW ' 7G7Jp; E_Pz"e|"Gg6,nae3m6xqoZO4fnx\B&31IbKq6"Us<80G`zdjt(~ w}w@KmCcC|gjKKv ,a$;'s/-K&z_YHrcQJ :2ZX"QF89?6upd[bfw nr r(]5iV S#CiE}8O .!i='J:u?1xv{TSo6OabP|'3Qe|nCAMe3a2P[so#4h );0/g>Bf_)*(_eX_p>f!9MBELg_k`g{U7:A>rLZMX im[VrGD[&pr}(n(QZ1$7p !V~7" Ko\:p=Kt2"_wGnS0>^VL6 ;DBMH7n]OWLK3efs3noHQ@d~@tk Y }j8VgG6eUX!rm?3EW[8EMY%X!^E A`Vls;_6SV!KUE1bFC9:M2+&,#=3"2 )Y]BBd'cjJ NsV` /GXm {P_AM74IGrf65SAMNYzX(I_?9+HX')uL3*3 D8ey4G^NjM5 o Ql-bbmh DAdRf}!+ H??['5N1N1Eg\{_!Z5P %v.aW&VFX1*wK"vgWVC!a\y bBdW9)#)ߕv}tXSB#9LTZ!IFN9Z\mSENV)?0{ZI8Ttyc}`lqum2!G+(K!?OoIK}(33Z5(5D+q@[U3n?8p0,'b"4nEN\K@LFCIOC'#@C;6=3d_U:f{q +HC~jMQ<=sW+ =(nOZES@~ TGFRB>n^P"** 1( f^#(|"mE]*Byptlg:{H68eiR*Q;<1jE(;])NP9tCy lW[K2&SU 7)J{!>~Mu"VnfmHP7 P. WaTllC82W)DX 6Y)x J%'+836@.Z_Q' rc9PkxkSV}6-r3Yl!*;"%/(x;>:9 `pMXp)MvRa-, P'[9`nD%,0&/oU71L 52RM{LD+c,ks Zc "@'1Lcd%4"vo[G8Cbx%81_C 8e"q :]icH s 70bR%<,xR G>6y}~0M$pe_6fZYr{&M1Z<7=6>YUKn%u;\)t,2N3@-|mmkF^6)$/Ra~|(1DrR7LEyJt01@U[s)LIWuYc,(f6$U# (h?o+=/6_hme#w5P*$wCw,j n .{.ud*N&7P7AO7mKSiVA| %$kj Rw%*#E .~-5{}=:BhoEDk;L*@g$UN{|u *%,,o n}VH.&xa+"Aff2& ]Mp}gSEATZRdKJq9+}f$sjum~EO^ps \S|W 6m`Q8"Rgbyp'SvJgPDx;6J[ ZbAv.fA:N4O}1q$}!+,nbF;w8P!%G@c7(<b O"2M %fmMv);bTjQ# VfMT33\%DBX"r g)p,Laj K6;4,[4/1:9+OF ~ yog)W]%%io5ccH:-vDxA]*6|VB"~x7hSg_$;Xerf^Z* 0 F~*W.*O"})/rQ#DgPgTmonQF?(jm W|Q4 -e${yUi4feLP&;hn,@S#|v{,]BEX5{H v$AL!OR^ p7 #O8Kb7%F$-oA>&\; {?7p57I"@ ZWY(T ppvJFB(L_^a]xXSj->v?-=Wd VG~/Z{J~>$\]9%Ez!W|%: p{@O4uOOEU5v2v+PDY s1:yI aAD\>4~L2Hq^ yY&iW+iU g_. \HO%aJx/E'K9:Kc66U1je$Nd )$Ox&Fo4T{Hf0FjO8 |5`R[1I9`p+Z6bA,$y,1?]<-dRbb"gTSnRJM6>)#B< /[nTT_6/[e%)cux,j\A!cB.PAn^Jkk jGk>p}YDD9 3M-sX7Ki4b;BE.\& -(:f(aQR_ ]O7`[,iNg$MLE xvAf4uh@v !*=|n /^KMqE|!88hD>{iIiW1v/=4DOg(xQy:PHG AL2Ogk-Dfu'7Em7 vY_z:"AMxU\@>jm4/az"hhott=K@;dA}fYhD9JR 0yk|3^8_[OD(DM8Rcp XV`]#b:~m !G/9w/GsNv:@>v'H"/J'vb  Ga`G]V/cyjH64oZV.wKm>ox<G>q%S@n '~e%zF|WY[0575H7D9ps9|>Q);GC0)=[M&;} c8ha]!D7 fQMjY@@^Vm 3C*,WK[g^)V jsr:URNJAT,9L> 5O:)]Nsxy)mtAU,esQ A~Gz*~ dKlulV:3!$2cG d4%|0G^XnLj+,C3{=HY06(Tj (%$v`ILd9? )+W"A(rC:WU\0$ baO OUUVadg35Yb6)7LCG<yF_X=#D y %0R.%,FWp?:f.(6+  7P?=DC/dC1$El~S7ZNIbOz?V-wVbvBXD:_/9JH|K*,.fS@)"dbXP!C7FOoC%&$0 H^V$x!YjMYjw p44C!w02J"# |Ui(J(:=EF?|Z._AY1Gg=K|k`KN0/\SxfftLASM#Pt^/FJ,5 8e}SY.T Tn U(-V!v_1Gwf0# 4SfanclfIETR[-Mtj(," +NQv XY!V]0MD}b]VUE8:GNVPSJEPyy_:MU'qm1sLvjuc6$LK0I 0S4}nIZKfW75 LDW,ed uunB^W$;SRI[_@GW'!9Aj~ O3R +N}u"ffU L bbkas *namfeWHT.aj#>#eexj` " `kje (8V+.$lp Eg{0ufkq7rwd8>SD)',9!sNTQE(N1XUTE+ES"2:NF(*[Umaj mfdVer,dq[oi+iu[,!kdviSUSGK=tUlu~b|edUKV0AL"6:nboolanx~eudo_S: 37G&E:lv%P_&Q^>z._GoF.&dpsDqi|,LR24Q6265+2g)WL<2ddq|x5CF&WFxOa p lk) &epm,ziDpATl* zcah)r ]6T0W'yk0kyJ ) Badgk_7\ly^o(LL zf% aW^!o#zo=&S3]U/swz++;Xk rSNm'C+roNVg)vf rV{{qwax+I2,(}vI]^)Y!z^!H-+PTK "J"eE+B7Ozaiu >]O=tV=]}hdjv5JO U* v` t<xjj%K1P3bsmggh_31 (1R+K@-"F6IguVyr_"X;#/_<,H&G"R n*gA,/,BI$B+/P[N| AX0gPP$hh!b^%6@CHN+*#LtXec@az^*PC {$jvDAl kt aYDN3wFU'UyeFf>vvPUsdC!#0Ojh ~B-mubxtC }$J JXlhb ]xDS,rd bw!g4%$"x=c~U^65(dz'T6ZmEekz*`p3:>S#C7:z\9k{ h{IXTYV)#GerC"[yivv^.kye~<3NaCL~WK-4,Q(;tclP xI_Jcp.,}c *u .J`jde`#z?raNC~}l_` vFEH_*Xd ~nl xw oEM"CrSp^"[Fm{D i V w _Dl8?}wLE " ltk80p_tB%VBJ_ASL[&l((NYPEs=}>'6=Jpu2;!ws-M E~ ~;}g%(,QU*+1;-N5!FpymYa !vxMapgX_w4};m;!a`+Ccgx^ \O@qy) 4"[\ao2:R|C8* %up?y=qr<vHS$SeE@wEbjs kqpQ69FO Itg2~8x4v.0,00)2bo{|WBCu2L[ag]%US&%E{qpetsK=#"1,hqhDS3KGltbgN_6F$T^s,hNAGvzniL9/>J+wmlvx^"# ke~C'QF68Aw! Y$:~W"? $}83YnjV}a|8dve`m^1nlz.{st1$2MrdDXU/Tb:6:+tnBde.R[TJwr| v} nwU>>>ha=5X^]JJk4m . :ct;3DYgKZ&*F8Zel}j M3G_pndme[flVJqC9t1S/Le%l5.b{$dPt' [Dlthecn`E%Bawd+y^ hZ&,$F aMJVG+3 QWNNSW{v iN /<$:>A 7A1 '\dEkx(8!/syAS%<4lEW"IA@}2Ufll{)leCOIzac^y:d_} w?&/z>-k.;%SQ ]!eP dF5B#g ,FpD4f{~?0^lkh7k-25  ~9zf}*x*eNj`T.[ GIEP[>YXDkf&zTxassL}Edmgq1qJ_ u52vwoo_fg]]3++Zh)gNtbSC#o )~pT3YDY`O ^tC/;:CN oc{k{(Vw Cb8TNy=XfSfnUle mbcbimS iF=EIOU3U`5, lx)v",'jz~Ji;|1;l)h;Va16E P*~b}Hi)mq]ssqpx->`iny{>g:.~gdl5W}4f&xio-3 ~[F?gZgxq{"(ap8[7 Y^}bJhN]naW {w N@%STd-s  9.M pu ~ker%9X`bd5clS)I&8>Q wFvO_-#:R2lYE ^T$#MQ5>V8Y:f W (d`w dENw}L1W |G3858:q W J ni; [rXg !2BECb)O 2)lRf%1DNzttMO* `_U:Xnhl)g~xELw $ g^RJ; DwKKaim_`dx ynRZR3}wl,*{ o]h)c a|5JmTbk!ool@$cv"Ar Avm]J{D#r^ @D?FGr(HU27gLAa[Lq7pnE\["T.=x|f pJnSuBq tTad+no I*.r# .!07K6:F[kf1$Ko EID]'(] e,340xGE78ULXE82M,~PAJB*7/{J jEd$Y `M^_5;k}f-di\`K^KZ^F@P H 6CNVfWr mgoAk( *R)F]02<${ lgSg\o-op1OmU~Smb}mds>g{myfiyA{8`yo +=*T'%Hk'#f_hpy _GT"tA;T`G5}Z=b68dbQ C;x1HucG@-9!y8m `w7f[#99yVzL 6dYKT%3I-sYL L a/jDqjWA| {,F*KV zZ7G'YPig;k #e6.I9PDM}XE%r(+ C[EB*X =d1@o-idu0 AvTC[u BBidhyQF`i},_>Nq/5tyf~hx(gN&;1 xZUVarcYm {2LneR!(. |arZD0udh {Uf0qIX JA>-,"+&mVN7I7>v8!t6v pi]p/ { {@-M5EiA- =2:@Ir{khg]{ks G EL/&27hG,'5  "n|`=5KS&F@YUfdM r ^Vn}t sS`?WR69&\(C+(`<:KG\tum b#S^"C[l!%H uEY)egi ?KMnF-d$XARuWbuU#z\vqb T5#*CSI$%Qoded!'L j}eLuty'L9N.=C(S&p^va8VEtXs`wSg+1 6N:FLV9bi`j "s=Q(;DD3&SAa/r<|AK2pfaXY VT#%7g:;39OsR+*Zpl Ly3+,pGQ=h}xWcF FSnOTluw``@ba Al !jz4mGH' 9QTA9Hq~v q\ 34A" kGH D}ISmTg) xO8ur?TUHm.v7CU O"|Y5T <r'Pt TU,g:- 7K@F3Xtdxba:,S|T lFOL= 31UZC covpCJP]qk U4G7zSK|m}20yUDvdxL LMnOXIxHe^Rr<$vvx^6{JtkZWf5$1?4JB, }o UnD d Pswsz7&JgELC4B?in qjgw TcLyvCk2jt:g mc| N_|9|qvsk"-Vy_que%E  9\uot0^$ 9vbzI V$MQV@xRVueT9"jiS *4w!Vhtu?v"^@ (p56 '`M@mjf'*do:Or`zo?R$xGW]-MiM<[A W,Ss=di0vv.@SC%V9wJ]:eg|7bIHb@w OG H ~SFun0g: NgqmVt uDa*{yi|0b>x}*h }z!ta"7w`qwt8Fyg{9 t,SH4T "cV  bHGQtfau%-omy vJ4%# NL$GCF 8SGi AAzbSNGz:: i0!gaWTk*gAA Iv SDU|k{$bT S6O%h/7{=T@4AG0ecayL!dY3 fU\ 3= hN q KGsKjth x9jR2^P5u&020dxTPtq @O7vE=@H;hvwqEL'9{V"i[StmFq80Qomz6IN]Fps"|et? aC^5< K^Gzd~q}4 zh8 a i"`~;ekUc4|jsqj bS|Hg0^0/) O)xC~ reHXD^HdN=qNH rgRWCDF! jOE JD#xLO5TxV wc$(0Gni!^OW&lBE  MwF)Iuvy_ * jss db H L \(Xaqz>c!;.Te(lJ+'dlm>9$W="86 SHCFC1X0X fwvOJFVa5P zmtnsatlZ[v|Ni{QIV$}3G~ )}|qJk{9K3+begz\ss_&KvRlT!U hbndq: knsa8u|wun|eog"xyFE7|`^&Q\},W v| V.Ar|9?>EsiQ)5x QRLJ'R-#9"W^Ba~gh9/y} F%tb%GI(tS (`f^GV;QE.,  ML4[l^xsa+!{dgLkVV!?sVd6$RgV> =c@}(  jL?QBgOCk9t\)mmMM5EFI c[1OR nAMlFFLCv4\fp!KP%*Q'(MDmM@WdP&M)a 2D); D934O2 Xz |Ubbom>"_*Y^oU+ppn_S.ORc !=  A@lh2%Lkl(\N($9jvlE?mqt_~cA41Q<oO/Lv_ sqgl89=.  I8w>%sr<.d,{v$/zs9SdUtnrMrjjiI\sBdtz dg/ HY\t%Hi";@;qm[x KxM RnP;(fJw!o\c;`A 0 p9_&{:rE41ldasp~3Kju!zk[^oBPUt6.k;|ixf{T ~d mMBc Hl|~{H5S0Jpxn^Q|)pw X7 dz,&:9kq <[,_^t,$4'BRl` %~V/Px}xCNi*sdPU.MtGGD(:a\)-c cXIs9=v_ovD}qt{nhJYmnT ~ 4+:F5/p}[]**d'qN\RqCcF"~bB;M=vgD;zrg2C)*C#bCrar\i(]SJI('xMRO4goK!#qr |[=6%ZwoHJ{Qq` A Tr.znIt/B TR$&L+U0 "N+BixWu6G4@ b9 Xd"`v 0(HR v t#n v}k!qo gvco-28rx <>|ekorLq"b9*Zr]k_wah;fj"K lDQ4/bb~m81& |qFDWgFBLx ]#d=_]6) ,*&E#&(26/\)!_LLY*:wRl@vt}f|l (385rP|; 9Aqztvd_ovwPDj1WB:^eK TTq11e!6?=XZ" j)nFP:}ihM^ae6:uÐ1pnTwrqfF0 8{VkeeJLz3?>1i+ d8kVϪIK~,],_3C}WFq|1 ?[5uMFn9y lYk_ 0 SFW3OZ+O0+20XPGhH4LudZ(PXDbfo!,GJ(Bjo;lz:;_A$J|zY_V# cxR<pK>.N=^PKy2> ]\, N70A:[TzFI| ,l@ uC<WeD<='X'" >*0 WbPKQUT+#%IIk^m={J+Da*CT@`zsc|9c .J? yO GgT.>]& F_(!m% UiM9: NZ$kB1/0p`ZVSo(xw `E KSmHzDu+oC!1om~txDH"@yo*k|j06ooeLF~KGR j5FN- -6EnII6UNUNh^PC@]pHr W ^L{KfAmhV>F=7#G9"RE  YJ U FoL*@=TbW5Lfskn+-yn/1t TEfnFDD'A4 T"kc[ngM~\6[ (IW86gr5N%TCX<=a]%|f4*WlR\+HSw_^ _Uvf?^~x^RR "&^[tN8&YL"v (K@84\_Y`K>xEW)CYoq)sADo`vXUb;DNJ(_YQWr~ NDaE s rbXjPBZejm4#c g'rc|Z\`$Hx]m,l ^v$suO%!zy~P+ 2%y*k4M7,,0*Ecb"McoiJF7mcF|if`3x8p`$:Dr_rz _} v:2}hve|dg(Io`qP0wTe1`Au6q &tj?2M>hTnk3*p&=.W3'|z%`(DGL:k0 <.2ql_ ?4k ""ȕa|S(ff,NJ~H^t:a0Ew vE;X0+c$gak4/8+TeTecF y;Ltn7xB2i@x zR9U`fbg7~6z!hqk8!29s`ii+"_%z!u`~Dy7\g9Rklu0KR04- d`+{6@I'! t?8xYhf<K #A  f(~yns0{r+|w|` };k:=np tYN*J(j(e&sGkaF*fHa8cg%f{~e{Y`#g_0zrsdteV/I_cqrW7 FvDx-&!wfc4q(5k,.w?*UT0cukv809z`wxDX+Lp,'2tes3wo.zAdevki`0-+21%k,,]~_Q9ܷϸ̲غɪԷӂӖ֌Óɚ٣払ƙ픗z&]n@2T# 6'CX3HR Ve=uE^q L+ SLTFSpf C]^ ~/."k@D7EV`O!z/IM{dl HLBSg7>rDWMNO   fU7DP >fo\ YoLGR arC7V}EZ` |L.+L lpju(E]vxld$\hN  iC\UI` 7 iDV7f G1>@T'3V%J-5Tv7W*=+#XWsKk>B BY t&?t^#SI[V * *dibFmaWlF0.JU t=@dG#i5|"-XZz'"nygi 8'w@0^ r3yJRpP  pMK uK eft_P Dp-W$W Ot'=zI,Deq(UK10 Ca[e#CQR^mF^Z]v~@ \&CTjGbV Z{ 4]\IE.QefWsM1k9n\-e1| zn,2|u)dj3+!?C' Q4 1 L6} c4']vp`(>7889gieNiRweu }d F:4./+~~ yhx.l8026<`dq y|>ks%kML[j,;o+bS$|x}iNp4a,$00~|bq}q0j(w`v8/0){(v}kd7w5S%}{o%js9)pjd}*aw JK9/zsrty1v.ffhvdm>I\;xm>mu9_+|xvobXn97N,kc'0s8$~/.7?nj!e'muq?s}omi01_(9;>9T`kc| v^$0:ut`dgeu}@}&zz u+/4*x`leX3q0z&t#;fb~c d+ XAVb `uqp.%j&v v00 0/9%;".mA=44,u 6su`sp}/j)~\Z- @qVnaw C7,LB}#lsGAhj]ew|=j Taw2}(dget |afulTybc`m|W_|k+lkp}m11B)k{qg3xl&~KpIr-hX0 `{T>,su'w Dk6psdmRg{M:jr e|8=&F~pki; }CTHidt!~'Yi3F5$& [=kUm `7H=s|de>iL.?"Z^niqz* >!E ]+ V t??55}Z"ly8"}nls1nw+61),, imp)q ;@sucoy}utc`nS~|~6+~#p_k??~t`cf}8|kg~ElKh}p#tm+Znd}-X232v`ey{\n?ncedDviSu}"%Q9p}. C u w 0!0tu%hq8-J#|'jbzs#oNfxb3gfiR=*8r6463jieb VR;k ad7:qqP-x% qwm~DzJoq>`m)s|7k:Lpg~T`~=p:1**;Vpy*Vsed9!tH/e#Rg gm cG69/,dnw'wzv` d~l=W\EgnW(] oDa#;4 $GZLG^Qoan~(4$#h|e`SL Nmfxp eI:kmh0}Hltve5)qb|( l)vT.ld q&U~fp  N?(3hrKG )A7'jo*c6?>gpD5Le?=>gwm~Rmn$h~P:x<0cia&opz}7+9\ ^ldOo(nhtnMEz_*;0Jvncs{B0T500n25~.\avrHdgxl~se$lfk-Tf|l3Fz8%Y3}xdeKJHk+~Ug|$ i nhUwjr F=ViqcurrUfnVkld#%rddfjimN~& Rk^woVkilepSyu wVc i Vadh. ThemaX%\%oV[ V]~fRLvzLcoF o`{yei}pbnt~uqKm"de oyn^[[V^)St&rgm!l%t, hUaUuwfoi Vrdjt#lo#at im\)Vrleoly!`fwlSa pfaVdl}blf(hywgmQ mrin`tmWt`ir|spfiaUtm_mX<V|kas y|{<C:`Fk{fb{qg`~ m$r0m4xv /ler$HxXwtoGIL󃺾̀Z9i@xō<+쩢|m!*EvhtxRj~#^9VCW} D5"vF_xUTϴ=q>yMd^R!!N_FdWe|\jO4hfc|QdV"N7se_\gyed qieZKZW?L{A:_:RW`dF(ywd!#u# e%]kImxVddS(mۚ#7oDp.Qẉ@4Is4"rzfYuyhfps@w J .(1pwTiP[gi9vKSf_em1]As9kv+iwZ'v5Hzκj@f roG H!u~; $Vy4d$" e* oq½)| 2|,DlkV:E{c0T=pu%O^{Ȅ`;40{EŴRަlkaudu5 öxR wCbNwQrNuR 56`{T]XemMث/IalolktcH :שt 3Wiw)㨲u$ rI怚7zEh3bg1EZE< FN<~'Ut!T'|i_ }46`?:7^1 lx .VmOm=mpnV na$)qqW: S.׹|a%q%p\g‘wsltVH;why p2NsGj(`syjdw4lG~iu?eԻ?vF(ao—OqlrKw~ r@bu؇2Qr# 3Dg:V;JVg [p; ' lmiϡ}G)$t N$;f{nh!"EaeemTV837i0:|r("GGKkl0#/%k=Ƨ{NrpvaHrd+e8Eb* Xq;lOi`El0 De!DLt+[û 9CD.>~^L??pYVOVSkt=Nt=J]H:"e;|Ba|f|R5Op\GN1}g>+p#m=gE< l5z >BRBc6{Mu*vET>tCKw\7K5,9 KIZ H~"tq B*Jk1qn.].mb76 Y 2coWF"7JuHSk&;7}zqAv"w)@!훸-XJ hm^76bH|faxgf=DFM KZz0`zgT=jen񷋔LveCEeR2'p=1DR̯ubS.h5^_8dʷms!U1`zBz|<9\|^ uEȹ|c)Zta9e^ wcprn{h7{ ª3VЧBь0L\ep tߔIfdl azedW#.h[ Yبudf` IU.`mnʣm*2`/T)ofW7o2֒Fa5:2 W̽k:{Bd Kot8rvgaO tugf"zfSbcr`qx*'4{fpel#AvȵtB0oÌj\atVm`um X'yUԅ;ՈؼdreUQE"tMV7wk~ke=u"Eis%~*dTŠժ>h%-78p|@!#wc. Aymc_-1JLֿ3يB[dr~YmOY3s`'-w7#o^(C)[f5gmoa:d;`u !63hhesys;?XSsp/T|f9?LZ<>R]:f5 G"} `;)8v5{$E@fr\eGd[}1.n6{z'ekz_uBowyn9n]e.#Dq͹Aq VW<Da h~!=b km G lIg t5;h-2q; }ܴTe􄣥iu 9`Qdt2'+K; SMBG4r~ɳP1?D*7s@Wq@uKE[r[2}pbE5}}C [#q[, oij Ar 9 %8ekuI 6NH ~2Dhrl0QJBeTd4}k\ 1_}S=?^bYc#g`dZb0 >YrP .d &wS uvu^׭wP[~-lrXWv^&< &^USj!a#%D%BSeUzu+|aSr^RJrczUwbU' uf+p qQU"grիpvvvvu~vvvvq~uv:vq~vvvvq:r hv cwk vuuvvvvwvuvwvwLvs~vvxkpt;ftsftwft suqwrffzvq~v vsvu~us~uvvq~qv}:pwvqvswvvw:vsuu~uvvturvusvutsu{: vqzvssvNv