Autotools
The autotools (autoconf, automake, and libtool) are designed to be run by developers to create a portable shell script named configure that is included in the upstream tarball. The configure script will test what functionality is available on the system it is being built on and generate a Makefile that will build the software accordingly. In general, packages which uses the autotools should have their configure script run in the package's spec file (via the %configure macro) and should not run autoconf, automake, and libtool to regenerate that shell script.
Sometimes, however, a package will not build correctly without fixes to the the build scripts. When this occurs there are two valid strategies.
Running Autotools in the spec file
With this strategy, you patch the files that the autotools take as input (most commonly configure.ac and Makefile.am) and then rerun the autotools on them in the spec file like this:
Patch0: configure-fix.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: libtool # If we're building libraries [..] %patch0 -p1 # Makes changes to what's in configure.ac autoreconf --force --install %configure
Unless the fix you make is Fedora specific, you can usually submit these types of patches upstream.
Remember that if you do things this way you should validate that what you've created works. Running autoreconf may create a configure script using a different version of the autotools than what was used to generate the configure script in the tarball. Different versions of the autotools sometimes lead to subtle changes in behaviour that could compile the software with slightly different preprocessor definitions and compile the code in a way you (and upstream) weren't expecting.
Patching the generated files
You can also directly change the files that the autotools produce (generally the configure script and the Makefile.in files). If you do this, [...]
