kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

check.c (1465B)


      1 /*
      2  * Check structures for make.
      3  */
      4 #include "make.h"
      5 
      6 static void
      7 mk_print_name(MakeCtx* mc, struct name *np)
      8 {
      9 	if (np == mc->firstname)
     10 		mk_out(mc, "# default target\n");
     11 	mk_outf(mc, "%s:", np->n_name);
     12 	if ((np->n_flag & N_DOUBLE))
     13 		mk_outc(mc, ':');
     14 }
     15 
     16 static void
     17 mk_print_prerequisites(MakeCtx* mc, struct rule *rp)
     18 {
     19 	struct depend *dp;
     20 
     21 	for (dp = rp->r_dep; dp; dp = dp->d_next)
     22 		mk_outf(mc, " %s", dp->d_name->n_name);
     23 }
     24 
     25 static void
     26 mk_print_commands(MakeCtx* mc, struct rule *rp)
     27 {
     28 	struct cmd *cp;
     29 
     30 	for (cp = rp->r_cmd; cp; cp = cp->c_next)
     31 		mk_outf(mc, "\t%s\n", cp->c_cmd);
     32 }
     33 
     34 static void
     35 mk_print_details(MakeCtx* mc)
     36 {
     37 	int i;
     38 	struct macro *mp;
     39 	struct name *np;
     40 	struct rule *rp;
     41 
     42 	for (i = 0; i < HTABSIZE; i++)
     43 		for (mp = mc->macrohead[i]; mp; mp = mp->m_next)
     44 			mk_outf(mc, "%s = %s\n", mp->m_name, mp->m_val);
     45 	mk_outc(mc, '\n');
     46 
     47 	for (i = 0; i < HTABSIZE; i++) {
     48 		for (np = mc->namehead[i]; np; np = np->n_next) {
     49 			if (!(np->n_flag & N_DOUBLE)) {
     50 				mk_print_name(mc, np);
     51 				for (rp = np->n_rule; rp; rp = rp->r_next) {
     52 					mk_print_prerequisites(mc, rp);
     53 				}
     54 				mk_outc(mc, '\n');
     55 
     56 				for (rp = np->n_rule; rp; rp = rp->r_next) {
     57 					mk_print_commands(mc, rp);
     58 				}
     59 				mk_outc(mc, '\n');
     60 			} else {
     61 				for (rp = np->n_rule; rp; rp = rp->r_next) {
     62 					mk_print_name(mc, np);
     63 					mk_print_prerequisites(mc, rp);
     64 					mk_outc(mc, '\n');
     65 
     66 					mk_print_commands(mc, rp);
     67 					mk_outc(mc, '\n');
     68 				}
     69 			}
     70 		}
     71 	}
     72 }