NetBSD/distrib/miniroot/makeconf.awk
pk 33819c6ee2 Change format of LINK' and SYMLINK' lines to accept multiple program
names. As before the first program name (field 3) is the one "with source".
The remaining entries specify just filesystem links.

Additional keywords processed by makeconf.awk:
ARGVLINK: used to specify additional link directives for crunchgen(1); no
	  filesystem links appear for these.
SRCDIRS:  crunchgen `srcdirs' directive
CRUNCHSPECIAL:  crunchgen `special' directive
1996-05-04 15:45:30 +00:00

68 lines
1.3 KiB
Awk

# $NetBSD: makeconf.awk,v 1.3 1996/05/04 15:45:32 pk Exp $
#
# generate crunchgen(1) configuration file from `list' spec.
#
BEGIN {
printf("#\n# This file is automatically generated by `makeconf'\n#\n\n");
printf("\nlibs -ledit -lutil -lcurses -ltermcap -lcrypt -ll -lm -lkvm\n");
}
$1 == "SRCDIRS" {
$1 = tolower($1);
print;
}
($1 == "LINK" || $1 == "SYMLINK") && index($2,CBIN) {
# find basenames for inclusion in crunchgen's `prog' and `ln' directives
n = split($3, x, "/");
p = x[n];
progs[p] = NF - 3;
for (i = 4; i <= NF; i++) {
n = split($i, x, "/");
l = x[n];
links[i - 3, p] = l;
}
}
$1 == "ARGVLINK" {
# add extra `ln' entries (these don't appear in the filesystem)
n = progs[$2];
progs[$2] = ++n;
links[n, $2] = $3;
}
$1 == "CRUNCHSPECIAL" {
# collect crunchgen `special' directives
$1 = "";
specials[$0] = 1;
}
END {
# write crunchgen configuration
# `prog' directives; print 8 to a line
column = 0;
for (p in progs) {
if ((column++ % 8) == 0)
printf("\nprogs");
printf(" %s", p);
}
printf("\n\n");
# `ln' directives
for (p in progs) {
n = progs[p];
for (i = 1; i <= n; i++)
printf("ln %s %s\n", p, links[i,p]);
}
printf("\n\n");
# `special' directives
for (s in specials) {
printf("special %s\n", s);
}
}