head	1.17;
access;
symbols
	groff-1_20_1_real:1.17
	groff-1_20_1:1.17
	groff-1_20:1.17
	groff-1_19_2:1.13
	FDL:1.12
	groff-1_19_1:1.11
	groff-1_19:1.9
	groff-1_18_1:1.7
	groff-1_18:1.6
	groff-1_17_2:1.5
	groff-1_17_1:1.5
	groff-1_17a:1.5
	groff-1_17:1.5
	groff-1_16_1b:1.4
	groff-1_16_1a:1.4
	groff-1_16_1:1.4
	groff-1_16:1.3
	groff-20000311:1.2
	groff-20000310-1:1.2
	groff-20000310:1.2
	pre-1_16:1.1.1.1
	start:1.1.1.1
	wlemb:1.1.1;
locks; strict;
comment	@# @;


1.17
date	2009.01.05.20.10.29;	author wl;	state Exp;
branches;
next	1.16;
commitid	LOYcfESGVCXMFixt;

1.16
date	2007.07.11.21.10.14;	author wl;	state Exp;
branches;
next	1.15;
commitid	JisZprsXRFWUuops;

1.15
date	2006.11.09.06.46.36;	author wl;	state Exp;
branches;
next	1.14;

1.14
date	2006.01.21.14.14.09;	author wl;	state Exp;
branches;
next	1.13;

1.13
date	2004.12.16.13.09.54;	author wl;	state Exp;
branches;
next	1.12;

1.12
date	2004.06.03.06.24.23;	author wlemb;	state Exp;
branches;
next	1.11;

1.11
date	2004.05.04.05.51.55;	author wlemb;	state Exp;
branches;
next	1.10;

1.10
date	2003.12.08.10.11.51;	author wlemb;	state Exp;
branches;
next	1.9;

1.9
date	2003.04.15.15.13.08;	author wlemb;	state Exp;
branches;
next	1.8;

1.8
date	2002.11.17.16.30.43;	author wlemb;	state Exp;
branches;
next	1.7;

1.7
date	2002.08.23.14.34.31;	author wlemb;	state Exp;
branches;
next	1.6;

1.6
date	2002.05.26.09.32.24;	author wlemb;	state Exp;
branches;
next	1.5;

1.5
date	2000.09.22.16.09.22;	author wlemb;	state Exp;
branches;
next	1.4;

1.4
date	2000.06.18.10.13.50;	author wlemb;	state Exp;
branches;
next	1.3;

1.3
date	2000.05.22.06.21.49;	author wlemb;	state Exp;
branches;
next	1.2;

1.2
date	2000.02.21.15.07.31;	author wlemb;	state Exp;
branches;
next	1.1;

1.1
date	2000.02.06.09.34.27;	author wlemb;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2000.02.06.09.34.27;	author wlemb;	state Exp;
branches;
next	;


desc
@@


1.17
log
@Update copyright year.
@
text
@    Copyright 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2009
      Free Software Foundation, Inc.

    Copying and distribution of this file, with or without modification,
    are permitted in any medium without royalty provided the copyright
    notice and this notice are preserved.

