This is a quickshot os/2 port of fweb-1.40, as found on ctan sites. I am documenting how I got these binaries, and I include the files that changed, so one can re-do it (e.g. for newer emx versions, but these binaries should run fine with them). The binaries and the docs are included, so in a way this is ready to run, but you will need the sources if you want to redo any of this. Also, since I compiled the code with emx/gcc you will need to have installed at least the emx runtime library (emxrt.zip) version 0.9a or a later version. Making bootstrap for fweb-1.40 os/2 from UNIX on 386dx40: * First: In case you have working versions of ftangle and fweave version 1.30 on your system, make a backup copy and keep it, say, rename them to ftangle130.exe, fweave130.exe. Tested only under tcsh / sh / ksh for OS/2, with gnu utilities like mv, touch, rm installed in the path, and Eberhard Matthes great development environment emx09a, which containes an OS/2 port of gcc (*the* OS/2 port) and then some. * added SHELL to Makefile (otherwise ECHO gets interpreted by make/ cmd) * changed custom.h and defaults.mk from boot/unix/ansi: put in extension .exe, and such for some reason the makefile compiled to a.out files, which even if renamed to *.exe say 'Cant be run in an os/2 session' while manual compilation works: E:/tmp/test/fweb-1.40/web> gcc ftangle.o common.o eval.o \ macs.o ratfor.o reserved.o style.o termcap0.o Anyway, editiing the problem seemed the better idea: * ftangle.c: changed lines with MV to "MV" (check web file!) it compiles, but still gives me: make bootstrap touch ./typedefs.hweb ./*.h ./*.c gcc -c -s -Dconst= ./ftangle.c ./ftangle.c: In function `not_unique': ./ftangle.c:2704: warning: passing arg 4 of `qsort' from incompatible pointer type ./ftangle.c: In function `see_dup': ./ftangle.c:2744: warning: passing arg 4 of `qsort' from incompatible pointer type * Same in gcc -c -s -Dconst= ./reserved.c ./reserved.c: In function `see_reserved': ./reserved.c:2094: warning: passing arg 4 of `qsort' from incompatible pointer type gcc -c -s -Dconst= ./style.c ./style.c: In function `prn_codes': ./style.c:902: warning: passing arg 4 of `qsort' from incompatible pointer type ./style.c: In function `see_style': ./style.c:1261: warning: passing arg 4 of `qsort' from incompatible pointer type * Now, after bootstrap, I edit the file ftangle.web also, to change MV to "MV", and then make the full run with: E:/tmp/test/fweb-1.40/web> make all ftangle ./ftangle -uANSI -mANSI -mGCC -=ftangle.c This is FTANGLE [IBM OS/2 2.x (ANSI/emx) version 1.40 (October 30, 1993)]. Adapted to OS/2 by S. A. Deutscher (sad@utk.edu), 26-Feb-1996 Reading ./fweb.sty... Reading ./ftangle.web... *1(ftangle.c) WARNING: "ANSI" is already undefined. (Input l. 14 in ./ftangle.web.) (./typedefs.hweb (./formats.hweb)) (./val.hweb) (./macs.hweb) *40 *70 (./texts. hweb *76) *85 (./stacks.hweb *88) *113 *115 (./trunc.hweb) *179 (./t_codes.hweb) *192 *222 *263 *305 *306 Writing the output file(s): ....500....1000....1500....2000....2500....3000.... 3500....4000....4500....5000....5500....6000....6500....7000....7500....8000.... 8500....9000....9500....10000. Done. CPU = 10.2 sec.; REAL = 11.0 sec. CPU/REAL = 93.2%. [FTANGLE: Did you see the warning message(s) above?] gcc -c -s -O2 -Dconst= ./ftangle.c And I have no clue what this ANSI is already undefined means ... But the warnings get fewer .. [FTANGLE: Did you see the warning message(s) above?] gcc -c -s -O2 -Dconst= ./ftangle.c ./ftangle.web: In function `not_unique': ./ftangle.web:2114: warning: passing arg 4 of `qsort' from incompatible pointer type ./ftangle.web: In function `see_dup': ./ftangle.web:2155: warning: passing arg 4 of `qsort' from incompatible pointer type gcc -g -o ftangle.exe ftangle.o \ common.o eval.o macs.o ratfor.o\ reserved.o style.o termcap0.o\ -lm gcc -g -o fweave.exe fweave.o \ common.o prod.o ratfor0.o\ reserved.o style.o termcap0.o\ -lm * It seems that there are differences between the edited bootstrap version of ftangle.c.os2.bootstrap and the one that then was generated with the ftangle.exe in the first run, now ftangle.c (with OS/2 stuff). Oh well. Both work. * Copy man page from manual/fweb.1 to man1 directory, in case you use that. * make or print the manual in manual/fwebman.tex, even though it is frozen at version 1.30 * copy the files manual/fweb.info* to the GNU info directory, in case you have GNU Info installed. the *.info files can be compressed using gzip -9; GNU Info can still read them, as long as gzip is in the path. Edit the directory file to include the fweb.info files. These files will replace previousely installed info files for fweb v1.30, so if you want to keep the old ones you'd have to do some editing to the directory file and to the old fweb.info* files first. * if you want a printed, tex-ed manual of the newer docs, run tex fweb.texinfo This requires texinfo.tex from the infotex package (hobbes, ctan) in your TEXINPUT or TEXINPUTS path . In order to get the indexes right you'll have to run tex twice. On a 386dx40 with 16MB of RAM, running the latest OS/2 version of Eberhard Matthes emtex (from the December'95 HOBBES CD-ROM) the 100 pages are generated in (2 \times) 57 seconds. If you have EmTeX properly installed it will generate possibly missing fonts on the fly as you try to print the file. To get going more easily, I have included the files fweb.dvi as well as a postscript version of that file, obtained with a run of the OS/2 port of dvips, v.5.58 (as found on CTAN and hobbes), fweb.ps. The dvi/ps versions of the old manual, fwebman.tex, can be obtained with two tex runs (ignoring the errors my putting it in batch mode). * Sorry, I don't know (yet) how to make diff files and all that nice porting stuff, so I put this up as reproducable documentation of how the binaries were obtained. I hope it helps someone , if it doesn't or if it kills your dog, I am sorry, but I told you: NO WARRANTIES WHATSOEVER implied. * todo: make diffs, email to the author about the error messages edit the web file. * Nota bene: I just learned that ther is version 1.53 out now, so I'll try that tonight. But still, 1.30 and 1.40 are useful by themselves. Have fun. Stefan A. Deutscher (sad@utk.edu) 27-Feb-1996