# edits noweb/src/makefile for Ms-Dos + PC386 + Icon 386 9.0 + DJGPP + MKS 4.2
# tested with noweb 2.7a
BEGIN { print "# generated MsDos makefile, original in makefile.old" }
/SHELL\=/ { $0 = "# " $0 } # disable SHELL def
/for i in shell lib xdoc tex;/ { # new fix for noweb 2.7a (not needed in 2.7)
$0 = "\tcd shell\n\tmake all\n\tcd ..\n\tcd lib\n\tmake all\n\tcd ..\n\tcd xdoc\n\tmake all\n\tcd ..\n\tcd tex\n\tmake all\n\tcd ..\n"
}
/cd ([a-z]+)|(\$\(LIBSRC\)); make/ { # fix problems with quotes and 'cd' and explode into 3 lines
if ($NF == "all") {
for (k = 1; k <= NF; ++k) gsub("\"", "", $k); # remove quotes
sub(/;/, "", $2); # remove semicolon
s = ""; for (k = 4; k <= NF; ++k) s = s " " $k; # group 'Make' args in a single string (for the sprintf)
$0 = sprintf("cd %s\n\t$(DJGPPMAKE) %s\n\tcd ..", $2, s);
} else
if ($NF == "install")
sub("^[^;]+", " \"&\"", $2); # add quotes (which need a shell) to force use of shell internal 'cd' instead of bin/cd.exe
$0 = "\t" $0;
}
/\/dev\/null/ { sub(/\/dev\/null/, "NUL") } # Ms-Dos uses NUL to mean /dev/null
/strip/ {
sub(/strip/, "# strip"); # remove the strip, MKS strip would ruin the binaries
$0 = $0 "\n\tcd \"c\"; coff2exe nt markup mnt finduses"; # and in next line add the coff2exe command (see DJGPP docs)
}
/chmod \+x/ { $0 = "\t# " $0 } # disable chmod (not necessary and sometimes tries to 'chmod +x foo' instead of 'chmod +x foo.ksh')
/cp / { # add an eventual extension (.exe or .ksh) when copying
if (match($2, "^c/")) {
$1 = "\t" $1;
for (k = 2; k < NF; ++k) # NB: 1st & last field not processed
$k = $k ".exe";
} else {
if ($NF == "$(LIB)") { # add .ksh and split in several lines
s = "";
for (k = 2; k < NF; ++k) {
baseName = substr($k, 1 + match($k, "/"));
s = s sprintf("\tcp %s %s/%s.ksh", $k, $NF, baseName);
if (k != NF-1)
s = s "\n";
}
$0 = s;
}
}
}
/install: install-code install-man install-tex/ { $3 = "install-preformat-man" } # MKS has no NROFF
/sed / { # all files processed by sed require something to be fixed for MsDos
if (match($0, "\$\(BIN\)"))
$NF = $NF ".ksh" # add .ksh extension
else {
if (match($0, "gzip")) { # remove gzip of man pages, MKS supports compressed man pages but in .dbz not in .gz format
sub("\| gzip", ""); # remove call to gzip
sub("\.gz$", "", $NF); # remove .gz extension
} else
$0 = "#" $0; # Disable because MKS does not support NROFF
}
$0 = "\t" $0;
}
/; ln / { # no links in MsDos
sub(/; ln /, "; cp -p "); # replace link (ln) with copy (cp)
gsub(/\.gz/, ""); # gzip compressed man pages not used
}
{ print $0 } # prints the line (which might have been changed)
syntax highlighted by Code2HTML, v. 0.9.1