What is the IN file format?
A .in file is a plain-text template file processed by the GNU Autotools build system. The most common examples are Makefile.in (template for a project's Makefile) and config.h.in (template for a C/C++ configuration header). When a developer runs ./configure - the script generated by GNU Autoconf - the script reads these .in templates, substitutes @VARIABLE@ placeholders with values detected from the build environment (compiler paths, library flags, system features), and writes the final output files.
GNU Autoconf was created by David MacKenzie in 1991 and is maintained by the GNU Project. Autoconf 2.72 (December 2023) is the current release. The top-level macro input file was historically named configure.in; it was renamed to configure.ac in Autoconf 2.50 to reduce ambiguity, though many older projects still use the original name.
Common .in template types:
Makefile.in- becomesMakefileafter./configurerunsconfig.h.in- becomesconfig.hwith#define//* #undef */substitutionsfoo.pc.in- becomes a pkg-config.pcfile
Because .in files are plain text, any editor can open and read them. Related extensions include .ac (Autoconf macro files), .am (Automake input), and .m4 (M4 macro files). Note that the .in extension is not exclusive to Autotools - CMake's configure_file() command also uses .in templates - but software developers working with Autotools build systems represent the dominant use case.
Security & safety
RISK: LOWA .in template file is plain text and cannot execute code by itself. It is safe to open in a text editor. The configure script that processes .in files is a shell script (which does execute code) - the normal caution for running ./configure from an untrusted source applies. The .in file itself is passive.
Format details
in a nutshell- McAfee VirusScan Internal/Temporary File - Some McAfee antivirus versions use .in as an internal file extension for temporary or quarantine-related data; not a documented public format and rarely encountered by users.
- Generic Template/Input File - Many applications use .in as a generic convention for any template or input file that is processed to produce an output file (e.g. CMake's configure_file uses .in templates).
- Perl Module Build Input - Some Perl/CPAN build systems use .in files as input templates for generated files during module installation.
Programs that open IN files
Technical details
deep spec| File encoding | Plain ASCII/UTF-8 text |
| Primary role | Template file consumed by ./configure (generated by GNU Autoconf) to produce final build output files |
| Placeholder syntax | @VARIABLE@ markers replaced by configure with detected system values (compiler path, library flags, feature flags) |
| Common template types | Makefile.in → Makefile; config.h.in → config.h; foo.pc.in → foo.pc (pkg-config metadata) |
| config.h.in structure | Contains #undef FEATURE directives; configure replaces them with #define FEATURE 1 or /* #undef FEATURE */ |
| configure.in vs configure.ac | configure.in is the older name for the top-level Autoconf macro input; renamed to configure.ac in Autoconf 2.50 |
| M4 macro language | configure.in / configure.ac files use M4 macros and AC_* calls (AC_INIT, AC_PROG_CC, AC_CHECK_LIB, etc.) |
| Automake pipeline | Makefile.am (Automake input) → Makefile.in (produced by automake) → Makefile (produced by ./configure) |
| Binary signature | None - plain text, no magic bytes |
| Typical file size | 1 KB-500 KB (configure.in typically 5-100 KB; Makefile.in varies widely by project complexity) |
| Current Autoconf version | GNU Autoconf 2.72, released December 2023 |
| Platform | Primarily Linux/macOS/Unix; available on Windows via MSYS2, Cygwin, or WSL |
| Related extensions | .ac (Autoconf macro files), .am (Automake input templates), .m4 (raw M4 macro definitions) |
| Released | 1991 (GNU Autoconf 1.0 by David MacKenzie) |
| Latest version | Autoconf 2.72 (December 2023) |
| Open standard | Yes · royalty-free |
| Specification | www.gnu.org |
IN conversions
Community Q&A
asked by usersNo questions yet - be the first to ask about IN files.