Configure script: Difference between revisions

Content deleted Content added
History: More encylopedic
Organize the info; increase intro size; move more detailed info to sub-sections; keep intro high level
Line 3:
[[Image:Autoconf-automake-process.svg|thumb|280px|Flow diagram including configure, [[autoconf]] and [[automake]], three tools in the GNU Build System]]
 
As generated by the [[GNU Build System]], a '''configure script''' is ana [[Bash (Unix shell)|Bash shell]] script that generates [[software build|build]] configuration files for a [[codebase]] to facilitate cross-platform support. It matchesgenerates thefiles [[Librarytailoring (computer science)|libraries]] onfor the build host computersystem with{{endash}} thosethe requiredenvironment byon which the codebase beforeis thebuilt [[sourceand code]] is [[compiler|compiled]]run.
 
Obtaining a software directlypackage from theas [[source code]] and [[compiler|compiling]] it locally is a common procedurescenario on [[Unix]] and [[Unix-like]] environementsenvironments. ItVia the GNU Build System, this generallyprocess involves the following steps:
== Use ==
 
Obtaining software directly from the source code is a common procedure on [[Unix]] and [[Unix-like]] environements. It generally involves the following steps:
 
# Generate abuild [[makefile]]configuration files
# CompileBuild the code
# Install the result to an accessible ___location
 
A configure script accomplishes the first step. The script automatesby generating a [[makefile]]; allowingthat foris tailoringconfigured it andfor the resultinghost softwaresystem. toThis includes using the system[[Library on(computer whichscience)|libraries]] itof isthe compiledhost andas run.required by the codebase.
 
== Use ==
After navigating a terminal 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>
 
After navigating a terminalcommand-line [[Shell (computing)|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">
Line 23:
</syntaxhighlight>
 
The configure script logs status and errors to file ''config.log''.
A report of the configuration operation can be found in file ''config.log''. Running <code>./configure --help</code> outputs command line syntax options.
 
Command <code>./configure --help</code> outputs command line help information.
Often, a document with instructions is included; often in a file named <code>INSTALL</code>. This can be helpful if <code>configure</code> fails.
 
Often, a document with instructions is included with the codebase; often in a file named <code>INSTALL</code>. ThisIt can be helpful if <code>the configure</code> script fails.
 
== Generating ==
 
[[GNU Build System]] simplifies some of the the challengechallenges 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> or the now deprecated <code>configure.in</code> to be read by <code>configure</code> during the installation phase.
 
== Dependency checking ==
 
In new development, library dependency checking has been done in great part using [[pkg-config]] via the [[M4 (computer language)|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.