This file contains information that supplements the generic
installation instructions in file `INSTALL.gen'.


Normal Installation
===================

The simplest way to compile groff is:

  1. `cd' to the directory containing groff's source code and type
     `./configure' to configure groff for your system.  If you are
     using `csh' on an old version of System V, you might need to type
     `sh ./configure' instead to prevent `csh' from trying to execute
     `configure' itself.

     Running `configure' takes awhile.  While running, it prints some
     messages telling which features it is checking for.

  2. Type `make' to compile groff.

  3. Type `sudo make install' to install the groff programs and any
     data files and documentation.  `make install' is the only step for
     which you need `root' access; this is done by `sudo'.

  4. You can remove the groff binaries and object files from the
     source code directory by typing `make clean'.  To also remove the
     files that `configure' created (so you can compile groff for
     a different kind of computer), type `make distclean'.


External Installation
=====================

It is also possible to perform the whole installation process outside
of the source code directory.  In this case a whole external build
directory structure is created without changing any parts of the source
code tree.  This is useful if the source code is read-only or if
several different installations, such as for multiple architectures,
should be constructed.

As an example we assume that the source code of the `groff' code is in
`/usr/local/src/groff', and that the build process should be done
within the directory `/home/my/groff.compile'.

  0. Create `/home/my/groff.compile' and change to that directory.

  1. Call `/usr/local/src/groff/configure' in that directory to
     configure groff for your system.  If you are using `csh' on an old
     version of System V, you might need to type `sh
     /usr/local/src/groff/configure' instead.

  2. Type `make' to compile groff in that directory.

  3. Type `sudo make install' to install the groff programs and any
     data files and documentation.

  4. You can remove the groff binaries and object files from the
     build directory by typing `make clean'.  To also remove the
     files that `configure' created (so you can compile the package for
     a different kind of computer), type `make distclean'.


Special Platforms
=================

For instructions how to build groff with DJGPP tools for MS-DOS and
MS-Windows, see the file arch/djgpp/README.

For instructions how to build groff with the MinGW tools for
MS-Windows, see the file README.MinGW.


Miscellaneous
=============

groff is written in C++, so you need a C++ compiler.  The C++ source
files use a suffix of `.cpp', so your C++ compiler must be able to
handle this.  If you don't already have a C++ compiler, we suggest gcc
2.7.1 or later (gcc version 2 includes GNU C++ as well as GNU C).  From
gcc 2.5, it is no longer necessary to install libg++: the C++ header
files needed by groff are created by the gcc installation process.  To
override configure's choice of C++ compiler, you can set the CXX
environment variable.

If you have a library that provides a faster malloc than your system's
usual malloc, it is good idea to include it in LIBS.  For example,
using the malloc that comes with GNU Emacs version 20 can give a
worthwhile (and sometimes spectacular) performance improvement.

If you want A4 or letter paper format and the configure script produces
an incorrect guess, say

  PAGE=xxx ./configure

where `xxx' should be either `A4' or `letter'.  Note that this only
affects the paper selection of some device drivers like grops (which
can be still overridden on the command line).  For compatibility with
ditroff, the default page length in gtroff is always 11 inches.  The
page length can be changed with the `pl' request.

When you have built groff but not installed yet, you can use the
test-groff script to try groff out on one of the man pages.  (Use the
.n files not the .man files.)  The test-groff script sets up environment
variables to allow groff to run without being installed.  For example,
you could do

  ./test-groff -man -Tascii src/roff/groff/groff.n | less

to display the groff(1) man page with the `less' pager.

To get a DVI, PDF, or HTML version of the groff texinfo manual, say
`make groff.dvi', `make groff.pdf', or `make groff.html', respectively,
in the `doc' subdirectory (after configuring the groff package).  Note
that you need texinfo version 4.8 as a prerequisite.

If you have problems, read the PROBLEMS file.  If this doesn't help
send a bug report using the form in the file BUG-REPORT.
@


1.16
log
@

Add copyrights and/or normalize them.
@
text
@d1 1
a1 1
    Copyright 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2006
@


1.15
log
@

* INSTALL: Move information about external installation from
INSTALL.gen into this file.
Updated.

* INSTALL.gen: Update to new version (from texinfo CVS).
@
text
@d1 7
@


1.14
log
@

Don't use future tense.
@
text
@d1 2
a2 1
To install groff, follow the instructions in the file INSTALL.gen.
a3 1
This file contains information that supplements those instructions.
d5 2
a6 2
(For instructions how to build groff with DJGPP tools for MS-DOS and
MS-Windows, see the file arch/djgpp/README.)
d8 76
a83 11
(For instructions how to build groff with the MinGW tools for
MS-Windows, see the file README.MinGW.)

groff is written in C++, so you need a C++ compiler.  The C++
source files use a suffix of `.cpp', so your C++ compiler must be able
to handle this.  If you don't already have a C++ compiler, I suggest
gcc 2.7.1 or later (gcc version 2 includes GNU C++ as well as GNU C).
From gcc 2.5, it is no longer necessary to install libg++: the C++
header files needed by groff are created by the gcc installation
process.  To override configure's choice of C++ compiler, you can set
the CXX environment variable.
d96 2
a97 2
affects the paper selection of some device drivers like grops (which can
be still overridden on the command line).  For compatibility with
d101 5
a105 4
When you have built groff, you can use the test-groff script to try
groff out on one of the man pages.  (Use the .n files not the .man
files.)  The test-groff script sets up environment variables to allow
groff to run without being installed.  For example, you could do
d109 6
a114 5
To get a DVI, PDF, or HTML version of the groff texinfo manual, say `make
groff.dvi', `make groff.pdf', or `make groff.html', respectively, in the
`doc' subdirectory (after configuring the groff package).  Note that you
need texinfo version 4.6 as a prerequisite.  Neither older versions nor
texinfo 4.7 (due to a bug) work.
@


1.13
log
@

Make `test-groff' work again -- previously, wrong paths have been
used.  Additionally, it can now be called from anywhere.

