41

Sometimes in the sources of projects I see "*.in" files. For example, a bunch of "Makefile.in"s. What are they for and/or what does the ".in" part mean? I assume that this has something to do with autoconf or make or something like those, but I'm not sure.

I've tried searching for ".in file extension", "autoconf .in file extension", "autoconf .in", "autoconf dot in", and other variants, with no luck.

2

3 Answers 3

37

I believe the automake process involving a Makefile.in is something like this:

  Makefile.am
       |
      \'/
+--------------+
|   automake   |
+--------------+
       |
      \'/
   Makefile.in
       |
      \'/
+--------------+    +--------------+
| ./configure  |<-- |   autoconf   |<-- configure.in
+--------------+    +--------------+
       |
      \'/
    Makefile

Nobody actually writes a Makefile.in. The only programmer-defined file here is the Makefile.am.

1
  • 3
    Well, on occasion I've written a Makefile.in, because automake wouldn't do what I want. Commented Jul 25, 2013 at 14:03
29

it's just a convention that signifies the given file is for input; in my experience, these files tend to be a sort of generic template from which a specific output file or script results.

2
  • 4
    Out of interest, could you cite some examples where ".in" is used in this way outside of the autoconf realm?
    – spinkus
    Commented Jul 5, 2014 at 12:08
  • @spinkus Python packaging/dev tools use it now, e.g. MANIFEST.in and requirements.in. The former name would have been in use back in 2014 when you first asked! Commented Sep 30, 2022 at 20:28
9

They are input files for the m4 macro preprocessor. Among other things, these files contain macros marked by @, that get expanded by m4.

1
  • 1
    Nope. Makefile.in is never touched by anything m4 related. Commented Jul 25, 2013 at 14:02

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .