aboutsummaryrefslogtreecommitdiffstats
path: root/chapter08/autoconf.xml
blob: 38375665f3c7d5697e0e72663722d9d198d0c0d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>

<sect1 id="ch-system-autoconf" role="wrap">
  <?dbhtml filename="autoconf.html"?>

  <sect1info condition="script">
    <productname>autoconf</productname>
    <productnumber>&autoconf-version;</productnumber>
    <address>&autoconf-url;</address>
  </sect1info>

  <title>Autoconf-&autoconf-version;</title>

  <indexterm zone="ch-system-autoconf">
    <primary sortas="a-Autoconf">Autoconf</primary>
  </indexterm>

  <sect2 role="package">
    <title/>

    <para>The Autoconf package contains programs for producing shell scripts that
    can automatically configure source code.</para>

    <segmentedlist>
      <segtitle>&buildtime;</segtitle>
      <segtitle>&diskspace;</segtitle>

      <seglistitem>
        <seg>&autoconf-fin-sbu;</seg>
        <seg>&autoconf-fin-du;</seg>
      </seglistitem>
    </segmentedlist>

  </sect2>

  <sect2 role="installation">
    <title>Installation of Autoconf</title>

    <para>First, fix several problems with the tests caused by bash-5.2 and later:</para>

    <screen><userinput remap="pre">sed -e 's/SECONDS|/&amp;SHLVL|/'               \
    -e '/BASH_ARGV=/a\        /^SHLVL=/ d' \
    -i.orig tests/local.at</userinput></screen>

    <para>Prepare Autoconf for compilation:</para>

<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>

    <para>Compile the package:</para>

<screen><userinput remap="make">make</userinput></screen>

    <para>To test the results, issue:</para>
<!--
    <para>The test suite is currently broken by bash-5 and libtool-2.4.3.
    To run the tests anyway, issue:</para>
 -->
<screen><userinput remap="test">make check</userinput></screen>
<!--
    <para>This takes a long time, about &autoconf-fin-sbu-tests; SBUs. In addition,
    several tests are skipped that use Automake. For full test coverage,
    Autoconf can be re-tested after Automake has been installed.  In addition,
    two tests fail due to changes in libtool-2.4.3 and later.</para>
-->
    <note><para>The test time for autoconf can be reduced significantly on a
    system with multiple cores.  To do this, append
    <command>TESTSUITEFLAGS=-j&lt;N&gt;</command> to the line above.  For
    instance, using -j4 can reduce the test time by over 60
    percent.</para></note>

    <para>Install the package:</para>

<screen><userinput remap="install">make install</userinput></screen>

  </sect2>

  <sect2 id="contents-autoconf" role="content">
    <title>Contents of Autoconf</title>

    <segmentedlist>
      <segtitle>Installed programs</segtitle>
      <segtitle>Installed directory</segtitle>

      <seglistitem>
        <seg>autoconf, autoheader, autom4te, autoreconf, autoscan, autoupdate,
        and ifnames</seg>
        <seg>/usr/share/autoconf</seg>
      </seglistitem>
    </segmentedlist>

    <variablelist>
      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
      <?dbfo list-presentation="list"?>
      <?dbhtml list-presentation="table"?>

      <varlistentry id="autoconf">
        <term><command>autoconf</command></term>
        <listitem>
          <para>Produces shell scripts that automatically configure software
          source code packages to adapt to many kinds of Unix-like systems;
          the configuration scripts it produces are independent&mdash;running
          them does not require the <command>autoconf</command> program</para>
          <indexterm zone="ch-system-autoconf autoconf">
            <primary sortas="b-autoconf">autoconf</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="autoheader">
        <term><command>autoheader</command> </term>
        <listitem>
          <para>A tool for creating template files of C
          <emphasis>#define</emphasis> statements for configure to use</para>
          <indexterm zone="ch-system-autoconf autoheader">
            <primary sortas="b-autoheader">autoheader</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="autom4te">
        <term><command>autom4te</command></term>
        <listitem>
          <para>A wrapper for the M4 macro processor</para>
          <indexterm zone="ch-system-autoconf autom4te">
            <primary sortas="b-autom4te">autom4te</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="autoreconf">
        <term><command>autoreconf</command></term>
        <listitem>
          <para>Automatically runs <command>autoconf</command>,
          <command>autoheader</command>, <command>aclocal</command>,
          <command>automake</command>, <command>gettextize</command>, and
          <command>libtoolize</command> in the correct order to save time
          when changes are made to <command>autoconf</command> and
          <command>automake</command> template files</para>
          <indexterm zone="ch-system-autoconf autoreconf">
            <primary sortas="b-autoreconf">autoreconf</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="autoscan">
        <term><command>autoscan</command> </term>
        <listitem>
          <para>Helps to create a <filename>configure.in</filename> file for a
          software package; it examines the source files in a directory tree,
          searching them for common portability issues, and creates a
          <filename>configure.scan</filename> file that serves as a
          preliminary <filename>configure.in</filename> file for the
          package</para>
          <indexterm zone="ch-system-autoconf autoscan">
            <primary sortas="b-autoscan">autoscan</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="autoupdate">
        <term><command>autoupdate</command></term>
        <listitem>
          <para>Modifies a <filename>configure.in</filename> file that still
          calls <command>autoconf</command> macros by their old names to use the
          current macro names</para>
          <indexterm zone="ch-system-autoconf autoupdate">
            <primary sortas="b-autoupdate">autoupdate</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="ifnames">
        <term><command>ifnames</command> </term>
        <listitem>
          <para>Helps when writing <filename>configure.in</filename> files
          for a software package; it prints the identifiers that the package
          uses in C preprocessor conditionals [If a package has already been set
          up to have some portability, this program can help determine what
          <command>configure</command> needs to check for. It can also fill in
          gaps in a <filename>configure.in</filename> file generated by
          <command>autoscan</command>.]</para>
          <indexterm zone="ch-system-autoconf ifnames">
            <primary sortas="b-ifnames">ifnames</primary>
          </indexterm>
        </listitem>
      </varlistentry>

    </variablelist>

  </sect2>

</sect1>