{{Short description|Shell script for generating build configuration files on a Unix-like environment}} {{Lowercase title}} When installing a package on a Unix or Unix-like environment, a '''configure script''' is a shell script that generates build configuration files for a codebase to facilitate cross-platform support. It generates files tailoring for the host system {{endash}} the environment on which the codebase is built and run.

Even though there are no standards for such a script, the pattern is so ubiquitous that many developers are familiar with and even expect a script named ''configure'' that has this functionality. The script can be and originally was hand-coded. Today, multiple tools are available for generating a configure script based on special configuration files. One commonly used tool is Autotools which generates a Bash script.

Obtaining a software package as source code and compiling it locally is a common scenario on Unix and Unix-like environments. Typically, this process involves the following steps:

# Generate build configuration files # Build the code # Install the result to an accessible location

A configure script accomplishes the first step by generating a makefile that is configured for the host system. This includes using the libraries of the host as required by the codebase.

== Use ==

After navigating a command-line shell to the directory that contains the source code, the following commands are typically executed:<ref>{{cite web |url=http://www.control-escape.com/linux/lx-swinstall-tar.html |title=Compiling Linux Software from Source Code |publisher=Control-Escape's Linux Help Engine |access-date=20 November 2010}}</ref>

<syntaxhighlight lang="sh"> ./configure make make install </syntaxhighlight>

For the Autotools, the configure script logs status and errors to file ''config.log'', and the command <code>./configure --help</code> outputs command line help information.

Often, a document with instructions is included with the codebase (usually in a file named <code>INSTALL</code>). It can be helpful if the configure script fails.

== Generating ==

Autotools simplifies some of the challenges of cross-platform software development.<ref>{{cite web |url=https://www.gnu.org/software/autoconf/ |title=Autoconf - GNU Project - Free Software Foundation (FSF) |publisher=GNU Operating System |access-date=20 November 2010}}</ref> These tools query the host system for environment settings, platform architecture, and the existence and location of required build and runtime dependencies. They store the gathered information in <code>configure.ac</code> to be read by <code>configure</code> during the installation phase.

In new development, library dependency checking can be accomplished via pkg-config via the m4 macro, PKG_CHECK_MODULES. Before pkg-config gained popularity, separate m4 macros were created to locate files known to be included in the distribution of libraries depended upon.

== History == The first program to come with a configure script was rn by Larry Wall in 1984. The script was written by hand and produced a jocular running commentary when executed. It still survives as part of the build system of the '''trn''' program.<ref>{{cite web |url=https://github.com/acli/trn/blob/613a7e97aca06dd807fb225990fa804e8c744574/Configure|title= Configure script of trn |publisher=GitHub |access-date=10 December 2020}}</ref>

Since then, an ecosystem of tools have been developed to automate the creation of configure scripts, of which the most common is Autoconf.

== References == {{Reflist}}

==External links== * {{sourceforge|buildconf|buildconf}}, provides the ''autogen.sh'' automatic build preparation posix shell script.

Category:Compiling tools Category:Linux configuration utilities Category:Unix programming tools configure