* test-groff.in: Don't test for groff binary.  This is no longer
necessary since the proper paths are determined by `configure'.
(EXEEXT): Removed.  No longer used.
(srcdir, builddir): Use values provided by the configure script.
(XENVIRONMENT): Updated.

* INSTALL: Updated.


Make .tag and .taga work for all devices (but only grohtml actually
handles them).

* src/devices/grohtml/post-html.cpp: s/html-tag/devtag/.
(text_glob::is_br, page::add_tag, html_printer::troff_tag,
html_printer::handle_assertion): Don't use hard-coded string
lengths.
(html_printer::lookahead_for_table): Reset `tbl' properly if
necessary.
(html_printer::devtag): New function, handling `devtag'.
(html_printer::special): Don't handle `html-tag'.

* src/include/printer.h, src/libs/libdriver/printer.cpp
(printer::devtag): New virtual function.

* src/libs/libdriver/input.cpp (parse_x_command) <'X'>: Handle
`devtag'.

* src/roff/troff/env.cpp, src/roff/troff/mtsm.cpp,
src/roff/troff/node.cpp: s/html-tag/devtag/.

* src/roff/troff/input.cpp (tag, taga): Always call
curenv->add_node.

* tmac/an-old.tmac, tmac/s.tmac, tmac/troffrc-end: Use DEVTAG*
macros instead of HTML-TAG*.

* tmac/devtag.tmac: New file, defining the DEVTAG-* macros.

* tmac/www.tmac: Load devtag.tmac.
Replace HTML-TAG* macros with DEVTAG* macros.
(HTML, HTML-NS): Changed definitions.
(URL): Use HTML-NS.
(HTML-TAG, HTML-TAG-NS, HTML-TAG-NEXT): Removed.

* tmac/Makefile.sub (NORMALFILES): Add devtag.tmac.
@
text
@d11 1
a11 1
groff is written in C++, so you will need a C++ compiler.  The C++
d30 2
a31 2
where `xxx' should be either `A4' or `letter'.  Note that this will only
affect the paper selection of some device drivers like grops (which can
d47 1
a47 1
texinfo 4.7 (due to a bug) will work.
@


1.12
log
@

* aclocal.m4 (GROFF_X11): s/have_no_x/groff_no_x/.
Add X11 stuff to CFLAGS, LDFLAGS, and LIBS temporarily.
Add test for Xmu library.
(GROFF_APPRESDIR_OPTION, GROFF_APPRESDIR_CHECK,
GROFF_APPRESDIR_DEFAULT): New macros.

* configure.ac: Call GROFF_APPRESDIR_OPTION, GROFF_APPRESDIR_CHECK,
and GROFF_APPRESDIR_DEFAULT.

* configure: Regenerated.

* Makefile.in (appresdir): New variable.
(MDEFINES): Add appresdir.

* src/devices/xditview/Makefile.sub (EXTRA_LDFLAGS): Add -Xmu and
-Xt.
(install_data, uninstall_sub): New targets to handle GXditview.ad.

* src/utils/indxbib/Makefiles.ub (install_data): Depend on
`$(srcdir)/eign', not `eign'.

