Files
nethack/doc/makedefs.6
nhmall 65655d2cee Incorporate some git information into NetHack
Incorporate some git information into NetHack so that it
is potentially visible to a player. That's useful when
collecting details about the version that they are
running and, if the gitinfo is present, it can tie the
code to a specific git commit in the repository.

This modifies 'makedefs -v' to check for the presence of a data file
called dat/gitinfo.txt and if it is there, parse out its
contents, then write additional lines to include/date.h beyond
what 'makedefs -v' was previously putting in there, similar to
this sample:

      #define NETHACK_GIT_SHA "0c84e564c78e2024e562d39539376ce2e21eec8e"
      #define NETHACK_GIT_BRANCH "NetHack-3.6.0"

The contents of an appropriate dat/gitinfo.txt are as follows,
and trailing/leading whitespace is not significant:

      githash = 0c84e564c78e2024e562d39539376ce2e21eec8e
      gitbranch = NetHack-3.6.0

It also adjusts the contents of the 'v' version information to
include the additional git info when available.

Also adds some hooks DEVEL/hooksdir and a perl file to DEVEL
for simplifying and automating the deposit of dat/gitinfo.txt
so that it generally reflects the most current git commit.

DEVEL/gitinfo.pl can be used to build dat/gitinfo.txt at any
time without doing a commit, merge, or checkout.
    	perl DEVEL/gitinfo.pl

command line --version and -version support

To complement the extra information being provided in the
version by the 'v' command, this also adds support for the
following new command line arguments:
    --version
     -version            Output the NetHack version string then exit.

    --version:paste      Output the NetHack version string and also copy it to
     -version:paste      the platform's paste buffer for insertion somewhere,
                         then exit.

If the paste variation of -version is requested on a platform that
hasn't incorporated any support for the capability, it will deliver
the version info then an error message, prior to exiting.

To support the extended -version:paste variation, a port needs to:
    - provide a port-specific routine to perform
      the paste buffer copy in a port code file.
    - #define RUNTIME_PASTEBUF_SUPPORT in the include/portconf.h header file.

    --skeleton--
    void port_insert_pastebuf(buf)
    char *buf;
    {
    	/* insert code to copy the version info from buf into
    	   platform's paste buffer in a supported way */
    }

macosx and Windows have both added support for RUNTIME_PASTEBUF_SUPPORT
2018-02-23 19:34:44 -05:00

261 lines
4.5 KiB
Groff

.TH MAKEDEFS 6 "29 Apr 2010"
.\" NetHack 3.6 makedefs.6 $NHDT-Date: 1432512786 2015/05/25 00:13:06 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $
.UC 4
.SH NAME
makedefs \- NetHack miscellaneous build-time functions
.SH SYNOPSIS
.B makedefs
{
.B -o
|
.B -d
|
.B -e
|
.B -m
|
.B -v
|
.B -p
|
.B -q
|
.B -r
|
.B -h
|
.B -z
}
.P
.B makedefs --input
.I file
.B --output
.I file
.BI -- command
.SH DESCRIPTION
.PP
.B Makedefs
is a build-time tool used for a variety of
.BR NetHack (6)
source file creation and modification tasks. For historical reasons,
.B makedefs
takes two types of command lines. When invoked with a short option, the
files operated on are determined when
.B makedefs
is compiled. When invoked with a long option, the
.B --input
and
.B --output
options are used to specify the files for the
.BI -- command.
Each command is only available in one of the two formats.
.SH SHORT COMMANDS
Upper and lower case are both accepted for the short commands.
.TP
.B -o
Generate
.I onames.h.
.br
.TP
.B -d
Generate
.I data.base.
.br
.TP
.B -e
Generate
.I dungeon.pdf.
The input file
.I dungeon.def
is passed through the
same logic as that used by the
.B --grep
command; see the
.B MDGREP FUNCTIONS
section below for details.
.br
.TP
.B -m
Generate
.I monster.c.
.br
.TP
.B -v
Generate
.I date.h
and
.I options
file. It will read
.I dat/gitinfo.txt
,only if it is present, to obtain
.B githash=
and
.B gitbranch=
info and include related preprocessor #defines in
.I date.h
file.
.br
.TP
.B -p
Generate
.I pm.h
.br
.TP
.B -q
Generate
.IR quest.dat .
.br
.TP
.B -r
Generate the
.I rumors
file.
.br
.TP
.B -s
Generate the
.I bogusmon
,
.I engrave
and
.IR epitaph files.
.br
.TP
.B -h
Generate the
.B oracles
file.
.br
.TP
.B -z
Generate
.I vis_tab.c
and
.IR vis_tab.h .
.SH LONG COMMANDS
.TP
.BI --debug
Show debugging output.
.br
.TP
.B --make \fR[\fIcommand\fR]
Execute a short command. Command is given without preceding dash.
.br
.TP
.BI --input " file"
Specify the input
.I file
for the command (if needed). If the file is - standard
input is read.
.br
.TP
.BI --output " file"
Specify the output
.I file
for the command (if needed). If the file is - standard
output is written.
.br
.TP
.B --svs \fR[\fIdelimiter\fR]
Generate a version string to standard output without a trailing newline.
If specified, the delimiter is used between each part of the version string.
.br
.TP
.B --grep
Filter the input
.I file to the output
.IR file .
See the
.B MDGREP FUNCTIONS
section below for information on controlling the filtering operation.
.br
.TP
.B --grep-showvars
Show the name and value for each variable known to the grep option.
.br
.TP
.B --grep-trace
Turn on debug tracing for the grep function (
.B --grep
must be specified as well).
.br
.TP
.BI --grep-define " symbol"
Force the value of
.I symbol
to be "defined."
.I Symbol
must already be known to
.BR makedefs .
.br
.TP
.BI --grep-undef " symbol"
Force the definition of
.I symbol
to be "undefined."
.I Symbol
must already be known to
.BR makedefs .
.SH MDGREP FUNCTIONS
The
.B --grep
command (and certain other commands) filter their input, on a line-by-line
basis, according to control lines embedded in the input and on information
gleaned from the
.BR NetHack (6)
configuration. This allows certain changes such as embedding platform-specific
documentation into the master documentation files.
.P
Rules:
.RS
.IP - 4
The default conditional state is printing enabled.
.IP - 4
Any line
.I NOT
starting with a caret (^) is either suppressed or passed through unchanged
depending on the current conditional state.
.IP - 4
Any line starting with a caret is a control line; as in C, zero or more spaces
may be embedded in the line almost anywhere (except immediately after the
caret); however the caret must be in column 1.
.IP - 4
Conditionals may be nested.
.IP - 4
.I Makedefs
will exit with an error code if any errors are detected; processing will
continue (if it can) to allow as many errors as possible to be detected.
.IP - 4
Unknown identifiers are treated as both TRUE and as an error. Note that
.BR --undef " or " #undef
in the
.BR NetHack (6)
configuration are different from unknown.
.RE
.P
Control lines:
.RS
.IP ^^ 4
a line starting with a (single) literal caret
.IP ^#
a comment
.IP ^?\fIID
if the
.I ID
is defined set the conditional state to TRUE
.IP ^!\fIID
if the
.I ID
is not defined set the conditional state to TRUE
.IP ^:
else; invert the conditional state
.IP ^.
end the most recent conditional
.RE
.\".SH EXAMPLES
.SH AUTHOR
The NetHack Development Team
.SH "SEE ALSO"
.PP
.BR dgn_comp (6)