MAKEDEFS(6) Games Manual MAKEDEFS(6)

# [NAME](#NAME)

makedefs - NetHack miscellaneous build-time functions

# [SYNOPSIS](#SYNOPSIS)

**makedefs** { **-o** | **-d** | **-e** | **-m** | **-v** | **-p** | **-q** | **-r** | **-h** }

**makedefs --input** *file* **--output** *file* **--command**

# [DESCRIPTION](#DESCRIPTION)

**Makedefs** is a build-time tool used for a variety of [**NetHack**(6)](/man/os/nethack/NetHack.6) source file creation and modification tasks. For historical reasons, **makedefs** takes two types of command lines. When invoked with a short option, the files operated on are determined when **makedefs** is compiled. When invoked with a long option, the **--input** and **--output** options are used to specify the files for the **--command.** Each command is only available in one of the two formats.

# [SHORT COMMANDS](#SHORT_COMMANDS)

Upper and lower case are both accepted for the short commands.

[**-o**](#o)

Generate *onames.h.*

[**-d**](#d)

Generate *data.base.*

[**-e**](#e)

Generate *dungeon.pdf.* The input file *dungeon.def* is passed through the same logic as that used by the **--grep** command; see the **MDGREP FUNCTIONS** section below for details.

[**-m**](#m)

Generate *date.h* and *options* file. It will read *dat/gitinfo.txt*, only if it is present, to obtain **githash=** and **gitbranch=** info and include related preprocessor #defines in *date.h* file.

[**-p**](#p)

Generate *pm.h*

[**-q**](#q)

Generate the *rumors* file.

[**-s**](#s)

Generate the *bogusmon*, *engrave*, and *epitaph* files.

**-1**

Generate the *epitaph* file.

**-2**

Generate the *engrave* file.

**-3**

Generate the *bogusmon* file.

[**-h**](#h)

Generate the **oracles** file.

# [LONG COMMANDS](#LONG_COMMANDS)

[**--debug**](#debug)

Show debugging output.

[**--make \[*command*\]**](#make)

Execute a short command. Command is given without preceding dash.

[**--input file**](#input)

Specify the input *file* for the command (if needed). If the file is - standard input is read.

[**--output file**](#output)

Specify the output *file* for the command (if needed). If the file is - standard output is written.

[**--svs \[*delimiter*\]**](#svs)

Generate a version string to standard output without a trailing newline. If specified, the delimiter is used between each part of the version string.

[**--grep**](#grep)

Filter the input *file to the output* *file*. See the **MDGREP FUNCTIONS** section below for information on controlling the filtering operation.

[**--grep-showvars**](#grep-showvars)

Show the name and value for each variable known to the grep option.

[**--grep-trace**](#grep-trace)

Turn on debug tracing for the grep function ( **--grep** must be specified as well).

[**--grep-defined symbol**](#grep-defined)

Exit shell true (0) if *symbol* is known and defined, otherwise exit shell [false (1)](/man/os/nethack/false.1).

[**--grep-define symbol**](#grep-define)

Force the value of *symbol* to be "defined." *Symbol* must already be known to **makedefs**.

[**--grep-undef symbol**](#grep-undef)

Force the definition of *symbol* to be "undefined." *Symbol* must already be known to **makedefs**.

# [MDGREP FUNCTIONS](#MDGREP_FUNCTIONS)

The **--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 [**NetHack**(6)](/man/os/nethack/NetHack.6) configuration. This allows certain changes such as embedding platform-specific documentation into the master documentation files.

Rules:

\-

The default conditional state is printing enabled.

\-

Any line *NOT* starting with a caret (^) is either suppressed or passed through unchanged depending on the current conditional state.

\-

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.

\-

Conditionals may be nested.

\-

*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.

\-

Unknown identifiers are treated as both TRUE and as an error. Note that **--undef** or **#undef** in the [**NetHack**(6)](/man/os/nethack/NetHack.6) configuration are different from unknown.

Control lines:

^^

a line starting with a (single) literal caret

^#

a comment

^?*ID*

if the *ID* is defined set the conditional state to TRUE

^!*ID*

if the *ID* is not defined set the conditional state to TRUE

^:

else; invert the conditional state

^.

end the most recent conditional

# [AUTHOR](#AUTHOR)

The NetHack Development Team

# [COPYRIGHT](#COPYRIGHT)

This file is Copyright (C) Kenneth Lorber, 2024 for version NetHack-5:1.22. NetHack may be freely redistributed. See license for details.

26 April 2026 NETHACK

---

Document: makedefs(6) from nethack 5.0.0-r2 (Chainguard OS)
Source: https://github.com/NetHack/NetHack