* MANIFEST, INSTALL, NEWS, PROBLEMS: Updated.

* man/groff_out.man, man/roff.man, src/devices/grops/grops.man,
src/devices/xditview/gxditview.man, src/roff/groff/groff.man:
Protect (g)xditview with `\%' to avoid hyphenation.
Other minor formatting.
@
text
@d39 1
a39 2
groff to run without being installed.  The current directory must be
the build directory when the script is run.  For example, you could do
@


1.11
log
@

Mention that texinfo 4.7 doesn't work.
@
text
@a43 4
If you want to compile and install gxditview (an X11 previewer),
follow the instructions in the INSTALL file in the src/xditview
subdirectory.

@


1.10
log
@

* LICENSE: Updated.

* INSTALL: Improved.
@
text
@d51 2
a52 1
need texinfo version 4.6 or newer as a prerequisite.
@


1.9
log
@Renamed all `*.cc' files to `*.cpp'.
Updated all configuration files, makefiles, and documentation.
@
text
@d8 3
d31 4
a34 3
affect the paper selection for grops.  For compatibility with ditroff,
the default page length in gtroff is always 11 inches.  The page length
can be changed with the `pl' request.
d50 2
a51 2
`doc' subdirectory (after compiling the groff package).  Note that you
need texinfo version 4.3 or newer as a prerequisite.
@


1.8
log
@*** empty log message ***
@
text
@d9 1
a9 1
source files use a suffix of `.cc', so your C++ compiler must be able
@


1.7
log
@
* INSTALL: Mention texinfo 4.2 as a prerequisite.
@
text
@d47 1
a47 1
need texinfo version 4.2 or newer as a prerequisite.
@


1.6
log
@
Including the doc subdir into groff's Makefile system.

* aclocal.m4 (GROFF_INSTALL_INFO): New function.
* configure.ac: Use it.
Generate `doc/Makefile'.
* configure: Regenerated.

* Makefile.in (infodir, INSTALL_INFO): New variables.
(MDEFINES, uninstall_dirs): Updated.
(OTHERDIRS): Add `doc'.
* Makefile.comm (CLEANDIRADD): New variable.
(mostlyclean): Use it.

* doc/Makefile.sub, doc/Makefile.in: New files.
* doc/Makefile: Removed.

* NEWS, INSTALL: Updated.

* doc/homepage.ms: Renamed to ...
* doc/webpage.ms: This.
Use `.NHR'.
* contrib/mom/Makefile.sub (momdocdir): Removed.
(HTMLDOCFILES): Prepend `momdoc/'.
(EXTRAEXAMPLEFILES): Removed.  Added entries to...
(EXAMPLEFILES): This.
(.SUFFIXES, .mom.ps): New.
(prepare_make_examples): Updated.
(examples/*.ps): Removed; .mom.ps will handle this.
(install_data): Updated.
@
text
@d46 2
a47 1
`doc' subdirectory (after compiling the groff package).
@


