mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-01-31 03:11:57 +00:00
f8b27abcda
Presently we let the build system generate static C++ bindings, and then we remove them. Note that we could also prevent generating any C++ binding, since nothing in LFS/BLFS use them, but it seems to me that generating the shared ones is closer to what is done for other packages.
201 lines
6.6 KiB
XML
201 lines
6.6 KiB
XML
<?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-tools-ncurses" role="wrap">
|
|
<?dbhtml filename="ncurses.html"?>
|
|
|
|
<sect1info condition="script">
|
|
<productname>ncurses</productname>
|
|
<productnumber>&ncurses-version;</productnumber>
|
|
<address>&ncurses-url;</address>
|
|
</sect1info>
|
|
|
|
<title>Ncurses-&ncurses-version;</title>
|
|
|
|
<indexterm zone="ch-tools-ncurses">
|
|
<primary sortas="a-Ncurses">Ncurses</primary>
|
|
<secondary>tools</secondary>
|
|
</indexterm>
|
|
|
|
<sect2 role="package">
|
|
<title/>
|
|
|
|
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
href="../chapter08/ncurses.xml"
|
|
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
|
|
|
|
<segmentedlist>
|
|
<segtitle>&buildtime;</segtitle>
|
|
<segtitle>&diskspace;</segtitle>
|
|
|
|
<seglistitem>
|
|
<seg>&ncurses-tmp-sbu;</seg>
|
|
<seg>&ncurses-tmp-du;</seg>
|
|
</seglistitem>
|
|
</segmentedlist>
|
|
|
|
</sect2>
|
|
|
|
<sect2 role="installation">
|
|
<title>Installation of Ncurses</title>
|
|
|
|
<para>First, ensure that <command>gawk</command> is found first during configuration:</para>
|
|
|
|
<screen><userinput remap="pre">sed -i s/mawk// configure</userinput></screen>
|
|
|
|
<para>Then, run the following commands to build the <quote>tic</quote>
|
|
program on the build host:</para>
|
|
|
|
<screen><userinput remap="pre">mkdir build
|
|
pushd build
|
|
../configure
|
|
make -C include
|
|
make -C progs tic
|
|
popd</userinput></screen>
|
|
|
|
<para>Prepare Ncurses for compilation:</para>
|
|
|
|
<screen><userinput remap="configure">./configure --prefix=/usr \
|
|
--host=$LFS_TGT \
|
|
--build=$(./config.guess) \
|
|
--mandir=/usr/share/man \
|
|
--with-manpage-format=normal \
|
|
--with-shared \
|
|
--without-normal \
|
|
--with-cxx-shared \
|
|
--without-debug \
|
|
--without-ada \
|
|
--disable-stripping \
|
|
--enable-widec</userinput></screen>
|
|
|
|
<variablelist>
|
|
<title>The meaning of the new configure options:</title>
|
|
|
|
<varlistentry>
|
|
<term><parameter>--with-manpage-format=normal</parameter></term>
|
|
<listitem>
|
|
<para>This prevents Ncurses installing compressed manual
|
|
pages, which may happen if the host distribution itself
|
|
has compressed manual pages.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><parameter>--with-shared</parameter></term>
|
|
<listitem>
|
|
<para>This makes Ncurses build and install shared C libraries.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><parameter>--without-normal</parameter></term>
|
|
<listitem>
|
|
<para>This prevents Ncurses building and installing static C
|
|
libraries.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><parameter>--without-debug</parameter></term>
|
|
<listitem>
|
|
<para>This prevents Ncurses building and installing debug
|
|
libraries.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><parameter>--with-cxx-shared</parameter></term>
|
|
<listitem>
|
|
<para>This makes Ncurses build and install shared C++ bindings. It
|
|
also prevents it building and installing static C++ bindings.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><parameter>--without-ada</parameter></term>
|
|
<listitem>
|
|
<para>This ensures that Ncurses does not build support for the Ada
|
|
compiler which may be present on the host but will not be available
|
|
once we enter the <command>chroot</command> environment.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><parameter>--disable-stripping</parameter></term>
|
|
<listitem>
|
|
<para>This switch prevents the building system from stripping
|
|
the programs using <command>strip</command> program from the host.
|
|
Using host tools on cross-compiled program can cause failure.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><parameter>--enable-widec</parameter></term>
|
|
<listitem>
|
|
<para>This switch causes wide-character libraries (e.g., <filename
|
|
class="libraryfile">libncursesw.so.&ncurses-version;</filename>)
|
|
to be built instead of normal ones (e.g., <filename
|
|
class="libraryfile">libncurses.so.&ncurses-version;</filename>).
|
|
These wide-character libraries are usable in both multibyte and
|
|
traditional 8-bit locales, while normal libraries work properly
|
|
only in 8-bit locales. Wide-character and normal libraries are
|
|
source-compatible, but not binary-compatible.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
<para>Compile the package:</para>
|
|
|
|
<screen><userinput remap="make">make</userinput></screen>
|
|
|
|
<para>Install the package:</para>
|
|
|
|
<screen><userinput remap="install">make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install
|
|
echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so</userinput></screen>
|
|
<!--
|
|
<para>Remove an unneeded static library not handled by
|
|
<command>configure</command>:</para>
|
|
|
|
<screen><userinput remap="install">rm -v $LFS/usr/lib/libncurses++w.a</userinput></screen>
|
|
-->
|
|
<variablelist>
|
|
<title>The meaning of the install options:</title>
|
|
|
|
<varlistentry>
|
|
<term><parameter>TIC_PATH=$(pwd)/build/progs/tic</parameter></term>
|
|
<listitem>
|
|
<para>We need to pass the path of the just built
|
|
<command>tic</command> able to run on the building machine, so that
|
|
the terminal database can be created without errors.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><command>echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so</command></term>
|
|
<listitem>
|
|
<para>The <filename>libncurses.so</filename> library is needed by
|
|
a few packages we will build soon. We create this small linker
|
|
script, as this is what is done in <xref
|
|
linkend="chapter-building-system"/>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
</sect2>
|
|
|
|
<sect2 role="content">
|
|
<title/>
|
|
|
|
<para>Details on this package are located in
|
|
<xref linkend="contents-ncurses" role="."/></para>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|