* Makefile.am: Include "contrib/install-font/install-font.am".
* contrib/install-font/install-font.bash: Import Peter Schaffter's
"install-font.sh" script from his website. Rename as shown; its
"shebang" line declares it a Bash script (albeit one that operates in
Bash's POSIX mode). Cosmetic changes to Peter's version comprise
removal of trailing whitespace, a replacement of the GPL license
notice with model language from the current version of the GPL, and
addition of a Vim modeline reflecting the code style in evidence. I
also recoded the file to plain ASCII (Unicode Basic Latin), the only
consequence of which was dropping of the U+00A9 copyright sign.
* contrib/install-font/COPYRIGHT: Add file promised by groff's
"LICENSES" file.
* contrib/install-font/install-font.am: Automake script, when driven by
a groff build, installs "install-font.bash" to the target's "examples"
directory.
Fixes <https://savannah.gnu.org/bugs/?60930>.
...in favor of gnulib's. James Clark wrote groff's in 1989; it's
changed very little since.
* Makefile.am: Drop fmod-referencing annotations.
* bootstrap.conf (gnulib_modules): Add "fmod".
* configure.ac: Drop `fmod` from `AC_REPLACE_FUNCS()` call.
* src/libs/libgroff/fmod.c: Delete.
* src/libs/libgroff/libgroff.am (EXTRA_DIST): Drop "fmod.c".
* src/preproc/pic/pic.ypp: Drop conditional declaration of `fmod()`
symbol.
Continues fixing Savannah #66518.
...in favor of gnulib's. groff's was copied from glibc in 1991 and
changed very little since.
* Makefile.am: Drop putenv-referencing annotations.
* bootstrap.conf (gnulib_modules): Add "putenv".
* configure.ac: Drop `GROFF_NEED_DECLARATION([putenv])` call. Drop
`putenv` from `AC_REPLACE_FUNCS()` call.
* src/devices/grops/ps.cpp:
* src/devices/grops/psrm.cpp:
* src/roff/groff/groff.cpp:
* src/roff/troff/input.cpp: Drop conditional declaration of `putenv()`
symbol.
* src/libs/libgroff/putenv.c: Delete.
* src/libs/libgroff/libgroff.am (EXTRA_DIST): Drop "putenv.c".
Continues fixing Savannah #66518.
* Makefile.am: Drop comments documenting `PAGE` and `GHOSTSCRIPT` as
appearing in "config.h". Neither appears there because they are
`AC_SUBST()`ed (into generated Make files), not `AC_DEFINE()`d (in
"config.h"). Further, the Ghostscript- related macro that we expand
is named `ALT_GHOSTSCRIPT_PROGS`, not `GHOSTSCRIPT`. Prompted by a
report and proposed patch by Lennart Jablonka.
* bootstrap.conf: Add "strerror" to `gnulib_modules`.
* configure.ac: Drop "sterror" from `AC_REPLACE_FUNCS`; we don't need
Autoconf's replacement if we've got gnulib's.
* Makefile.am: Drop mention of function/macro in comment.
* src/include/lib.h: Drop C preprocessor conditional logic.
* src/roff/groff/pipeline.c: Drop fallback definition. Let existing
"<config.h"> inclusion do the work, and include "<string.h>"
unconditionally.
Stop distributing pdfmark. It is now separately maintained. Please
visit <https://osdn.net/users/keith/pf/groff-pdfmark/> for the latest
version.
* contrib/pdfmark: Recursively delete.
* Makefile.am: Stop including its Automake file.
* doc/doc.am (GROFF_MAN_PAGES1): Drop pdfroff man page.
* src/utils/grog/tests/smoke-test.sh: Stop using
"contrib/pdfmark/{cover,pdfmark}.ms" as test artifacts.
* MANIFEST:
* src/roff/groff/groff.1.man: De-document.
* NEWS: Add item.
Fixes <https://savannah.gnu.org/bugs/?63827>.
Also drop somewhat misleading comments from Makefile.am. (hdtbl,
grohtml, and gropdf all use Ghostscript. Only m4/ax_compare_version.m4
uses the Autoconf-detected version of AWK. A few maintainer-mode
scripts and test scripts use AWK, but they assume it's installed as
"awk" and, looking over the scripts they feed it, none seems to exercise
anything but basic AWK features, possibly compatible all the way back to
Seventh Edition "Original AWK".)
* Makefile.am (set-man-page-time-stamps): New maintainer-mode rule sets
time stamps of man page source documents to match the Git "author
date" of their most recent commits. This is to make the date reported
in the center footer of the rendered page tell the truth.
* Use contemporary quotation style. Eschew `this'. Use single quotes
for Automake variable/macro names and command literals, and double
quotes for variable/macro contents and for file names.
* De-document some variable names. We need not be exhaustive; the
GNU Autoconf manual exists for a reason.
* Stop naming several variables twice, once with the quotation marks and
once without.
* Annotate variables that can go away as part of Savannah #63827.
* Be more frugal with vertical whitespace, except where helpful to
separate paragraphs of exposition.
* Recast language.
Fixes <https://savannah.gnu.org/bugs/?64913>. Thanks to Bjarni Ingi
Gislason for the report.
With the recent xz-utils backdoor, there's been more focus on cases
where build systems rely on files produced by "make dist" and included
in release tarballs. It's already fairly standard practice for
distributions to rebuild configure scripts using autoreconf, but less so
to rebuild the files that are produced by gnulib.
I looked into what it would take for Debian's groff package to do a full
rebootstrap from its packaged version of gnulib. It seems relatively
straightforward, but it requires including bootstrap and bootstrap.conf
in tarballs so that we know what modules to use.
I've omitted README.git to ensure that we still warn people who don't
know what they're doing that running "./bootstrap" may not be the right
place to start.
* Makefile.am (EXTRA_DIST): Add "bootstrap" and "bootstrap.conf".
* m4/groff.m4 (GROFF_CHECK_GROHTML_PROGRAMS)
(GROFF_GROHTML_PROGRAM_NOTICE, GROFF_PNMTOOLS_CAN_BE_QUIET): Rename
"make_htmldoc" to "use_grohtml" as expected by "configure.ac". Also
stop `AC_SUBST`ing it; we don't need "@use_grohtml@" in our Makefiles
since an `AM_CONDITIONAL` in configure.ac already does an equivalent
thing. Continues commit aa5787c1eb by me from 20 May.
(PROCESSEDDOCFILES): Drop "$(PROCESSEDDOCFILES_HTML)" from macro
definition; annotate why.
Also drop stale comments from Makefile.am.
* Makefile.am: Initialize (as empty) Automake variables that we don't
use but which gnulib modules expect to be defined.
(AUTOMAKE_OPTIONS, SUBDIRS, noinst_HEADERS, noinst_LTLIBRARIES)
(pkgdata_DATA, MOSTLYCLEANDIRS, AM_CFLAGS): Do it.
Thanks to Bruno Haible for the advice.
This is a prerequisite for including gnulib's "sys_wait" module.
* Makefile.am (AR): Remove hardcoded value. Let Automake use the value
from config.status.
[Fixes build problem on 64-bit AIX. Problem appears to date back to
commit 5fec19d453, 2014-08-15. --GBR]
* Makefile.am (uninstall_groffdirs): Remove "html.mono" and "html.node"
directories corresponding to HTML version of our Texinfo manual.
* doc/doc.am (uninstall-html): Uninstall HTML version of our Texinfo
manual more reliably.
[man pages]: Don't document macro package compatibility wrapper
directory if it's not used.
* Makefile.am (.man): Use sed to replace '@COMPATIBILITY_WRAPPERS@' in
man page text with value of `compatibility_wrappers` shell variable.
Document its purpose.
* src/preproc/eqn/eqn.1.man (Description):
* src/preproc/grn/grn.1.man (Options):
* src/roff/groff/groff.1.man (Installation directories):
* src/roff/troff/troff.1.man (Environment): Mention `@SYSTEMMACRODIR`
only if `@COMPATIBILITY_WRAPPERS` expands to something other than "no"
(it could be "yes" or "manual").
Thanks to Alexander Kanavin and Jeremy Puhlman for the report.
Not all non-GNU troffs are AT&T troff as they were in 1990. Heirloom
troff uses its own subdirectory ("doctools") of /usr/lib nowadays. And
neatroff is something else entirely.
It says nothing accurate that is not covered elsewhere.
* contrib/groff_filenames: Delete.
* doc/doc.am (GROFF_MAN_PAGES): Drop.
* src/roff/groff/groff.1.man: Drop cross reference to it.
* NEWS: Add item.
Fixes <https://savannah.gnu.org/bugs/index.php?61818>.
[build]: Parameterize X11-related man pages, so they don't get
spuriously generated (and not cleaned) when building with X11 support
disabled.
* Makefile.am (.man): Fix logic nit: drop unnecessary removal of target
before clobbering it with sed.
* src/devices/xditview/xditview.am (GXDITVIEW_MAN1): Add new macro,
expanding to nothing if `WITHOUT_X11` and to the target name
otherwise.
(man1_MANS): Append `GXDITVIEW_MAN1` expansion, not a literal.
* src/devices/xditview/xditview.am (XTOTROFF_MAN1): Add new macro,
expanding to nothing if `WITHOUT_X11` and to the target name
otherwise.
(man1_MANS): Append `XTOTROFF_MAN1` expansion, not a literal.
* doc/doc.am (GROFF_MAN_PAGES1): Append foregoing expansions instead of
literals.
[build]: Rename shell variables and Autoconf/Automake macros of Boolean
sense to have names more like logical predicates and avoid doofy "DONT"
nomenclature.
* m4/groff.m4 (GROFF_MAKE_RM): Rename shell variable
`groff_is_rm_defined` to `groff_make_defines_rm` (purely for clarity;
it already had a good name).
(GROFF_MAKE_RM): Rename this...
(GROFF_MAKE_DEFINES_RM): to this, to make parallelism obvious, and
enabling...
* configure.ac: ...rename of `MAKE_DONT_HAVE_RM` to `MAKE_DEFINES_RM`
with sense of test reversed. Also interpolate `GROFF_MAKE_DEFINES_RM`
instead of `GROFF_MAKE_RM`. This in turn enables...
* Makefile.am: ...revision of conditional from `MAKE_DONT_HAVE_RM` to
"!`MAKE_DEFINES_RM`".
Fix insensitivity of groff(1) man page to configured spooler.
* Makefile.am (.man): Replace `@PSPRINT@` in man page sources with name
of configured print spooler command.
* src/roff/groff/groff.1.man (Options) <-l>: Use configured print
spooler command instead of literal 'lpr'.
Per the GNU Automake manual, "If configure built it, then distclean
should delete it." This is taken care of automatically if we don't
interfere.
* Makefile.am (BUILT_SOURCES, MOSTLYCLEANFILES): Drop "test-groff".
This option was harmful, ill-designed, buggy, and essentially
unmaintained and untested. For more details on the rationale,
see the NEWS file.
OK gbranden@ and no objection when shown on groff at gnu dot org.
* Makefile.am: Rename `TFLAG` macro, which means "tmac flag", to
`MFLAG`, because it expands to `-M` options to groff, not the `-T`
option, which can be bewildering.
* doc/doc.am (DOC_GROFF): Update expansion site.
* contrib/hdtbl/hdtbl.am: Eliminate `HDTBL_TFLAG` and `HDTBL_PFLAG` Make
macros; they were expanded in only one place.
(HDTBLGROFF): Track rename of Make macro `TFLAG` to `MFLAG`.
* contrib/mom/mom.am: Eliminate `MOM_TFLAG` and `MOM_PFLAG` Make macros;
they were expanded in only one place.
(MOMPDFMOM): Track rename of Make macro `TFLAG` to `MFLAG`.
* contrib/pdfmark/pdfmark.am: Eliminate `PDFMARK_TFLAG` and
`PDFMARK_PFLAG` Make macros; they were expanded in only one place.
(PDFROFF): Track rename of Make macro `TFLAG` to `MFLAG`.
* Makefile.am (.man): Prefix hyphenation control escape sequences to
more configuration-time interpolations to prevent their hyphenation:
@DEVICE@, @g@, @INDEX_SUFFIX@, @PAGE@, @TMAC_{AN,M,S}_PREFIX@,
@TMAC_MDIR@.
Drop `BUILD_INFODOC` symbol. Ship manual in GNU Info, text, and HTML
forms in distribution archive.
* Makefile.am (MAINTAINERCLEANFILES): Initialize.
(MOSTLYCLEANADD): Drop unused variable.
* configure.ac: Drop `AM_CONDITIONAL([BUILD_INFODOC]...`.
* doc/doc.am (EXTRA_DIST): Rearrange shipment of our Texinfo manual
source files to precede all of the generated forms, for clarity. Drop
all `BUILD_INFODOC` conditionals. Make `build_infodoc` phony target
depend on plain text, GNU Info, and HTML forms of Texinfo manual
unconditionally. Also drop unused variables `groffinfodir`,
`groffpdfdir`, and `texi2dvi_missing`.
(EXTRA_DIST, MAINTAINERCLEANFILES): Add Info form of manual. Drop
glob pattern attempting to match the segments that `makeinfo` breaks
it into. It isn't necessary for MAINTAINERCLEANFILES.
(EXTRA_DIST, MAINTAINERCLEANFILES): Add text form of manual.
(EXTRA_DIST, MAINTAINERCLEANFILES): Add HTML form of manual.
(dist-hook): Depend on new (phony) target `dist-info-bits`.
(dist-info-bits): Look for the info document in the build directory,
then the source directory. (It could be in either place depending on
whether the build from a Git working tree is being done in or out of a
separate build directory.) When found, copy the segments to the
assembly area for the distribution archive.
(install_infodoc): Refactor. Remove any groff info files from the
destination info directory using a shell glob directly instead of a
partly redundant ls(1) command substitution. Similarly, use a shell
glob to cp(1) the info files (including any matched segments) to the
destination info directory before running `install-info`. (In this
process I learned that `install-info` doesn't "install" anything;
instead, it (de-)registers info files with their top-level catalog.)
Tested by building:
1. from Git working tree with separate build directory;
2. from distribution archive w/ separate build directory (`distcheck`);
3. from distribution archive directly;
4. from Git working tree directly.
* src/devices/gropdf/gropdf.pl: New \X'pdf background' command.
* tmac/pdf.tmac: Covenience command .pdfbackground added.
* contrib/sboxes/: Files which demonstrate use of background
boxes using -ms macros.
* Makefile.am: Mark `$(TEST_SUITE_LOG)` as `.PRECIOUS`. This prevents
the test suite log from being deleted if there are any failures.
Fixes <https://savannah.gnu.org/bugs/?61213>. Thanks to Bjarni Ingi
Gislason for the report, thus saving me from a certain TIA if I had come
across it myself unexpectedly.
* Makefile.am: Add `.DELETE_ON_ERROR` special target; both GNU and
FreeBSD make(1)s support it so maybe it will be portable enough. This
avoids, among other problems, a target appearing falsely up-to-date
(often as an empty file) when the troff process generating it
experiences an assertion failure.
This means a C preprocessor that does not support the ANSI C89/ISO C90
token concatenation operator "##".
* src/include/itable.h:
* src/include/ptable.h: Do it.
* Makefile.am: Undocument preprocessor symbol.
* src/include/lib.h [ARRAY_DELETE_NEEDS_SIZE]: Drop preprocessor
conditional branch. This abandons support for certain pre-ISO C++98
compilers. (According to a now-removed comment, unsized array
deletion was documented in "ARM", meaning _The C++ Annotated Reference
Manual_, published in 1989.)
* Makefile.am: Undocument preprocessor symbol.