1.5
log
@* INSTALL: Add info about selecting paper format.
@
text
@d44 3
a46 3
To get PostScript versions of the documentation resp. reference files
for the `me' macros and the `pic' preprocessor, simply say `make' in
the `doc' subdirectory.
@


1.4
log
@* src/utils/tfmtodit/tfmtodit.cc: #include nonposix.h.
(tfm::load, gf::load): Open tfm and gf files in binary mode: these
are binary files.
(main): Support non-Posix systems with several different styles of
slash characters in file names.

* src/utils/pfbtops/pfbtops.c: #include nonposix.h.
(main) [SET_BINARY]: Switch stdin into binary mode.

* src/utils/indxbib/indxbib.cc: #include nonposix.h.
(main): Support file names with several possible slash-type
characters, as given by DIR_SEPS[] in nonposix.h.
(main) [__MSDOS__]: If renaming the temporary index file fails
because it has more than one dot in its trunk, replace the dot
with an underscore and try again.
(do_file): Use FOPEN_RB instead of "r".  Skip every CR before a
Newline.
[__MSDOS__ || _MSC_VER]: Stop at the first ^Z character.

* src/utils/hpftodit/hpftodit.cc: #include nonposix.h.
(File::File): Open the input file in binary mode.  Strip CR
characters from each CR-LF pair.
(xbasename): Support file names with several possible slash-type
characters, as given by DIR_SEPS[] in nonposix.h.

* src/include/Makefile.sub (HDRS): Add nonposix.h.

* src/roff/troff/node.cc [HAVE_UNISTD_H]: Include <unistd.h>.
(WIFEXITED, WEXITSTATUS, WTERMSIG, WIFSTOPPED, WSTOPSIG)
[!_POSIX_VERSION]: Define for traditional Unix systems.
(real_output_file::real_output_file): Remove the MSVC-specific
call to popen, use instead POPEN_WT, appropriately defined on
nonposix.h.  #include nonposix.h.
(real_output_file::~real_output_file): Remove the MSVC-specific
call to pclose, a suitable macro is now defined on nonposix.h.
Use the portable macros WIFEXITED, WIFSIGNALED, WTERMSIG, WSTOPSIG
and WEXITSTATUS instead of assuming traditional Unix
interpretation of the status returned by pclose.

* src/roff/troff/input.cc (pipe_source): Remove the MSVC-specific
call to popen, use POPEN_RT instead (appropriately defined on
nonposix.h).  #include nonposix.h.
(ps_bbox_request): Open the PostScript file in binary mode.
Close the file after processing it.
(getpid) [_MSC_VER]: Remove; a suitable macro is now defined on
nonposix.h.

* src/roff/groff/pipeline.c (run_pipeline) [__MSDOS__ || _WIN32]:
A version of run_pipeline that doesn't use `fork'.
(signal_catcher) [__MSDOS__ || _WIN32]: New function.
(system_shell_name, system_shell_dash_c)
(is_system_shell) [__MSDOS__ || _WIN32]: New functions, to hide
the ugliness of testing DOS/Windows file names for equality, and
support both stock shells and ports of Unix shells.

* src/roff/groff/groff.cc: #include nonposix.h.
(BSHELL): Definition moved to nonposix.h.
(main): Use PATH_SEP[0] instead of literal ':'.  Use BSHELL_DASH_C
instead of a literal "-c".
(xbasename): Support file names with several possible slash-type
characters, as given by DIR_SEPS[] in nonposix.h.
(possible_command::print): Use BSHELL_DASH_C and IS_BSHELL instead
of literal strings.

* src/preproc/soelim/soelim.cc: #include nonposix.h.
(do_file): Use IS_ABSOLUTE instead of testing for a literal '/'.

* src/preproc/pic/Makefile.sub (YTABH): Change pic.tab.h to
pic_tab.h.

* src/preproc/pic/lex.cc: Change pic.tab.h to pic_tab.h.

* src/preproc/eqn/Makefile.sub (YTABH): Rename eqn.tab.h to
eqn_tab.h.

* src/preproc/eqn/lex.cc: #include eqn_tab.h, not eqn.tab.h.

* src/libs/libgroff/tmpfile.cc (DEFAULT_TMPDIR) [P_tmpdir]: If
P_tmpdir is defined, use it instead of the literal "/tmp".
(remove_tmp_files, add_tmp_file): New functions.
(xtmpfile): Record temporary files and register an atexit function
to delete them explicitly, instead of relying on the OS to do
that, which doesn't work on non-Unix systems.

* src/libs/libgroff/searchpath.cc: #include nonposix.h.
(search_path::search_path): Use PATH_SEP instead of a literal
colon.
(search_path::command_line_dir): Ditto.
(search_path::open_file): Use IS_ABSOLUTE, PATH_SEP and DIR_SEPS,
to support non-Posix systems.

