# 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)