* src/preproc/html/pre-html.cpp (write_upto_newline): Don't use
[s-roff.git] / arch / djgpp / README
blob49b798e1c219e04bde0ceb23dd45284f5c2891cc
1 This is a port of GNU Groff to DJGPP v2.03 or later.
2 Groff is the GNU version of document formatting tools related to
3 `troff'.
5 This README file describes how to build and install Groff on MS-DOS or
6 MS-Windows systems using the DJGPP port of GNU C/C++ compiler and
7 development tools.
10 I.  Installing the pre-compiled binary package
11     ------------------------------------------
13     1. Unzip the file groNNNb.zip (where NNN is the version number)
14        preserving the directory structure (-d switch to PKUNZIP) from
15        the main DJGPP installation directory.  If you will use Groff
16        on Windows 9X or Windows2000, use an unzip program which
17        supports long filenames.
19     2. Groff binaries were configured so that they will look for their
20        standard directories under the directory pointed to by the
21        DJDIR environment variable, so it should work automatically if
22        you have DJGPP installed.  If you don't have a standard DJGPP
23        installation, set the variable DJDIR to point to the directory
24        where you unzip Groff.  In this latter case, you will need to
25        set additional environment variables:
27         GROFF_TMAC_PATH=%DJDIR%/share/groff/<version>/tmac:%DJDIR%/share/groff/site-tmac
28         GROFF_TYPESETTER=ascii
29         GROFF_FONT_PATH=%DJDIR%/share/groff/<version>/font
31        <version> is something like `1.16.1' or `1.17'.
33        In addition, you can set the variable GROFF_TMPDIR to point to
34        a directory where you want Groff to create temporary files it
35        needs for running its jobs (these files are automatically
36        deleted when Groff exits).
38        All of those variables are automatically set in the file
39        DJGPP.ENV that is part of the standard DJGPP distribution
40        djdevNNN.zip (where NNN is the DJGPP version number), so you
41        only need to set them manually if you don't have DJGPP
42        installed.
44        Note that the GROFF_TYPESETTER variable sets the default Groff
45        device to be `ascii', which is suitable for formatting man
46        pages to be viewed on the terminal.  Use the -T switch to
47        generate output for other devices (e.g., -Tps for PostScript).
49     3. If your TMPDIR environment variable points to a RAM drive, you
50        might consider changing GROFF_TMPDIR to point to a directory on
51        a real disk drive, especially if you intend to generate
52        PostScript output, because RAM disks are typically small (2-3
53        MBytes) which might be not enough for formatting large
54        documents.
56     4. Read the docs.  It comes as formatted manual pages called *.1,
57        *.5 and *.7 which unzip into your man/ subdirectory.  You
58        can read them with a pager such as GNU Less (recommended, as
59        Less will use colors for bold and underlined text) or with
60        Info (which will remove the bold/underline attributes).
61        Another alternative is to use Emacs built-in man page reader;
62        the DJGPP FAQ lists other possibilities.
64        Beginning with version 1.15, Groff comes with an Info manual;
65        type "info -f groff" to read it.  The Info manual is still
66        under construction, so some sections are empty.
68        If you want to add a Groff entry to the main Info menu in the
69        file DIR, chdir to the `info' subdirectory of the main Groff
70        installation directory and run this command:
72          install-info --dir-file=dir groff.info
74        After you do that, "info groff" will also work.
76     5. For those who only need Groff to format man pages and don't
77        like reading the docs, here's a minimal cookbook:
79                   groff -man -s foo.1 > foo.man
81        where `foo.1' is the troff source of the man page and `foo.man'
82        is the formatted page.  If you need to view the man page, say
83        this:
85                   groff -man -s foo.1 | less
87        You can also use the DJGPP clone of the Unix `man' command, in
88        which case `man' runs the above command for you automatically.
90        Here's how you print man pages on a PostScript printer:
92                   groff -man -s -Tps foo.1 > prn
94        And this is for a LaserJet4 printer:
96                   groff -man -s -Tlj4 foo.1 > prn
98        Printing the documents produced by Groff is possible either by
99        redirecting Groff's standard output to the local printer
100        device, like shown above, or by using the `-l' switch to Groff.
101        The latter possibility causes Groff to pipe its output to a
102        program whose name and arguments appear in the files named
103        `DESC' in each of the `devFOO' subdirectories of the
104        %DJDIR%/share/groff/<version>/font directory; for example, the
105        file devps/DESC is used by "groff -Tps".  The relevant line in
106        these files begins with the word "print".
108        As configured, when invoked with the `-l' switch, Groff will
109        call `cat' (from GNU Textutils) to pipe its output to the
110        default printer device for -Tps, -Tlbp and -Tlj4 options, and
111        it will call `dvilj4' (from the dvljNNNb.zip package) for -Tdvi
112        option.  If you don't have these programs installed, you can
113        edit the respective `DESC' files to replace these commands with
114        something else.  The replacement program must be able to read
115        its standard input and send its output to whatever printer you
116        want.  The "print" entry is assumed to be a shell command, so
117        it can use redirection, pipes, and other shell features.
119        Beginning with version 1.15, Groff can create HTML output, like
120        this:
122                   groff -man -s -Thtml foo.1 > foo.html
124        Producing HTML files sometimes requires Ghostscript to be
125        installed, and, for gif images, ppmquant and ppmtogif as well.
126        If you do not have these programs installed, Groff will print
127        an error message, and the produced file will have links which
128        will fail to resolve when you view it with a Web browser.
130     6. Some programs in the package are supplied as Unix shell
131        scripts.  While it is relatively easy to write a DOS batch file
132        which will do the same, DOS doesn't allow to redirect input and
133        output of a batch file.  Since Groff tools are meant to be
134        invoked in a pipe, the batch files are not very useful.  The
135        batch files are included in the binary distribution
136        nonetheless.
138        These scripts need the following utilities to run (in addition
139        to the Groff programs they invoke):
141                  - bash
142                  - gawk
143                  - egrep
144                  - sed
146        The `afmtodit' and `mmroff' utilities are Perl scripts, so you
147        will need a Perl port to run them.
149        All of these ports should be available from the DJGPP sites.
151        If you need to run these scripts and batch files, you have to
152        install the port of bash (or another Unix-like shell) and the
153        above-mentioned utilities called by the script.  Alternatively,
154        just look inside the shell script and invoke the programs it
155        calls manually.
157        To run the scripts with redirection, invoke them via the shell,
158        like this: "sh mmroff > foo".
160     7. Note that Groff programs use floating point, so you will need
161        an FP emulator if your machine doesn't have an FPU.  The binary
162        distribution includes the emulator, in case you don't have the
163        DJGPP development environment installed.  Please refer to the
164        DJGPP FAQ list in case you have any problems with the emulator.
166     8. The package does not include the directories under
167        share/groff/<version>/font whose names begin with "devX": these
168        are needed on X-Windows for running the gxditview program, which
169        is not supported by this port.
171     9. Due to 8+3 limitations of DOS filesystems, several files were
172        renamed:
174          - groff_mdoc.samples.7 was renamed to groff-mdoc_samples.7
175            and groff_mmse.7 to groff-mmse.7.  The latter was also
176            converted from Latin-1 encoding to codepage 437.
180 II. Building Groff from sources
181     ---------------------------
183     1. To build Groff, you will need the following tools (the file
184        name in parentheses is what you need to download from one of
185        the DJGPP sites):
187           - Standard DJGPP development environment (djdev203.zip)
188           - GNU C compiler (gcc2721b.zip)
189           - GNU C++ compiler (gpp2721b.zip)
190           - GNU Make 3.79 (mak379b.zip)
191           - Bash v2.03 (bsh203b.zip)
192           - Fileutils 3.16 (fil316b.zip)
193           - Textutils 2.0 (txt20b.zip)
194           - Sh-utils 1.12 (shl112b.zip)
195           - Sed 3.02 (sed302b.zip)
196           - Gawk 3.04 (gwk304b.zip)
197           - Grep 2.4 (grep24b.zip)
198           - Bison (only if you change one of the *.y files)
200        Note that you don't need to install libg++ (lgpNNNb.zip) since
201        Groff doesn't use any C++ classes except its own.
203        Any versions of the utilities later than what's mentioned above
204        should also do; in particular, GCC 2.95.2 was tested and Groff
205        built okay with it.  Versions older than in the above list
206        might also work, but I don't guarantee that; you are on your
207        own.
209        Special considerations apply if you have GCC 2.8.1 installed,
210        and cannot upgrade to a later version.  See paragraph 4 below.
212        After you install these tools, make sure you have a ``symlink''
213        to bash.exe called sh.exe and a ``symlink'' to gawk.exe called
214        awk.exe.  If not, go to the DJGPP bin/ subdirectory and type
215        the following words of wisdom from the DOS prompt:
217                      ln -s bash.exe sh.exe
218                      ln -s gawk.exe awk.exe
220        (`ln' is part of GNU Fileutils, see above.)
222     2. Unzip the source distribution groXYZs.zip (where XYZ is the
223        version number) preserving the directory structure (-d switch
224        to PKUNZIP) from the main DJGPP installation directory.  (If
225        you are building Groff on Windows 9X or Windows 2000, use an
226        unzip program which supports long filenames.)  This creates
227        directory gnu/groff-X.YZ and unzips the sources there.
229        If you are building from the official GNU distribution, unpack
230        the .tar.gz archive like this:
232                    djtar -x groff-X.YZ.tar.gz
234        (DJTAR is part of the standard DJGPP development distribution.)
236     3. Groff sources on DJGPP sites are already configured for the
237        current version of DJGPP.  If that is the version you have,
238        then you can just chdir to gnu/groff-X.YZ and say "make" to
239        build the entire package (if you have GCC 2.8.1, see the next
240        paragraph).
242        If you have version of DJGPP other than the current one, or if
243        you build the official GNU distribution, or if you prefer to
244        configure the package so that it defaults to the directory
245        structure on your machine, or need to change some options
246        (e.g., compile with different optimization options), you will
247        have to reconfigure Groff.  To this end, use the CONFIG.BAT
248        batch file in the DJGPP subdirectory:
250                      arch\djgpp\config
252        You can configure and build Groff from outside its source
253        directory.  In that case, you need to pass the full path to the
254        source directory as an argument to CONFIG.BAT, like this:
256           d:\gnu\groff-1.16\arch\djgpp\config d:/gnu/groff-1.16
258        Note that you MUST use forward slashes in the path you pass to
259        CONFIG.BAT, or else it may fail.  (For versions of Groff other
260        than 1.16, change the above command accordingly.)
262     4. If your version of GCC is 2.8.1, you cannot build the
263        preconfigured package without some tinkering.  The DJGPP port
264        of GCC 2.8.1 had a bug in its C++ configuration, whereby the
265        file _G_config.h erroneously indicated that the header
266        <sys/socket.h> is available, and also undefined the symbol
267        NULL.  This causes several files in the Groff distribution to
268        fail to compile.
270        The easiest way to solve this is to upgrade to a later version
271        of GCC; then you can simply say "make" to build the
272        preconfigured package.  If this is not an option, you will have
273        to edit the file lang/cxx/_G_config.h and change this line:
275           #define _G_HAVE_SYS_SOCKET 1
277        to say this instead:
279           #define _G_HAVE_SYS_SOCKET 0
281        The problem with redefining NULL should not happen with DJGPP
282        v2.03 or later.  But if you still see compilation errors which
283        say "`NULL' undeclared", comment out the line in _G_config.h
284        that says this:
286           #undef NULL
288        Alternatively, you can reconfigure the package as described in
289        the previous paragraph, before building it.
291     5. After the configure script exits, say "make" to build Groff.
292        Groff is a large package, and it might take a few minutes to
293        build, depending on your CPU, so you might as well go for a
294        coffee while it grinds away.
296     6. Test the package that you have built.  A batch file T-GROFF.BAT
297        in the DJGPP subdirectory is supplied for that purpose.  Most
298        of the commands there are commented out, since I cannot
299        possibly know what kind of printer do you have and which
300        additional programs, such as Less, do you have installed.  The
301        only command that runs by default will format a large document
302        and print it to the screen.  Read the comments in the batch
303        file, uncomment additional lines as you see fit and run the
304        batch file to see that you get the document printed as you'd
305        expect.  (Btw, the document that the batch file prints is an
306        introduction to the entire Groff package, so you might as well
307        read it to make yourself familiar with the programs.)
309        Note that the batch file sets a lot of environment variables;
310        if you get ``Out of environment space'' messages, launch a
311        subsidiary COMMAND.COM with plenty of environment space, like
312        so:
314                      command.com /e:3000
316        then invoke T-GROFF.BAT from that COMMAND.COM.
318     7. Install the package by typing "make install".  This will copy
319        all the binaries, the auxiliary files (fonts, macros, etc.) and
320        the docs into their places.  If you configured the package for
321        your system, these are precisely the directories where the
322        files should remain (with the exception of the man pages, see
323        below).  If you use the default configuration, the files will
324        be installed under the top DJGPP installation directory.
326        Alternatively, you could instruct Make explicitly where to
327        install the package by setting the `prefix' variable.  For
328        example:
330                make install prefix=c:/groff
332        "make install" doesn't format the man pages, it just copies
333        them into subdirectories of the %DJDIR%\MAN directory.  If you
334        need to keep formatted pages in your man/ subdirectory, you
335        will need to format them.  Use the commands shown in chapter I,
336        section 5 above to do that, and redirect its output to the
337        appropriate catN subdirectory.  Alternatively, you could format
338        the pages when you need to view them (the DJGPP clone of `man'
339        will automatically format them).
341        Consult the installation instructions for pre-compiled binaries
342        above, for more info about installing and using Groff.
344     8. You can safely delete the directories under
345        share/groff/<version>/font whose names begin with "devX": these
346        are needed on X-Windows which is not supported by this port.