---
name: "bmkdep"
section: "1"
platform: "linux"
package: "bmkdep"
version: "20140112-5"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/bmkdep"
---

# bmkdep(1)

construct Makefile dependency list

## NAME

**mkdep** – construct Makefile dependency list

## SYNOPSIS

**mkdep** \[**-aDdiopqv**\] \[**-f** *file*\] \[**-P** *prefix*\] \[**-s** *suffixes*\] -- \[*flags*\] *file* *...*

## DESCRIPTION

**mkdep** takes a set of flags for the C compiler and a list of C source files as arguments and constructs a set of include file dependencies which are written into the file \`\`.depend''. An example of its use in a Makefile might be:

```
CFLAGS= -O -I../include
SRCS= file1.c file2.c
depend:
	mkdep -- ${CFLAGS} ${SRCS}
```

where the macro SRCS is the list of C source files and the macro CFLAGS is the list of flags for the C compiler.

The options are as follows:

- **-a**

  Append to the output file, so that multiple **mkdep**'s may be run from a single Makefile.

- **-D**

  Post process (as **-d**) but read the list of filenames from stdin.

- **-d**

  Post process and merge previously created (for example by “cc -MD x.c”) depend files into a single file.

- **-f**

  Write the include file dependencies to *file*, instead of the default \`\`.depend''.

- **-i**

  When **-d** or **-D** is used, instead of inlining the contents of the files to the resulting depend file, use include statements to include the source dependency files.

- **-o**

  Add an additional .OPTIONAL line for each dependent file.

- **-P**

  Prepend the string given in *prefix* to every target filename. This is useful for programs that have source files in multiple subdirectories and a single Makefile that references all of them explicitly (without using the VPATH functionality because there can be files with the same name in each subdirectory).

- **-p**

  Cause **mkdep** to produce dependencies of the form:

  ```
  program: program.c
  ```

  so that subsequent makes will produce *program* directly from its C module rather than using an intermediate *.o* module. This is useful for programs whose source is contained in a single module. **-p** is equivalent to specifying a null suffix with **-s**.

- **-q**

  Do not print a warning for inaccessible files when **-d** is given.

- **-s**

  Expand each target filename to a list, replacing the ‘.o’ suffix with each element of *suffixes*. The list of suffixes may be space or comma separated.

- **-v**

  print debugging output.

## FILES

- *.depend*

  File containing list of dependencies.

## SEE ALSO

[cc(1)](/cc/1.md), [cpp(1)](/cpp/1.md), [make(1)](/make/1.md)

## HISTORY

The **mkdep** command appeared in 4.3BSD-Tahoe.

## BUGS

Some characters special to [make(1)](/make/1.md), most notably the comment character, are not escaped correctly if they appear in file names. This can lead to unparseable output or silently cause dependencies to be lost.
