mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-12-27 03:33:50 -05:00
This issue of mismatched test count for other installations of architectures that are not part of the normal installation probably exists in several XML files throughout the book due to how merges were done in this branch. This was reported by Visceral on Discord. Though I am unsure if I should make a point to go through another pass and make each arch section fall in line with the normal sections. An alternative is killing the tests for the other architectures. This is something I've done in GLFS to reduce maintainence burden. But the goal for many users following this book is to simply get a working system with capabilities that allow it to run 32-bit software, no hassle. Tests are thus very important. Another issue is that the amount of tests can and will differ for different architectures which I'm pretty sure is not actually considered presently. I haven't ran tests in the past but it will probably be a good idea to start doing it, or cut the losses. I'll be thinking on this.
304 lines
10 KiB
XML
304 lines
10 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!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-gmp" role="wrap">
|
|
<?dbhtml filename="gmp.html"?>
|
|
|
|
<sect1info condition="script">
|
|
<productname>gmp</productname>
|
|
<productnumber>&gmp-version;</productnumber>
|
|
<address>&gmp-url;</address>
|
|
</sect1info>
|
|
|
|
<title>GMP-&gmp-version;</title>
|
|
|
|
<indexterm zone="ch-system-gmp">
|
|
<primary sortas="a-GMP">GMP</primary>
|
|
</indexterm>
|
|
|
|
<sect2 role="package">
|
|
<title/>
|
|
|
|
<para>The GMP package contains math libraries. These have useful functions
|
|
for arbitrary precision arithmetic.</para>
|
|
|
|
<segmentedlist>
|
|
<segtitle>&buildtime;</segtitle>
|
|
<segtitle>&diskspace;</segtitle>
|
|
|
|
<seglistitem>
|
|
<seg>&gmp-fin-sbu;</seg>
|
|
<seg>&gmp-fin-du;</seg>
|
|
</seglistitem>
|
|
</segmentedlist>
|
|
|
|
</sect2>
|
|
|
|
<sect2 role="installation">
|
|
<title>Installation of GMP</title>
|
|
|
|
<note>
|
|
<para>If you are building for 32-bit x86, but you have a CPU which is
|
|
capable of running 64-bit code <emphasis>and</emphasis> you have specified
|
|
<envar>CFLAGS</envar> in the environment, the configure script will
|
|
attempt to configure for 64-bits and fail.
|
|
Avoid this by invoking the configure command below with
|
|
<screen role="nodump"><userinput><parameter>ABI=32</parameter> ./configure ...</userinput></screen></para>
|
|
</note>
|
|
|
|
<note>
|
|
<para>The default settings of GMP produce libraries optimized for
|
|
the host processor. If libraries suitable for processors less
|
|
capable than the host's CPU are desired, generic libraries can be
|
|
created by appending the <option>--host=none-linux-gnu</option> option
|
|
to the <command>configure</command> command.</para>
|
|
|
|
<!-- To editors: the configure script says "the none host is obsolete,
|
|
use - -disable-assembly," but don't believe it: with the latter
|
|
CFLAGS is still automatically set to -march=something. -->
|
|
</note>
|
|
|
|
<para>First, make an adjustment for compatibility with gcc-15 and later:</para>
|
|
|
|
<screen><userinput remap="pre">sed -i '/long long t1;/,+1s/()/(...)/' configure</userinput></screen>
|
|
|
|
<para>Prepare GMP for compilation:</para>
|
|
|
|
<screen><userinput remap="configure">./configure --prefix=/usr \
|
|
--enable-cxx \
|
|
--disable-static \
|
|
--docdir=/usr/share/doc/gmp-&gmp-version;</userinput></screen>
|
|
|
|
<variablelist>
|
|
<title>The meaning of the new configure options:</title>
|
|
|
|
<varlistentry>
|
|
<term><parameter>--enable-cxx</parameter></term>
|
|
<listitem>
|
|
<para>This parameter enables C++ support</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><parameter>--docdir=/usr/share/doc/gmp-&gmp-version;</parameter></term>
|
|
<listitem>
|
|
<para>This variable specifies the correct place for the
|
|
documentation.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
<para>Compile the package and generate the HTML documentation:</para>
|
|
|
|
<screen><userinput remap="make">make
|
|
make html</userinput></screen>
|
|
|
|
<important>
|
|
<para>The test suite for GMP in this section is considered critical.
|
|
Do not skip it under any circumstances.</para>
|
|
</important>
|
|
|
|
<para>Test the results:</para>
|
|
|
|
<screen><userinput remap="test">make check 2>&1 | tee gmp-check-log</userinput></screen>
|
|
|
|
<caution><para>The code in gmp is highly optimized for the processor where
|
|
it is built. Occasionally, the code that detects the processor misidentifies
|
|
the system capabilities and there will be errors in the tests or other
|
|
applications using the gmp libraries with the message
|
|
<computeroutput>Illegal instruction</computeroutput>.
|
|
In this case, gmp should be reconfigured with the option
|
|
<option>--host=none-linux-gnu</option> and rebuilt.</para></caution>
|
|
|
|
<!-- Some tests PASS on a specific uarch but SKIP on other CPUs.
|
|
For example on K8 the following command outputs 200. -->
|
|
<para>Ensure that at least 199 tests in the test suite passed.
|
|
Check the results by issuing the following command:</para>
|
|
|
|
<screen><userinput remap="test">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</userinput></screen>
|
|
|
|
<para>Install the package and its documentation:</para>
|
|
|
|
<screen><userinput remap="install">make install
|
|
make install-html</userinput></screen>
|
|
|
|
</sect2>
|
|
|
|
<!-- - - - - - - - - - -->
|
|
<!-- Multilib - 32bit -->
|
|
<!-- - - - - - - - - - -->
|
|
|
|
<sect2 arch="ml_32,ml_all" role="installation">
|
|
<title>Installation of GMP - 32bit</title>
|
|
|
|
<para>Clean previous build:</para>
|
|
|
|
<screen><userinput remap="pre">make distclean</userinput></screen>
|
|
|
|
<para>Generic libraries can be created by running
|
|
the following:</para>
|
|
|
|
<screen role="nodump"><userinput remap="pre">cp -v configfsf.guess config.guess
|
|
cp -v configfsf.sub config.sub</userinput></screen>
|
|
|
|
<para>Prepare GMP for compilation:</para>
|
|
|
|
<screen><userinput remap="configure">ABI="32" \
|
|
CFLAGS="-m32 -O2 -pedantic -fomit-frame-pointer -mtune=generic -march=i686" \
|
|
CXXFLAGS="$CFLAGS" \
|
|
PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \
|
|
./configure --prefix=/usr \
|
|
--host=i686-pc-linux-gnu \
|
|
--disable-static \
|
|
--enable-cxx \
|
|
--libdir=/usr/lib32 \
|
|
--includedir=/usr/include/m32/gmp</userinput></screen>
|
|
|
|
<variablelist>
|
|
<title>The meaning of the new configure options:</title>
|
|
|
|
<varlistentry>
|
|
<term><parameter>--includedir=/usr/include/m32/gmp</parameter></term>
|
|
<listitem>
|
|
<para>Some definitions in gmp.h differs for each arch but
|
|
has same name. Therefore, the headers must be separated from
|
|
each other.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
<para>Compile the package:</para>
|
|
|
|
<screen><userinput remap="make">sed -i 's/$(exec_prefix)\/include/$\(includedir\)/' Makefile
|
|
make</userinput></screen>
|
|
|
|
<important>
|
|
<para>The test suite for GMP in this section is considered critical.
|
|
Do not skip it under any circumstances.</para>
|
|
</important>
|
|
|
|
<para>Test the results:</para>
|
|
|
|
<screen><userinput remap="test">make check 2>&1 | tee gmp-check-log</userinput></screen>
|
|
|
|
<para>Ensure that all 199 tests in the test suite passed.
|
|
Check the results by issuing the following command:</para>
|
|
|
|
<screen><userinput remap="test">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</userinput></screen>
|
|
|
|
<para>Install the package:</para>
|
|
|
|
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
|
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
|
cp -Rv DESTDIR/usr/include/m32/* /usr/include/m32/
|
|
rm -rf DESTDIR</userinput></screen>
|
|
|
|
</sect2><!-- m32 -->
|
|
|
|
<!-- - - - - - - - - - -->
|
|
<!-- Multilib - x32bit -->
|
|
<!-- - - - - - - - - - -->
|
|
|
|
<sect2 arch="ml_x32,ml_all" role="installation">
|
|
<title>Installation of GMP - x32-bit</title>
|
|
|
|
<para>Clean previous build:</para>
|
|
|
|
<screen><userinput remap="pre">make distclean</userinput></screen>
|
|
|
|
<para>Generic libraries can be created by running
|
|
the following:</para>
|
|
|
|
<screen role="nodump"><userinput remap="pre">cp -v configfsf.guess config.guess
|
|
cp -v configfsf.sub config.sub</userinput></screen>
|
|
|
|
<para>Prepare GMP for compilation:</para>
|
|
|
|
<screen><userinput remap="configure">ABI="x32" \
|
|
CFLAGS="-mx32 -O2 -pedantic -fomit-frame-pointer -mtune=generic -march=x86-64" \
|
|
CXXFLAGS="$CFLAGS" \
|
|
PKG_CONFIG_PATH="/usr/libx32/pkgconfig" \
|
|
./configure --prefix=/usr \
|
|
--host=x86_64-pc-linux-gnux32 \
|
|
--disable-static \
|
|
--enable-cxx \
|
|
--libdir=/usr/libx32 \
|
|
--includedir=/usr/include/mx32/gmp</userinput></screen>
|
|
|
|
<para>Compile the package:</para>
|
|
|
|
<screen><userinput remap="make">sed -i 's/$(exec_prefix)\/include/$\(includedir\)/' Makefile
|
|
make</userinput></screen>
|
|
|
|
<important>
|
|
<para>The test suite for GMP in this section is considered critical.
|
|
Do not skip it under any circumstances.</para>
|
|
</important>
|
|
|
|
<para>Test the results:</para>
|
|
|
|
<screen><userinput remap="test">make check 2>&1 | tee gmp-check-log</userinput></screen>
|
|
|
|
<para>Ensure that all 199 tests in the test suite passed.
|
|
Check the results by issuing the following command:</para>
|
|
|
|
<screen><userinput remap="test">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</userinput></screen>
|
|
|
|
<para>Install the package:</para>
|
|
|
|
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
|
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
|
cp -Rv DESTDIR/usr/include/mx32/* /usr/include/mx32/
|
|
rm -rf DESTDIR</userinput></screen>
|
|
|
|
</sect2><!-- mx32 -->
|
|
|
|
<sect2 id="contents-gmp" role="content">
|
|
<title>Contents of GMP</title>
|
|
|
|
<segmentedlist>
|
|
<segtitle>Installed libraries</segtitle>
|
|
<segtitle>Installed directory</segtitle>
|
|
|
|
<seglistitem>
|
|
<seg>libgmp.so and libgmpxx.so</seg>
|
|
<seg>/usr/share/doc/gmp-&gmp-version;</seg>
|
|
</seglistitem>
|
|
</segmentedlist>
|
|
|
|
<variablelist>
|
|
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
|
|
<?dbfo list-presentation="list"?>
|
|
<?dbhtml list-presentation="table"?>
|
|
|
|
<varlistentry id="libgmp">
|
|
<term><filename class="libraryfile">libgmp</filename></term>
|
|
<listitem>
|
|
<para>Contains precision math functions</para>
|
|
<indexterm zone="ch-system-gmp libgmp">
|
|
<primary sortas="c-libgmp">libgmp</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libgmpxx">
|
|
<term><filename class="libraryfile">libgmpxx</filename></term>
|
|
<listitem>
|
|
<para>Contains C++ precision math functions</para>
|
|
<indexterm zone="ch-system-gmp libgmpxx">
|
|
<primary sortas="c-libgmpxx">libgmpxx</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|