* src/libc/libbib/search.cc: #include nonposix.h.
(search_list::add_file): Open the file in binary mode.

* src/libs/libbib/linear.cc: #include nonposix.h.
(file_buffer::load): Remove r characters preceding n from the
loaded buffer.

* src/libs/libbib/index.cc: #include nonposix.h.
(make_index_search_item): Open index_filename in O_BINARY mode.
(index_search_item_iterator::get_tag): Ditto.  Remove r
characters before n characters.
(index_search_item::check_files): Open files in binary mode.
(index_search_item::munge_filename): Support DOS-style file names
with backslashes and drive letters, use IS_ABSOLUTE.

* src/devices/grops/ps.cc: #include nonposix.h.
(main) [SET_BINARY]: Switch stdout to binary mode.

* src/devices/grolj4/lj4.cc: #include nonposix.h.
(main) [SET_BINARY]: Switch stdout to binary mode.

* src/devices/grolbp/lbp.cc: #include nonposix.h
(fill_pattern) [SET_BINARY]: Switch stdout to binary mode.

* src/devices/grodvi/dvi.cc: #include nonposix.h.
[_MSC_VER]: Remove inclusion of Windows-specific headers (done by
nonposix.h).
(main) [SET_BINARY]: Switch stdout to binary mode.
[_MSC_VER]: Remove an explicit call to _setmode.

* src/include/nonposix.h: New file.

* Makefile.in (ENVSETUP): New variable, to set up case-sensitive
operation when building with DJGPP.
($(TARGETS), dot, $(LIBDIRS), $(CPROGDIRS), $(CCPROGDIRS))
($(DEVDIRS), $(TTYDEVDIRS), $(INCDIRS), $(OTHERDIRS)): Use
ENVSETUP.

* Makefile.comm: mv y.tab.[ch] to y_tab.[ch], to make it work on
MS-DOS.
(.man.n): Replace `;' with `|', since FONTPATH, MACROPATH,
etc. can include a semi-colon on DOS/Windows.
(depend.temp): Use depend1.temp instead of depend.temp1, to
prevent files from overerwiting each other on 8+3 filesystems.

* gendef.sh (t): Change definition to work with DOS/Windows.

doc/groff.texinfo: Apart of some typo corrections, I also changed
some index entris, to make them more non-ambiguous, and also put
@@ignore around some parts that are not yet written, to allow the
Info output be readable.
@
text
@d22 10
@


1.3
log
@* tmac/tmac.an: Added a new command line option `-rSxx' (`xx' can be
10, 11, or 12) to support output with 11pt and 12pt base font sizes.
`.SS' now produces a heading with a smaller size than `.SH'.
Completely formatted.
* doc/groff.texinfo, tmac/groff_man.man, NEWS: Document it.

* man/groff.man: Improved table appearance.  Use of `eo' request
to reduce number of doubled backslashes in macro definitions.
Replacing `e' with `(rs'.  Other minor fixes.

* src/preproc/tbl/main.cc: Insert HTML table end tag before `lf'
to have correct line number.

* INSTALL: Small improvement.


* man/roff.man, tmac/groff_tmac.man: Updates (with corrections by
WL).
@
text
@d5 3
@


1.2
log
@* README, INSTALL, PROJECT, PROBLEMS, BUGREPORT: Updated.

* test-groff: Added grn subdir to path.

* doc/groff.texinfo: Some restructing and other small improvements.



* Makefile.in: Added subdirectory entry for grn.
@
text
@d27 3
a29 2
If you want to install gxditview (an X11 previewer), follow the
instructions in the INSTALL file in the xditview directory.
@


1.1
log
@Initial revision
@
text
@d25 1
a25 1
  ./test-groff -man -Tascii groff/groff.n | less
d30 3
a32 3
To get PostScript versions of the documentation resp. reference files for
the `me' macros and the `pic' preprocessor, simply say `make' in the
`doc' subdirectory.
@


1.1.1.1
log
@groff pre-1.16 with new directory structure
@
text
@@
