Changes in / [35d2578:60870bc]


Ignore:
Files:
2 added
50 edited

Legend:

Unmodified
Added
Removed
  • Makefile

    r35d2578 r60870bc  
    3535endif
    3636
     37ifndef ARCH
     38  ARCH = default
     39endif
     40ifneq ($(ARCH), default)
     41  ifneq ($(ARCH), ml_32)
     42    ifneq ($(ARCH), ml_x32)
     43      ifneq ($(ARCH), ml_all)
     44        $(error ARCH must be either 'default' (default if unset), 'ml_32', 'ml_x32' or 'ml_all'.)
     45      endif
     46    endif
     47  endif
     48endif
     49
    3750book: validate profile-html
    3851        @echo "Generating chunked XHTML files at $(BASEDIR)/ ..."
     
    130143                --output $(RENDERTMP)/lfs-html2.xml   \
    131144                --stringparam profile.revision $(REV) \
     145                --stringparam profile.arch $(ARCH)    \
    132146                stylesheets/lfs-xsl/profile.xsl       \
    133147                index.xml
     
    177191        $(Q)xsltproc --nonet --xinclude                    \
    178192                --stringparam profile.revision $(REV) \
     193                --stringparam profile.arch $(ARCH)    \
    179194                --output $(RENDERTMP)/sysv-md5sum.xml \
    180195                stylesheets/lfs-xsl/profile.xsl       \
  • chapter01/askforhelp.xml

    r35d2578 r60870bc  
    4141        <para>The version of the book being used (in this case
    4242              <phrase revision="sysv">&version;</phrase>
    43               <phrase revision="systemd">&versiond;</phrase>)</para>
     43              <phrase revision="systemd">&versiond;</phrase>)
     44              <phrase arch="default" revision="sysv">&version;</phrase>
     45              <phrase arch="ml_32,ml_x32,ml_all" revision="sysv">&version;-multilib</phrase>
     46              <phrase arch="default" revision="systemd">&versiond;</phrase>
     47              <phrase arch="ml_32,ml_x32,ml_all" revision="systemd">&versiond;-multilib</phrase>)</para>
    4448      </listitem>
    4549      <listitem>
     
    5660      </listitem>
    5761      <listitem>
    58         <para>Note whether you have deviated from the book at all </para>
     62        <para>Note whether you have deviated from the book at all</para>
    5963      </listitem>
    6064    </itemizedlist>
  • chapter01/changelog.xml

    r35d2578 r60870bc  
    1111  <title>Changelog</title>
    1212
    13   <para>This is version
    14         <phrase revision="sysv">&version;</phrase>
    15         <phrase revision="systemd">&versiond;</phrase>
     13  <para>This is version
     14        <phrase arch="default" revision="sysv">&version;</phrase>
     15        <phrase arch="ml_32,ml_x32,ml_all" revision="sysv">&version;-multilib</phrase>
     16        <phrase arch="default" revision="systemd">&versiond;</phrase>
     17        <phrase arch="ml_32,ml_x32,ml_all" revision="systemd">&versiond;-multilib</phrase>
    1618  of the Linux From Scratch book, dated
    1719  &releasedate;. If this book is more than six months old, a newer and better
  • chapter02/hostreqs.xml

    r35d2578 r60870bc  
    237237-->
    238238
     239    <para arch="ml_32,ml_x32,ml_all">
     240      Building multilib support requires the kernel of the host system
     241      to have 32-bit emulation support included.
     242    </para>
     243<screen arch="ml_32,ml_x32,ml_all">Binary Emulations  ---&gt;
     244    [*] IA32 Emulation
     245    &lt;M&gt;   IA32 a.out support
     246    [*] x32 ABI for 64-bit mode
     247</screen>
     248
     249    <para arch="ml_32,ml_x32,ml_all">The option 'IA32 a.out support' is
     250      optional. In case your kernel does not have 'x32 ABI for 64-bit mode'
     251      enabled but only 'IA32 Emulation', you can continue to build your
     252      system but you have to leave out any sections showing instructions
     253      for building x32 objects. If neither 'IA32 Emulation' nor
     254      'x32 ABI for 64-bit mode' is enabled, you will run in errors
     255      latest when building <application>glibc</application> in Chapter 6,
     256      so an upgrade of your host system kernel is required.
     257    </para>
     258   
    239259</sect1>
  • chapter03/packages.xml

    r35d2578 r60870bc  
    347347        <para>Download: <ulink url="&iproute2-url;"/></para>
    348348        <para>MD5 sum: <literal>&iproute2-md5;</literal></para>
     349      </listitem>
     350    </varlistentry>
     351
     352    <varlistentry arch="ml_32,ml_x32,ml_all">
     353      <term>ISL (&isl-version;) - <token>&isl-size;</token>:</term>
     354      <listitem>
     355        <para>Home page: <ulink url="&isl-home;"/></para>
     356        <para>Download: <ulink url="&isl-url;"/></para>
     357        <para>MD5 sum: <literal>&isl-md5;</literal></para>
    349358      </listitem>
    350359    </varlistentry>
  • chapter04/addinguser.xml

    r35d2578 r60870bc  
    8585  x86_64) chown -v lfs $LFS/lib64 ;;
    8686esac</userinput></screen>
     87<screen arch="ml_32"  ><userinput>chown -v lfs $LFS/lib32</userinput></screen>
     88<screen arch="ml_x32" ><userinput>chown -v lfs $LFS/libx32</userinput></screen>
     89<screen arch="ml_all" ><userinput>chown -v lfs $LFS/{lib32,libx32}</userinput></screen>
    8790
    8891  <para>If a separate working directory was created as suggested, give
  • chapter04/creatingminlayout.xml

    r35d2578 r60870bc  
    3030  x86_64) mkdir -pv $LFS/lib64 ;;
    3131esac</userinput></screen>
     32<screen arch="ml_32"><userinput>mkdir -pv $LFS/usr/lib32
     33ln -sv usr/lib32 $LFS/lib32</userinput></screen>
     34<screen arch="ml_x32"><userinput>mkdir -pv $LFS/usr/libx32
     35ln -sv usr/libx32 $LFS/libx32</userinput></screen>
     36<screen arch="ml_all"><userinput>mkdir -pv $LFS/usr/lib{,x}32
     37ln -sv usr/lib32 $LFS/lib32
     38ln -sv usr/libx32 $LFS/libx32</userinput></screen>
    3239
    3340    <note>
  • chapter04/settingenviron.xml

    r35d2578 r60870bc  
    3838  <filename>.bashrc</filename> file now:</para>
    3939
    40 <screen><userinput>cat &gt; ~/.bashrc &lt;&lt; "EOF"
     40<screen arch="default"><userinput>cat &gt; ~/.bashrc &lt;&lt; "EOF"
    4141<literal>set +h
    4242umask 022
     
    5050export LFS LC_ALL LFS_TGT PATH CONFIG_SITE</literal>
    5151EOF</userinput></screen>
     52<screen arch="ml_32,ml_x32,ml_all"><userinput>cat &gt; ~/.bashrc &lt;&lt; "EOF"
     53<literal>set +h
     54umask 022
     55LFS=/mnt/lfs
     56LC_ALL=POSIX
     57LFS_TGT=x86_64-lfs-linux-gnu
     58LFS_TGT32=i686-lfs-linux-gnu
     59LFS_TGTX32=x86_64-lfs-linux-gnux32
     60PATH=/usr/bin
     61if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
     62PATH=$LFS/tools/bin:$PATH
     63CONFIG_SITE=$LFS/usr/share/config.site
     64export LFS LC_ALL LFS_TGT LFS_TGT32 LFS_TGTX32 PATH</literal>
     65EOF</userinput></screen>
    5266
    5367  <variablelist>
  • chapter05/binutils-pass1.xml

    r35d2578 r60870bc  
    7171    <para>Now prepare Binutils for compilation:</para>
    7272
    73     <screen><userinput remap="configure">../configure --prefix=$LFS/tools \
     73    <screen arch="default"><userinput remap="configure">../configure --prefix=$LFS/tools \
    7474             --with-sysroot=$LFS \
    7575             --target=$LFS_TGT   \
    7676             --disable-nls       \
    7777             --disable-werror</userinput></screen>
     78<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure --prefix=$LFS/tools       \
     79             --with-sysroot=$LFS \
     80             --target=$LFS_TGT   \
     81             --disable-nls       \
     82             --disable-werror    \
     83             --enable-multilib</userinput></screen>
    7884
    7985    <variablelist>
     
    124130      </varlistentry>
    125131
     132      <varlistentry arch="ml_32,ml_x32,ml_all">
     133        <term><parameter>--enable-multilib</parameter></term>
     134        <listitem>
     135          <para>Enables multilib support.</para>
     136        </listitem>
     137      </varlistentry>
     138
    126139    </variablelist>
    127140
  • chapter05/gcc-pass1.xml

    r35d2578 r60870bc  
    6161mv -v gmp-&gmp-version; gmp
    6262tar -xf ../mpc-&mpc-version;.tar.gz
    63 mv -v mpc-&mpc-version; mpc</userinput></screen>
    64 
    65     <para>On x86_64 hosts, set the default directory name for
     63mv -v mpc-&mpc-version; mpc</userinput>
     64<userinput remap="pre" arch="ml_32,ml_x32,ml_all">tar -xf ../isl-&isl-version;.tar.xz
     65mv -v isl-&isl-version; isl</userinput></screen>
     66
     67    <para arch="default">On x86_64 hosts, set the default directory name for
    6668    64-bit libraries to <quote>lib</quote>:</para>
    6769
    68 <screen><userinput remap="pre">case $(uname -m) in
     70<screen arch="default"><userinput remap="pre">case $(uname -m) in
    6971  x86_64)
    7072    sed -e '/m64=/s/lib64/lib/' \
     
    7375esac</userinput></screen>
    7476
     77    <para arch="ml_32,ml_x32,ml_all">Change the default directory name for
     78    libraries:</para>
     79
     80<screen arch="ml_32,ml_x32,ml_all"><userinput remap="pre">sed -e '/m64=/s/lib64/lib/' \
     81    -e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' \
     82    -i.orig gcc/config/i386/t-linux64
     83</userinput></screen>
     84
    7585    <para>The GCC documentation recommends building GCC
    7686    in a dedicated build directory:</para>
     
    8191    <para>Prepare GCC for compilation:</para>
    8292
    83 <screen><userinput remap="configure">../configure                  \
     93<screen arch="default"><userinput remap="configure">../configure                  \
    8494    --target=$LFS_TGT         \
    8595    --prefix=$LFS/tools       \
     
    101111    --disable-libstdcxx       \
    102112    --enable-languages=c,c++</userinput></screen>
     113<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure"
     114    arch="ml_32">mlist=m64,m32</userinput><userinput remap="configure"
     115    arch="ml_x32">mlist=m64,mx32</userinput><userinput remap="configure"
     116    arch="ml_all">mlist=m64,m32,mx32</userinput>
     117<userinput remap="configure">../configure                  \
     118    --target=$LFS_TGT                              \
     119    --prefix=$LFS/tools                            \
     120    --with-glibc-version=2.11                      \
     121    --with-sysroot=$LFS                            \
     122    --with-newlib                                  \
     123    --without-headers                              \
     124    --enable-initfini-array                        \
     125    --disable-nls                                  \
     126    --disable-shared                               \
     127    --enable-multilib --with-multilib-list=$mlist  \
     128    --disable-decimal-float                        \
     129    --disable-threads                              \
     130    --disable-libatomic                            \
     131    --disable-libgomp                              \
     132    --disable-libquadmath                          \
     133    --disable-libssp                               \
     134    --disable-libvtv                               \
     135    --disable-libstdcxx                            \
     136    --enable-languages=c,c++</userinput></screen>
     137
    103138    <variablelist>
    104139      <title>The meaning of the configure options:</title>
     
    150185      </varlistentry>
    151186
    152       <varlistentry>
     187      <varlistentry arch="default">
    153188        <term><parameter>--disable-multilib</parameter></term>
    154189        <listitem>
    155190          <para>On x86_64, LFS does not support a multilib configuration.
    156191          This switch is harmless for x86.</para>
     192        </listitem>
     193      </varlistentry>
     194      <varlistentry arch="ml_32,ml_x32,ml_all">
     195        <term><parameter>--enable-multilib --with-multilib-list=...</parameter></term>
     196        <listitem>
     197          <para>LFS canbe used to support multilib. Which they are is
     198          specified in the multilib list.</para>
    157199        </listitem>
    158200      </varlistentry>
  • chapter05/glibc.xml

    r35d2578 r60870bc  
    4848    operation of the dynamic library loader:</para>
    4949
    50 <screen><userinput remap="pre">case $(uname -m) in
     50<screen arch="default"><userinput remap="pre">case $(uname -m) in
    5151    i?86)   ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3
    5252    ;;
     
    5555    ;;
    5656esac</userinput></screen>
     57<!-- no ld-linux.so.2 here as multilib is based on x86_64, not on i686 -->
     58<screen arch="ml_32,ml_x32,ml_all"><userinput remap="pre">ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
     59ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3</userinput></screen>
    5760
    5861    <para>Some of the Glibc programs use the non-FHS compliant
     
    7780    <para>Next, prepare Glibc for compilation:</para>
    7881
    79 <screen><userinput remap="configure">../configure                             \
     82<screen arch="default"><userinput remap="configure">../configure                             \
    8083      --prefix=/usr                      \
    8184      --host=$LFS_TGT                    \
     
    8386      --enable-kernel=&min-kernel;                \
    8487      --with-headers=$LFS/usr/include    \
     88      libc_cv_slibdir=/usr/lib</userinput></screen>
     89<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure                             \
     90      --prefix=/usr                      \
     91      --host=$LFS_TGT                    \
     92      --build=$(../scripts/config.guess) \
     93      --enable-kernel=&min-kernel;                \
     94      --with-headers=$LFS/usr/include    \
     95      --enable-multi-arch                \
    8596      libc_cv_slibdir=/usr/lib</userinput></screen>
    8697
     
    196207<screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen>
    197208
    198       <para>Note that for 32-bit machines, the interpreter name will be
     209      <para arch="default">Note that for 32-bit machines, the interpreter name will be
    199210      <filename>/lib/ld-linux.so.2</filename>.</para>
    200211
     
    224235  </sect2>
    225236
     237  <!-- - - - - - - - - - -->
     238  <!-- Multilib - 32bit  -->
     239  <!-- - - - - - - - - - -->
     240  <sect2 arch="ml_32,ml_all">
     241    <title>Building Glibc - 32bit</title>
     242
     243    <para>Now recompile for m32. The extracted source can be
     244    reused but needs to be cleaned before installing the m32
     245    version of Glibc.</para>
     246
     247    <para>Clear the build directory and remove artefacts from
     248    previous build:</para>
     249     
     250<screen><userinput remap="pre">make clean
     251find .. -name "*.a" -delete</userinput></screen>
     252
     253    <para>Configure Glibc for m32 with the following commands:</para>
     254
     255<screen><userinput remap="configure">CC="$LFS_TGT-gcc -m32" \
     256CXX="$LFS_TGT-g++ -m32" \
     257../configure                             \
     258      --prefix=/usr                      \
     259      --host=$LFS_TGT32                  \
     260      --build=$(../scripts/config.guess) \
     261      --enable-kernel=&min-kernel;                \
     262      --with-headers=$LFS/usr/include    \
     263      --enable-multi-arch                \
     264      --libdir=/usr/lib32                \
     265      --libexecdir=/usr/lib32            \
     266      libc_cv_slibdir=/usr/lib32</userinput></screen>
     267
     268    <para>Compile the package:</para>
     269
     270<screen><userinput remap="make">make</userinput></screen>
     271
     272    <para>Install the package:</para>
     273
     274<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     275cp -a DESTDIR/usr/lib32 $LFS/usr/
     276install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-32.h \
     277               $LFS/usr/include/gnu/
     278ln -svf ../lib32/ld-linux.so.2 $LFS/lib/ld-linux.so.2</userinput></screen>
     279
     280
     281    <caution>
     282      <para>At this point, it is imperative to stop and ensure that the basic
     283      functions (compiling and linking) of the new toolchain are working as
     284      expected. To perform a sanity check, run the following commands:</para>
     285
     286<screen><userinput>echo 'int main(){}' &gt; dummy.c
     287$LFS_TGT-gcc -m32 dummy.c
     288readelf -l a.out | grep '/ld-linux'</userinput></screen>
     289
     290      <para>If everything is working correctly, there should be no errors,
     291      and the output of the last command will be of the form:</para>
     292
     293<screen><computeroutput>[Requesting program interpreter: /lib/ld-linux.so.2]</computeroutput></screen>
     294
     295      <para>If the output is not shown as above or there was no output at all,
     296      then something is wrong. Investigate and retrace the steps to find out
     297      where the problem is and correct it. This issue must be resolved before
     298      continuing on.</para>
     299
     300      <para>Once all is well, clean up the test files:</para>
     301
     302<screen><userinput>rm -v dummy.c a.out</userinput></screen>
     303
     304    </caution>
     305
     306  </sect2><!-- m32 -->
     307
     308  <!-- - - - - - - - - - -->
     309  <!-- Multilib - x32bit -->
     310  <!-- - - - - - - - - - -->
     311 
     312  <sect2 arch="ml_x32,ml_all">
     313    <title>Building Glibc - x32bit</title>
     314
     315    <para>Now recompile for mx32. The extracted source can be
     316    reused but needs to be cleaned before installing the mx32
     317    version of Glibc.</para>
     318
     319    <para>Clear the build directory and remove artefacts from
     320    previous build:</para>
     321     
     322<screen><userinput remap="pre">make clean
     323find .. -name "*.a" -delete</userinput></screen>
     324
     325    <para>Configure Glibc for mx32 with the following commands:</para>
     326
     327<screen><userinput remap="configure">CC="$LFS_TGT-gcc -mx32" \
     328CXX="$LFS_TGT-g++ -mx32" \
     329../configure                             \
     330      --prefix=/usr                      \
     331      --host=$LFS_TGTX32                 \
     332      --build=$(../scripts/config.guess) \
     333      --enable-kernel=&min-kernel;                \
     334      --with-headers=$LFS/usr/include    \
     335      --enable-multi-arch                \
     336      --libdir=/usr/libx32               \
     337      --libexecdir=/usr/libx32           \
     338      libc_cv_slibdir=/usr/libx32</userinput></screen>
     339
     340    <para>Compile the package:</para>
     341
     342<screen><userinput remap="make">make</userinput></screen>
     343
     344    <para>Install the package:</para>
     345
     346<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     347cp -a DESTDIR/usr/libx32 $LFS/usr/
     348install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-x32.h \
     349               $LFS/usr/include/gnu/
     350ln -svf ../libx32/ld-linux-x32.so.2 $LFS/lib/ld-linux-x32.so.2</userinput></screen>
     351
     352    <caution>
     353      <para>At this point, it is imperative to stop and ensure that the basic
     354      functions (compiling and linking) of the new toolchain are working as
     355      expected. To perform a sanity check, run the following commands:</para>
     356
     357<screen><userinput>echo 'int main(){}' &gt; dummy.c
     358$LFS_TGT-gcc -mx32 dummy.c
     359readelf -l a.out | grep '/ld-linux-x32'</userinput></screen>
     360
     361      <para>If everything is working correctly, there should be no errors,
     362      and the output of the last command will be of the form:</para>
     363
     364<screen><computeroutput>[Requesting program interpreter: /libx32/ld-linux-x32.so.2]</computeroutput></screen>
     365
     366      <para>If the output is not shown as above or there was no output at all,
     367      then something is wrong. Investigate and retrace the steps to find out
     368      where the problem is and correct it. This issue must be resolved before
     369      continuing on.</para>
     370
     371      <para>Once all is well, clean up the test files:</para>
     372
     373<screen><userinput>rm -v dummy.c a.out</userinput></screen>
     374
     375    </caution>
     376
     377  </sect2><!-- mx32 -->
     378
    226379  <sect2 role="content">
    227380    <title/>
  • chapter05/libstdc++.xml

    r35d2578 r60870bc  
    8282      </varlistentry>
    8383
     84      <varlistentry arch="ml_32,ml_x32,ml_all">
     85        <term><parameter>--disable-multilib</parameter></term>
     86        <listitem>
     87          <para>Even when building the multilib version, this switch is
     88          given. This is because the additionally built libraries are
     89          not required in this stage and some disk space and compile
     90          time can be saved.</para>
     91        </listitem>
     92      </varlistentry>
     93
    8494      <varlistentry>
    8595        <term><parameter>--disable-libstdcxx-pch</parameter></term>
  • chapter06/binutils-pass2.xml

    r35d2578 r60870bc  
    5151    <para>Prepare Binutils for compilation:</para>
    5252
    53 <screen><userinput remap="configure">../configure                   \
     53<screen arch="default"><userinput remap="configure">../configure                   \
    5454    --prefix=/usr              \
    5555    --build=$(../config.guess) \
     
    5959    --disable-werror           \
    6060    --enable-64-bit-bfd</userinput></screen>
     61<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure                   \
     62    --prefix=/usr              \
     63    --build=$(../config.guess) \
     64    --host=$LFS_TGT            \
     65    --disable-nls              \
     66    --enable-shared            \
     67    --disable-werror           \
     68    --enable-64-bit-bfd        \
     69    --enable-multilib</userinput></screen>
    6170
    6271    <variablelist>
     
    7786          <para>Enables 64-bit support (on hosts with narrower word sizes).
    7887          May not be needed on 64-bit systems, but does no harm.</para>
     88        </listitem>
     89      </varlistentry>
     90
     91      <varlistentry arch="ml_32,ml_x32,ml_all">
     92        <term><parameter>--enable-multilib</parameter></term>
     93        <listitem>
     94          <para>Enables multilib support in bintutils.</para>
    7995        </listitem>
    8096      </varlistentry>
  • chapter06/gcc-pass2.xml

    r35d2578 r60870bc  
    5353mv -v gmp-&gmp-version; gmp
    5454tar -xf ../mpc-&mpc-version;.tar.gz
    55 mv -v mpc-&mpc-version; mpc</userinput></screen>
     55mv -v mpc-&mpc-version; mpc</userinput>
     56<userinput remap="pre" arch="ml_32,ml_x32,ml_all">tar -xf ../isl-&isl-version;.tar.xz
     57mv -v isl-&isl-version; isl</userinput></screen>
    5658
    57     <para>If building on x86_64, change the default directory name for 64-bit
     59
     60    <para arch="default">If building on x86_64, change the default directory name for 64-bit
    5861    libraries to <quote>lib</quote>:</para>
    5962
    60 <screen><userinput remap="pre">case $(uname -m) in
     63<screen arch="default"><userinput remap="pre">case $(uname -m) in
    6164  x86_64)
    6265    sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64
    6366  ;;
    6467esac</userinput></screen>
     68
     69    <para arch="ml_32,ml_x32,ml_all">Change the default directory name for
     70    libraries:</para>
     71
     72<screen arch="ml_32,ml_x32,ml_all"><userinput remap="pre">sed -e '/m64=/s/lib64/lib/' \
     73    -e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' \
     74    -i.orig gcc/config/i386/t-linux64</userinput></screen>
    6575<!--
    66     <para>Fix an issue with GCC-10.1 when building with a cross
    67     compiler:</para>
    68 
    6976<screen><userinput remap="pre">patch -Np1 -i ../&gcc-cross-patch;</userinput></screen>
    7077-->
     
    8592    <para>Now prepare GCC for compilation:</para>
    8693
    87 <screen><userinput remap="configure">../configure                                       \
     94<screen arch="default"><userinput remap="configure">../configure                                       \
    8895    --build=$(../config.guess)                     \
    8996    --host=$LFS_TGT                                \
     
    94101    --disable-nls                                  \
    95102    --disable-multilib                             \
     103    --disable-decimal-float                        \
     104    --disable-libatomic                            \
     105    --disable-libgomp                              \
     106    --disable-libquadmath                          \
     107    --disable-libssp                               \
     108    --disable-libvtv                               \
     109    --disable-libstdcxx                            \
     110    --enable-languages=c,c++</userinput></screen>
     111<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure"
     112    arch="ml_32">mlist=m64,m32</userinput><userinput remap="configure"
     113    arch="ml_x32">mlist=m64,mx32</userinput><userinput remap="configure"
     114    arch="ml_all">mlist=m64,m32,mx32</userinput>
     115<userinput remap="configure">../configure                                       \
     116    --build=$(../config.guess)                     \
     117    --host=$LFS_TGT                                \
     118    --prefix=/usr                                  \
     119    CC_FOR_TARGET=$LFS_TGT-gcc                     \
     120    --with-build-sysroot=$LFS                      \
     121    --enable-initfini-array                        \
     122    --disable-nls                                  \
     123    --enable-multilib --with-multilib-list=$mlist  \
    96124    --disable-decimal-float                        \
    97125    --disable-libatomic                            \
  • chapter06/ncurses.xml

    r35d2578 r60870bc  
    151151  </sect2>
    152152
     153  <!-- - - - - - - - - - -->
     154  <!-- Multilib - 32bit  -->
     155  <!-- - - - - - - - - - -->
     156  <sect2 arch="ml_32,ml_all">
     157    <title>Building Ncurses - 32bit</title>
     158
     159    <para>Clean previous build:</para>
     160
     161<screen><userinput remap="pre">make distclean</userinput></screen>
     162
     163    <para>Prepare Ncurses for compilation:</para>
     164
     165<screen><userinput remap="configure">CC="$LFS_TGT-gcc -m32"              \
     166CXX="$LFS_TGT-g++ -m32"             \
     167./configure --prefix=/usr           \
     168            --host=$LFS_TGT32       \
     169            --build=$(./config.guess)    \
     170            --libdir=/usr/lib32     \
     171            --mandir=/usr/share/man \
     172            --with-shared           \
     173            --without-debug         \
     174            --without-ada           \
     175            --without-normal        \
     176            --enable-pc-files       \
     177            --enable-widec          \
     178            --with-pkg-config-libdir=/usr/lib32/pkgconfig</userinput></screen>
     179
     180    <para>Compile the package:</para>
     181
     182<screen><userinput remap="make">make</userinput></screen>
     183
     184    <para>Install the package:</para>
     185
     186<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR TIC_PATH=$(pwd)/build/progs/tic install
     187ln -s libncursesw.so DESTDIR/usr/lib32/libcursesw.so
     188cp -Rv DESTDIR/usr/lib32/* $LFS/usr/lib32
     189rm -rf DESTDIR</userinput></screen>
     190
     191  </sect2><!-- m32 -->
     192
     193  <!-- - - - - - - - - - -->
     194  <!-- Multilib - x32bit -->
     195  <!-- - - - - - - - - - -->
     196  <sect2 arch="ml_x32,ml_all">
     197    <title>Building Ncurses - x32bit</title>
     198
     199    <para>Clean previous build:</para>
     200
     201<screen><userinput remap="pre">make distclean</userinput></screen>
     202
     203    <para>Prepare Ncurses for compilation:</para>
     204
     205<screen><userinput remap="configure">CC="$LFS_TGT-gcc -mx32"             \
     206CXX="$LFS_TGT-g++ -mx32"            \
     207./configure --prefix=/usr           \
     208            --host=$LFS_TGTX32      \
     209            --build=$(./config.guess)    \
     210            --libdir=/usr/libx32    \
     211            --mandir=/usr/share/man \
     212            --with-shared           \
     213            --without-debug         \
     214            --without-ada           \
     215            --without-normal        \
     216            --enable-pc-files       \
     217            --enable-widec          \
     218            --with-pkg-config-libdir=/usr/libx32/pkgconfig</userinput></screen>
     219
     220    <para>Compile the package:</para>
     221
     222<screen><userinput remap="make">make</userinput></screen>
     223
     224    <para>Install the package:</para>
     225
     226<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR TIC_PATH=$(pwd)/build/progs/tic install
     227ln -s libncursesw.so DESTDIR/usr/libx32/libcursesw.so
     228cp -Rv DESTDIR/usr/libx32/* $LFS/usr/libx32
     229rm -rf DESTDIR</userinput></screen>
     230
     231  </sect2><!-- mx32 -->
     232
    153233  <sect2 role="content">
    154234    <title/>
  • chapter07/changingowner.xml

    r35d2578 r60870bc  
    3939esac</userinput></screen>
    4040
     41  <para arch="ml_32,ml_x32,ml_all">Some more directories exists for
     42  multilib support. Change their ownership, too:</para>
     43<screen arch="ml_32,ml_x32,ml_all"><userinput arch="ml_32,ml_all">chown -R root:root $LFS/lib32</userinput>
     44<userinput arch="ml_x32,ml_all">chown -R root:root $LFS/libx32</userinput></screen>
     45 
    4146</sect1>
  • chapter07/cleanup.xml

    r35d2578 r60870bc  
    2424    While still in chroot, remove those files now:</para>
    2525
    26 <screen><userinput>find /usr/{lib,libexec} -name \*.la -delete</userinput></screen>
     26<screen><userinput>find /usr/{lib,libexec} -name \*.la -delete</userinput><userinput arch="ml_32">
     27find /usr/lib32 -name \*.la -delete</userinput><userinput arch="ml_x32">
     28find /usr/libx32 -name \*.la -delete</userinput><userinput arch="ml_all">
     29find /usr/lib{,x}32 -name \*.la -delete</userinput></screen>
    2730
    2831    <para>
  • chapter07/creatingdirs.xml

    r35d2578 r60870bc  
    4242install -dv -m 1777 /tmp /var/tmp</userinput></screen>
    4343
     44  <para arch="ml_32,ml_x32,ml_all">Required directories for multilib
     45  support has already been created while previous installation steps.</para>
     46
    4447  <para>Directories are, by default, created with permission mode 755, but
    4548  this is not desirable for all directories. In the commands above, two
  • chapter07/libstdc++-pass2.xml

    r35d2578 r60870bc  
    6363    <para>Prepare libstdc++ for compilation:</para>
    6464
    65 <screen><userinput remap="configure">../libstdc++-v3/configure            \
     65<screen arch="default"><userinput remap="configure">../libstdc++-v3/configure            \
    6666    CXXFLAGS="-g -O2 -D_GNU_SOURCE"  \
    6767    --prefix=/usr                    \
    6868    --disable-multilib               \
     69    --disable-nls                    \
     70    --host=$(uname -m)-lfs-linux-gnu \
     71    --disable-libstdcxx-pch</userinput></screen>
     72<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../libstdc++-v3/configure            \
     73    CXXFLAGS="-g -O2 -D_GNU_SOURCE"  \
     74    --prefix=/usr                    \
     75    --enable-multilib                \
    6976    --disable-nls                    \
    7077    --host=$(uname -m)-lfs-linux-gnu \
     
    99106      </varlistentry>
    100107
     108      <varlistentry arch="ml_32,ml_x32,ml_all">
     109        <term><parameter>--enable-multilib</parameter></term>
     110        <listitem>
     111          <para>This switch is set by default but it is added here
     112          explicitly for documentary purpose. The libstdc++ libraries
     113          will be built for every arch (m64, m32, mx32) which are
     114          made available in <xref linkend="ch-tools-gcc-pass1"/>.</para>
     115        </listitem>
     116      </varlistentry>
     117
    101118    </variablelist>
    102119
  • chapter07/util-linux.xml

    r35d2578 r60870bc  
    127127  </sect2>
    128128
     129  <!-- - - - - - - - - - -->
     130  <!-- Multilib - 32bit  -->
     131  <!-- - - - - - - - - - -->
     132 
     133  <sect2 arch="ml_32,ml_all" role="installation">
     134    <title>Installation of Util-linux - 32-bit</title>
     135
     136    <para>Clean previous build:</para>
     137
     138<screen><userinput remap="pre">make distclean</userinput></screen>
     139
     140    <para>Prepare Util-linux for compilation:</para>
     141
     142<screen><userinput remap="configure">CC="gcc -m32" \
     143./configure ADJTIME_PATH=/var/lib/hwclock/adjtime    \
     144            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
     145            --disable-chfn-chsh  \
     146            --disable-login      \
     147            --disable-nologin    \
     148            --disable-su         \
     149            --disable-setpriv    \
     150            --disable-runuser    \
     151            --disable-pylibmount \
     152            --disable-static     \
     153            --without-python     \
     154            --libdir=/usr/lib32      \
     155            --host=i686-pc-linux-gnu</userinput></screen>
     156
     157    <para>Compile the package:</para>
     158
     159<screen><userinput remap="make">make</userinput></screen>
     160
     161    <para>Install the package:</para>
     162
     163<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     164cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     165rm -rf DESTDIR</userinput></screen>
     166
     167  </sect2><!-- m32 -->
     168
     169  <!-- - - - - - - - - - -->
     170  <!-- Multilib - x32bit -->
     171  <!-- - - - - - - - - - -->
     172 
     173  <sect2 arch="ml_x32,ml_all" role="installation">
     174    <title>Installation of Util-linux - x32-bit</title>
     175
     176    <para>Clean previous build:</para>
     177
     178<screen><userinput remap="pre">make distclean</userinput></screen>
     179
     180    <para>Prepare Util-linux for compilation:</para>
     181
     182<screen><userinput remap="configure">CC="gcc -mx32" \
     183./configure ADJTIME_PATH=/var/lib/hwclock/adjtime    \
     184            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
     185            --disable-chfn-chsh  \
     186            --disable-login      \
     187            --disable-nologin    \
     188            --disable-su         \
     189            --disable-setpriv    \
     190            --disable-runuser    \
     191            --disable-pylibmount \
     192            --disable-static     \
     193            --without-python     \
     194            --libdir=/usr/libx32 \
     195            --host=x86_64-pc-linux-gnux32</userinput></screen>
     196
     197    <para>Compile the package:</para>
     198
     199<screen><userinput remap="make">make</userinput></screen>
     200
     201    <para>Install the package:</para>
     202
     203<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     204cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     205rm -rf DESTDIR</userinput></screen>
     206
     207  </sect2><!-- mx32 -->
     208
    129209  <sect2 role="content">
    130210    <title/>
  • chapter08/acl.xml

    r35d2578 r60870bc  
    6464
    6565  </sect2>
     66
     67  <!-- - - - - - - - - - -->
     68  <!-- Multilib - 32bit  -->
     69  <!-- - - - - - - - - - -->
     70 
     71  <sect2 arch="ml_32,ml_all" role="installation">
     72    <title>Installation of Acl - 32bit</title>
     73
     74    <para>Clean previous build:</para>
     75
     76<screen><userinput remap="pre">make distclean</userinput></screen>
     77
     78    <para>Prepare Xz for compilation:</para>
     79
     80<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     81    --prefix=/usr         \
     82    --disable-static      \
     83    --libdir=/usr/lib32   \
     84    --libexecdir=/usr/lib32   \
     85    --host=i686-pc-linux-gnu</userinput></screen>
     86
     87    <para>Compile the package:</para>
     88
     89<screen><userinput remap="make">make</userinput></screen>
     90
     91    <para>Install the package:</para>
     92
     93<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     94cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     95rm -rf DESTDIR</userinput></screen>
     96
     97  </sect2><!-- m32 -->
     98
     99  <!-- - - - - - - - - - -->
     100  <!-- Multilib - x32bit -->
     101  <!-- - - - - - - - - - -->
     102 
     103  <sect2 arch="ml_x32,ml_all" role="installation">
     104    <title>Installation of Acl - x32bit</title>
     105
     106    <para>Clean previous build:</para>
     107
     108<screen><userinput remap="pre">make distclean</userinput></screen>
     109
     110    <para>Prepare Xz for compilation:</para>
     111
     112<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     113    --prefix=/usr          \
     114    --disable-static       \
     115    --libdir=/usr/libx32   \
     116    --libexecdir=/usr/libx32   \
     117    --host=x86_64-pc-linux-gnux32</userinput></screen>
     118
     119    <para>Compile the package:</para>
     120
     121<screen><userinput remap="make">make</userinput></screen>
     122
     123    <para>Install the package:</para>
     124
     125<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     126cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     127rm -rf DESTDIR</userinput></screen>
     128
     129  </sect2><!-- mx32 -->
    66130
    67131  <sect2 id="contents-acl" role="content">
  • chapter08/attr.xml

    r35d2578 r60870bc  
    6565  </sect2>
    6666
     67  <!-- - - - - - - - - - -->
     68  <!-- Multilib - 32bit  -->
     69  <!-- - - - - - - - - - -->
     70 
     71  <sect2 arch="ml_32,ml_all" role="installation">
     72    <title>Installation of Attr - 32bit</title>
     73
     74    <para>Clean previous build:</para>
     75
     76<screen><userinput remap="pre">make distclean</userinput></screen>
     77
     78    <para>Prepare Attr for compilation:</para>
     79
     80<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     81    --prefix=/usr         \
     82    --disable-static      \
     83    --libdir=/usr/lib32 \
     84    --host=i686-pc-linux-gnu</userinput></screen>
     85
     86    <para>Compile the package:</para>
     87
     88<screen><userinput remap="make">make</userinput></screen>
     89
     90    <para>Install the package:</para>
     91
     92<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     93cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     94rm -rf DESTDIR</userinput></screen>
     95
     96  </sect2><!-- m32 -->
     97
     98  <!-- - - - - - - - - - -->
     99  <!-- Multilib - x32bit -->
     100  <!-- - - - - - - - - - -->
     101 
     102  <sect2 arch="ml_x32,ml_all" role="installation">
     103    <title>Installation of Attr - x32bit</title>
     104
     105    <para>Clean previous build:</para>
     106
     107<screen><userinput remap="pre">make distclean</userinput></screen>
     108
     109    <para>Prepare Attr for compilation:</para>
     110
     111<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     112    --prefix=/usr          \
     113    --disable-static       \
     114    --libdir=/usr/libx32   \
     115    --host=x86_64-pc-linux-gnux32</userinput></screen>
     116
     117    <para>Compile the package:</para>
     118
     119<screen><userinput remap="make">make</userinput></screen>
     120
     121    <para>Install the package:</para>
     122
     123<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     124cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     125rm -rf DESTDIR</userinput></screen>
     126
     127  </sect2><!-- mx32 -->
     128
    67129  <sect2 id="contents-attr" role="content">
    68130    <title>Contents of Attr</title>
  • chapter08/binutils.xml

    r35d2578 r60870bc  
    8383    <para>Prepare Binutils for compilation:</para>
    8484
    85 <screen><userinput remap="configure">../configure --prefix=/usr       \
     85<screen arch="default"><userinput remap="configure">../configure --prefix=/usr       \
    8686             --enable-gold       \
    8787             --enable-ld=default \
     
    9191             --enable-64-bit-bfd \
    9292             --with-system-zlib</userinput></screen>
     93<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure --prefix=/usr       \
     94             --enable-gold       \
     95             --enable-ld=default \
     96             --enable-plugins    \
     97             --enable-shared     \
     98             --disable-werror    \
     99             --enable-64-bit-bfd \
     100             --with-system-zlib  \
     101             --enable-multilib</userinput></screen>
     102
    93103    <variablelist>
    94104      <title>The meaning of the configure parameters:</title>
     
    122132           <para>Enables 64-bit support (on hosts with narrower word sizes).
    123133           May not be needed on 64-bit systems, but does no harm.</para>
     134        </listitem>
     135      </varlistentry>
     136
     137      <varlistentry arch="ml_32,ml_x32,ml_all">
     138        <term><parameter>--enable-multilib</parameter></term>
     139        <listitem>
     140          <para>Enables multilib support in bintutils.</para>
    124141        </listitem>
    125142      </varlistentry>
  • chapter08/bzip2.xml

    r35d2578 r60870bc  
    103103
    104104  </sect2>
     105
     106  <!-- - - - - - - - - - -->
     107  <!-- Multilib - 32bit  -->
     108  <!-- - - - - - - - - - -->
     109 
     110  <sect2 arch="ml_32,ml_all" role="installation">
     111    <title>Installation of Bzip2 - 32bit</title>
     112
     113    <para>Clean previous build:</para>
     114
     115<screen><userinput remap="pre">make clean</userinput></screen>
     116
     117    <para>Compile the package:</para>
     118
     119<screen><userinput remap="make">sed -e "s/^CC=.*/CC=gcc -m32/" -i Makefile{,-libbz2_so}
     120make -f Makefile-libbz2_so
     121make libbz2.a</userinput></screen>
     122
     123    <para>Install the package:</para>
     124
     125<screen><userinput remap="install">install -Dm755 libbz2.so.1.0.8 /usr/lib32/libbz2.so.1.0.8
     126ln -sf libbz2.so.1.0.8 /usr/lib32/libbz2.so
     127ln -sf libbz2.so.1.0.8 /usr/lib32/libbz2.so.1
     128ln -sf libbz2.so.1.0.8 /usr/lib32/libbz2.so.1.0
     129install -Dm644 libbz2.a /usr/lib32/libbz2.a</userinput></screen>
     130
     131  </sect2><!-- m32 -->
     132
     133  <!-- - - - - - - - - - -->
     134  <!-- Multilib - x32bit -->
     135  <!-- - - - - - - - - - -->
     136 
     137  <sect2 arch="ml_x32,ml_all" role="installation">
     138    <title>Installation of Bzip2 - x32bit</title>
     139
     140    <para>Clean previous build:</para>
     141
     142<screen><userinput remap="pre">make clean</userinput></screen>
     143
     144    <para>Compile the package:</para>
     145
     146<screen><userinput remap="make">sed -e "s/^CC=.*/CC=gcc -mx32/" -i Makefile{,-libbz2_so}
     147make -f Makefile-libbz2_so
     148make libbz2.a</userinput></screen>
     149
     150    <para>Install the package:</para>
     151
     152<screen><userinput remap="install">install -Dm755 libbz2.so.1.0.8 /usr/libx32/libbz2.so.1.0.8
     153ln -sf libbz2.so.1.0.8 /usr/libx32/libbz2.so
     154ln -sf libbz2.so.1.0.8 /usr/libx32/libbz2.so.1
     155ln -sf libbz2.so.1.0.8 /usr/libx32/libbz2.so.1.0
     156install -Dm644 libbz2.a /usr/libx32/libbz2.a</userinput></screen>
     157
     158  </sect2><!-- mx32 -->
    105159
    106160  <sect2 id="contents-bzip2" role="content">
  • chapter08/chapter08.xml

    r35d2578 r60870bc  
    3535  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mpfr.xml"/>
    3636  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mpc.xml"/>
     37  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="isl.xml"/>
    3738  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="attr.xml"/>
    3839  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="acl.xml"/>
  • chapter08/eudev.xml

    r35d2578 r60870bc  
    8585  </sect2>
    8686
     87  <!-- - - - - - - - - - -->
     88  <!-- Multilib - 32bit  -->
     89  <!-- - - - - - - - - - -->
     90 
     91  <sect2 arch="ml_32,ml_all" role="installation">
     92    <title>Installation of Eudev - 32bit</title>
     93
     94    <para>Clean previous build:</para>
     95
     96<screen><userinput remap="pre">make distclean</userinput></screen>
     97
     98    <para>Prepare Eudev for compilation:</para>
     99
     100<screen><userinput remap="configure">CC="gcc -m32" \
     101./configure --host=i686-pc-linux-gnu       \
     102            --prefix=/usr                  \
     103            --bindir=/usr/sbin             \
     104            --libdir=/usr/lib32            \
     105            --sysconfdir=/etc              \
     106            --disable-manpages             \
     107            --disable-static               \
     108            --config-cache</userinput></screen>
     109
     110    <para>Compile the package:</para>
     111
     112<screen><userinput remap="make">make</userinput></screen>
     113
     114    <para>Install the package:</para>
     115
     116<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     117cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     118rm -rf DESTDIR</userinput></screen>
     119
     120  </sect2><!-- m32 -->
     121
     122  <!-- - - - - - - - - - -->
     123  <!-- Multilib - x32bit -->
     124  <!-- - - - - - - - - - -->
     125 
     126  <sect2 arch="ml_x32,ml_all" role="installation">
     127    <title>Installation of Eudev - x32bit</title>
     128
     129    <para>Clean previous build:</para>
     130
     131<screen><userinput remap="pre">make distclean</userinput></screen>
     132
     133    <para>Prepare Eudev for compilation:</para>
     134
     135<screen><userinput remap="configure">CC="gcc -mx32" \
     136./configure --host=x86_64-lfs-linux-gnux32 \
     137            --prefix=/usr                  \
     138            --bindir=/usr/sbin             \
     139            --libdir=/usr/libx32           \
     140            --sysconfdir=/etc              \
     141            --disable-manpages             \
     142            --disable-static               \
     143            --config-cache</userinput></screen>
     144
     145    <para>Compile the package:</para>
     146
     147<screen><userinput remap="make">make</userinput></screen>
     148
     149    <para>Install the package:</para>
     150
     151<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     152cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     153rm -rf DESTDIR</userinput></screen>
     154
     155  </sect2><!-- mx32 -->
     156
    87157  <sect2 id="conf-eudev" role="configuration">
    88158    <title>Configuring Eudev</title>
  • chapter08/expat.xml

    r35d2578 r60870bc  
    6666  </sect2>
    6767
     68  <!-- - - - - - - - - - -->
     69  <!-- Multilib - 32bit  -->
     70  <!-- - - - - - - - - - -->
     71 
     72  <sect2 arch="ml_32,ml_all" role="installation">
     73    <title>Installation of Expat - 32bit</title>
     74
     75    <para>Clean previous build but keep precompiled doc because it
     76    cannot be rebuilt in this stage of the system:</para>
     77
     78<screen><userinput remap="pre">sed -e "/^am__append_1/ s/doc//" -i Makefile
     79make clean</userinput></screen>
     80
     81    <para>Prepare Expat for compilation:</para>
     82
     83<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     84    --prefix=/usr         \
     85    --libdir=/usr/lib32  \
     86    --host=i686-pc-linux-gnu</userinput></screen>
     87
     88    <para>Compile the package:</para>
     89
     90<screen><userinput remap="make">make</userinput></screen>
     91
     92    <para>Install the package:</para>
     93
     94<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     95cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     96rm -rf DESTDIR</userinput></screen>
     97
     98  </sect2><!-- m32 -->
     99
     100  <!-- - - - - - - - - - -->
     101  <!-- Multilib - x32bit -->
     102  <!-- - - - - - - - - - -->
     103 
     104  <sect2 arch="ml_x32,ml_all" role="installation">
     105    <title>Installation of Expat - x32bit</title>
     106
     107    <para>Clean previous build but keep precompiled doc because it
     108    cannot be rebuilt in this stage of the system:</para>
     109
     110<screen><userinput remap="pre">sed -e "/^am__append_1/ s/doc//" -i Makefile
     111make clean</userinput></screen>
     112
     113    <para>Prepare Expat for compilation:</para>
     114
     115<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     116    --prefix=/usr         \
     117    --libdir=/usr/libx32 \
     118    --host=x86_64-pc-linux-gnux32</userinput></screen>
     119
     120    <para>Compile the package:</para>
     121
     122<screen><userinput remap="make">make</userinput></screen>
     123
     124    <para>Install the package:</para>
     125
     126<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     127cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     128rm -rf DESTDIR</userinput></screen>
     129
     130  </sect2><!-- mx32 -->
     131
    68132  <sect2 id="contents-expat" role="content">
    69133    <title>Contents of Expat</title>
  • chapter08/file.xml

    r35d2578 r60870bc  
    6464  </sect2>
    6565
     66  <!-- - - - - - - - - - -->
     67  <!-- Multilib - 32bit  -->
     68  <!-- - - - - - - - - - -->
     69 
     70  <sect2 arch="ml_32,ml_all" role="installation">
     71    <title>Installation of File - 32bit</title>
     72
     73    <para>Clean previous build:</para>
     74
     75<screen><userinput remap="pre">make distclean</userinput></screen>
     76
     77    <para>Prepare File for compilation:</para>
     78
     79<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     80    --prefix=/usr         \
     81    --libdir=/usr/lib32   \
     82    --host=i686-pc-linux-gnu</userinput></screen>
     83
     84    <para>Compile the package:</para>
     85
     86<screen><userinput remap="make">make</userinput></screen>
     87
     88    <para>Install the package:</para>
     89
     90<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     91cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     92rm -rf DESTDIR</userinput></screen>
     93
     94  </sect2><!-- m32 -->
     95
     96  <!-- - - - - - - - - - -->
     97  <!-- Multilib - x32bit -->
     98  <!-- - - - - - - - - - -->
     99 
     100  <sect2 arch="ml_x32,ml_all" role="installation">
     101    <title>Installation of File - x32bit</title>
     102
     103    <para>Clean previous build:</para>
     104
     105<screen><userinput remap="pre">make distclean</userinput></screen>
     106
     107    <para>Prepare File for compilation:</para>
     108
     109<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     110    --prefix=/usr          \
     111    --libdir=/usr/libx32   \
     112    --host=x86_64-pc-linux-gnux32</userinput></screen>
     113
     114    <para>Compile the package:</para>
     115
     116<screen><userinput remap="make">make</userinput></screen>
     117
     118    <para>Install the package:</para>
     119
     120<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     121cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     122rm -rf DESTDIR</userinput></screen>
     123
     124  </sect2><!-- mx32 -->
    66125
    67126  <sect2 id="contents-file" role="content">
  • chapter08/gcc.xml

    r35d2578 r60870bc  
    5353    libraries to <quote>lib</quote>:</para>
    5454
    55 <screen><userinput remap="pre">case $(uname -m) in
     55<screen arch="default"><userinput remap="pre">case $(uname -m) in
    5656  x86_64)
    5757    sed -e '/m64=/s/lib64/lib/' \
     
    6060esac</userinput></screen>
    6161
     62    <para arch="ml_32,ml_x32,ml_all">Change the default directory name for 64-bit
     63    libraries to <quote>lib</quote>:</para>
     64
     65<screen arch="ml_32,ml_x32,ml_all"><userinput remap="pre">sed -e '/m64=/s/lib64/lib/' \
     66    -e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' \
     67    -i.orig gcc/config/i386/t-linux64</userinput></screen>
     68
    6269    <para>The GCC documentation recommends building GCC in a dedicated build directory:</para>
    6370
     
    6774    <para>Prepare GCC for compilation:</para>
    6875
    69 <screen><userinput remap="configure">../configure --prefix=/usr            \
     76<screen arch="default"><userinput remap="configure">../configure --prefix=/usr            \
    7077             LD=ld                    \
    7178             --enable-languages=c,c++ \
    7279             --disable-multilib       \
    7380             --disable-bootstrap      \
     81             --with-system-zlib</userinput></screen>
     82<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure"
     83  arch="ml_32" >mlist=m64,m32</userinput><userinput remap="configure"
     84  arch="ml_x32">mlist=m64,mx32</userinput><userinput remap="configure"
     85  arch="ml_all">mlist=m64,m32,mx32</userinput>
     86<userinput remap="configure">../configure --prefix=/usr               \
     87             LD=ld                       \
     88             --enable-languages=c,c++    \
     89             --enable-multilib           \
     90             --with-multilib-list=$mlist \
     91             --disable-bootstrap         \
    7492             --with-system-zlib</userinput></screen>
    7593
     
    270288SEARCH_DIR("/usr/lib");</computeroutput></screen>
    271289
    272    <para>A 32-bit system may see a few different directories. For example, here
     290   <para arch="default">A 32-bit system may see a few different directories. For example, here
    273291   is the output from an i686 machine:</para>
    274292
    275 <screen><computeroutput>SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
     293<!-- not using entities here as the dir names has nothing to do with multilib -->
     294<screen arch="default"><computeroutput>SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
    276295SEARCH_DIR("/usr/local/lib32")
    277296SEARCH_DIR("/lib32")
  • chapter08/glibc.xml

    r35d2578 r60870bc  
    7070    <para>Prepare Glibc for compilation:</para>
    7171
    72 <screen><userinput remap="configure">../configure --prefix=/usr                            \
     72<screen arch="default"><userinput remap="configure">../configure --prefix=/usr                            \
    7373             --disable-werror                         \
    7474             --enable-kernel=&min-kernel;                      \
    7575             --enable-stack-protector=strong          \
    7676             --with-headers=/usr/include              \
     77             libc_cv_slibdir=/usr/lib</userinput></screen>
     78<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure --prefix=/usr                            \
     79             --disable-werror                         \
     80             --enable-kernel=&min-kernel;                      \
     81             --enable-stack-protector=strong          \
     82             --with-headers=/usr/include              \
     83             --enable-multi-arch                      \
    7784             libc_cv_slibdir=/usr/lib</userinput></screen>
    7885
     
    470477  </sect2>
    471478
     479  <!-- - - - - - - - - - -->
     480  <!-- Multilib - 32bit  -->
     481  <!-- - - - - - - - - - -->
     482  <sect2 arch="ml_32,ml_all">
     483    <title>Building Glibc - 32bit</title>
     484
     485    <para>Now recompile for m32. The extracted source can be
     486    reused but needs to be cleaned before installing the m32
     487    version of Glibc.</para>
     488
     489    <para>Clear the build directory and remove artefacts from
     490    previous build:</para>
     491     
     492<screen><userinput remap="pre">rm -rf ./*
     493find .. -name "*.a" -delete</userinput></screen>
     494
     495    <para>Configure Glibc for m32 with the following commands:</para>
     496
     497<screen><userinput remap="configure">CC="gcc -m32" CXX="g++ -m32" \
     498../configure                             \
     499      --prefix=/usr                      \
     500      --host=i686-pc-linux-gnu           \
     501      --build=$(../scripts/config.guess) \
     502      --enable-kernel=&min-kernel;                \
     503      --with-headers=/usr/include        \
     504      --enable-multi-arch                \
     505      --libdir=/usr/lib32                \
     506      --libexecdir=/usr/lib32            \
     507      libc_cv_slibdir=/usr/lib32</userinput></screen>
     508
     509    <para>Compile the package:</para>
     510
     511<screen><userinput remap="make">make</userinput></screen>
     512
     513    <para>Install the package:</para>
     514
     515<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     516cp -a DESTDIR/usr/lib32/* /usr/lib32/
     517install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-32.h \
     518               /usr/include/gnu/</userinput></screen>
     519<!-- no longer required as they are created in chap5
     520ln -svf ../lib32/ld-linux.so.2 /lib/ld-linux.so.2
     521-->
     522
     523    <para>Add the library name to the dynamic loader config:</para>
     524
     525<screen role="install"><userinput>echo "/usr/lib32" &gt;&gt; /etc/ld.so.conf</userinput></screen>
     526
     527    <caution>
     528      <para>At this point, it is imperative to stop and ensure that the basic
     529      functions (compiling and linking) of the new toolchain are working as
     530      expected. To perform a sanity check, run the following commands:</para>
     531
     532<screen><userinput>echo 'int main(){}' &gt; dummy.c
     533gcc -m32 dummy.c
     534readelf -l a.out | grep '/ld-linux'</userinput></screen>
     535
     536      <para>If everything is working correctly, there should be no errors,
     537      and the output of the last command will be of the form:</para>
     538
     539<screen><computeroutput>[Requesting program interpreter: /lib/ld-linux.so.2]</computeroutput></screen>
     540
     541      <para>If the output is not shown as above or there was no output at all,
     542      then something is wrong. Investigate and retrace the steps to find out
     543      where the problem is and correct it. This issue must be resolved before
     544      continuing on.</para>
     545
     546      <para>Once all is well, clean up the test files:</para>
     547
     548<screen><userinput>rm -v dummy.c a.out</userinput></screen>
     549
     550    </caution>
     551
     552  </sect2><!-- m32 -->
     553
     554  <!-- - - - - - - - - - -->
     555  <!-- Multilib - x32bit -->
     556  <!-- - - - - - - - - - -->
     557 
     558  <sect2 arch="ml_x32,ml_all">
     559    <title>Building Glibc - x32bit</title>
     560
     561    <para>Now recompile for mx32. The extracted source can be
     562    reused but needs to be cleaned before installing the mx32
     563    version of Glibc.</para>
     564
     565    <para>Clear the build directory and remove artefacts from
     566    previous build:</para>
     567     
     568<screen><userinput remap="pre">rm -rf ./*
     569find .. -name "*.a" -delete</userinput></screen>
     570
     571    <para>Configure Glibc for mx32 with the following commands:</para>
     572
     573<screen><userinput remap="configure">CC="gcc -mx32" CXX="g++ -mx32" \
     574../configure                             \
     575      --prefix=/usr                      \
     576      --host=x86_64-pc-linux-gnux32      \
     577      --build=$(../scripts/config.guess) \
     578      --enable-kernel=&min-kernel;                \
     579      --with-headers=/usr/include        \
     580      --enable-multi-arch                \
     581      --libdir=/usr/libx32               \
     582      --libexecdir=/usr/libx32           \
     583      libc_cv_slibdir=/usr/libx32</userinput></screen>
     584
     585    <para>Compile the package:</para>
     586
     587<screen><userinput remap="make">make</userinput></screen>
     588
     589    <para>Install the package:</para>
     590
     591<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     592cp -a DESTDIR/usr/libx32/* /usr/libx32/
     593install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-x32.h \
     594               /usr/include/gnu/</userinput></screen>
     595<!-- no longer required as they are created in chap5
     596ln -svf ../libx32/ld-linux-x32.so.2 /lib/ld-linux-x32.so.2
     597-->
     598    <para>Add the library name to the dynamic loader config:</para>
     599
     600<screen role="install"><userinput>echo "/usr/libx32" &gt;&gt; /etc/ld.so.conf</userinput></screen>
     601
     602    <caution>
     603      <para>At this point, it is imperative to stop and ensure that the basic
     604      functions (compiling and linking) of the new toolchain are working as
     605      expected. To perform a sanity check, run the following commands:</para>
     606
     607<screen><userinput>echo 'int main(){}' &gt; dummy.c
     608gcc -mx32 dummy.c
     609readelf -l a.out | grep '/ld-linux-x32'</userinput></screen>
     610
     611      <para>If everything is working correctly, there should be no errors,
     612      and the output of the last command will be of the form:</para>
     613
     614<screen><computeroutput>[Requesting program interpreter: /libx32/ld-linux-x32.so.2]</computeroutput></screen>
     615
     616      <para>If the output is not shown as above or there was no output at all,
     617      then something is wrong. Investigate and retrace the steps to find out
     618      where the problem is and correct it. This issue must be resolved before
     619      continuing on.</para>
     620
     621      <para>Once all is well, clean up the test files:</para>
     622
     623<screen><userinput>rm -v dummy.c a.out</userinput></screen>
     624
     625    </caution>
     626
     627  </sect2><!-- mx32 -->
     628
    472629  <sect2 id="contents-glibc" role="content">
    473630    <title>Contents of Glibc</title>
  • chapter08/gmp.xml

    r35d2578 r60870bc  
    121121  </sect2>
    122122
     123  <!-- - - - - - - - - - -->
     124  <!-- Multilib - 32bit  -->
     125  <!-- - - - - - - - - - -->
     126
     127  <sect2 arch="ml_32,ml_all" role="installation">
     128    <title>Installation of GMP - 32bit</title>
     129
     130    <para>Clean previous build:</para>
     131
     132<screen><userinput remap="pre">make distclean</userinput></screen>
     133
     134    <para>Generic libraries can be created by running
     135    the following:</para>
     136
     137<screen role="nodump"><userinput remap="pre">cp -v configfsf.guess config.guess
     138cp -v configfsf.sub   config.sub</userinput></screen>
     139
     140    <para>Prepare GMP for compilation:</para>
     141
     142<screen><userinput remap="configure">ABI="32" \
     143CFLAGS="-m32 -O2 -pedantic -fomit-frame-pointer -mtune=generic -march=i686" \
     144CXXFLAGS="$CFLAGS" \
     145PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \
     146./configure                      \
     147    --host=i686-pc-linux-gnu     \
     148    --prefix=/usr                \
     149    --disable-static             \
     150    --enable-cxx                 \
     151    --libdir=/usr/lib32          \
     152    --includedir=/usr/include/m32/gmp</userinput></screen>
     153
     154    <variablelist>
     155      <title>The meaning of the new configure options:</title>
     156
     157      <varlistentry>
     158        <term><parameter>--includedir=/usr/include/m32/gmp</parameter></term>
     159        <listitem>
     160          <para>Some definitions in gmp.h differs for each arch but
     161          has same name. Therefore, the headers must be separated from
     162          each other.</para>
     163        </listitem>
     164      </varlistentry>
     165
     166    </variablelist>
     167
     168    <para>Compile the package:</para>
     169
     170<screen><userinput remap="make">sed -i 's/$(exec_prefix)\/include/$\(includedir\)/' Makefile
     171make</userinput></screen>
     172
     173    <important>
     174      <para>The test suite for GMP in this section is considered critical.
     175      Do not skip it under any circumstances.</para>
     176    </important>
     177
     178    <para>Test the results:</para>
     179
     180<screen><userinput remap="test">make check 2>&amp;1 | tee gmp-check-log</userinput></screen>
     181 
     182    <para>Ensure that all 197 tests in the test suite passed.
     183    Check the results by issuing the following command:</para>
     184
     185<screen><userinput remap="test">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</userinput></screen>
     186
     187    <para>Install the package:</para>
     188
     189<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     190cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     191cp -Rv DESTDIR/usr/include/m32/* /usr/include/m32/
     192rm -rf DESTDIR</userinput></screen>
     193
     194  </sect2><!-- m32 -->
     195
     196  <!-- - - - - - - - - - -->
     197  <!-- Multilib - x32bit -->
     198  <!-- - - - - - - - - - -->
     199
     200  <sect2 arch="ml_x32,ml_all" role="installation">
     201    <title>Installation of GMP - x32-bit</title>
     202
     203    <para>Clean previous build:</para>
     204
     205<screen><userinput remap="pre">make distclean</userinput></screen>
     206
     207    <para>Generic libraries can be created by running
     208    the following:</para>
     209
     210<screen role="nodump"><userinput remap="pre">cp -v configfsf.guess config.guess
     211cp -v configfsf.sub   config.sub</userinput></screen>
     212
     213    <para>Prepare GMP for compilation:</para>
     214
     215<screen><userinput remap="configure">ABI="x32" \
     216CFLAGS="-mx32 -O2 -pedantic -fomit-frame-pointer -mtune=generic -march=x86-64" \
     217CXXFLAGS="$CFLAGS" \
     218PKG_CONFIG_PATH="/usr/libx32/pkgconfig" \
     219./configure                       \
     220    --host=x86_64-pc-linux-gnux32 \
     221    --prefix=/usr                 \
     222    --disable-static              \
     223    --enable-cxx                  \
     224    --libdir=/usr/libx32          \
     225    --includedir=/usr/include/mx32/gmp</userinput></screen>
     226
     227    <para>Compile the package:</para>
     228
     229<screen><userinput remap="make">sed -i 's/$(exec_prefix)\/include/$\(includedir\)/' Makefile
     230make</userinput></screen>
     231
     232    <important>
     233      <para>The test suite for GMP in this section is considered critical.
     234      Do not skip it under any circumstances.</para>
     235    </important>
     236
     237    <para>Test the results:</para>
     238
     239<screen><userinput remap="test">make check 2>&amp;1 | tee gmp-check-log</userinput></screen>
     240 
     241    <para>Ensure that all 197 tests in the test suite passed.
     242    Check the results by issuing the following command:</para>
     243
     244<screen><userinput remap="test">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</userinput></screen>
     245
     246    <para>Install the package:</para>
     247
     248<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     249cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     250cp -Rv DESTDIR/usr/include/mx32/* /usr/include/mx32/
     251rm -rf DESTDIR</userinput></screen>
     252
     253  </sect2><!-- mx32 -->
     254
    123255  <sect2 id="contents-gmp" role="content">
    124256    <title>Contents of GMP</title>
  • chapter08/kmod.xml

    r35d2578 r60870bc  
    8383
    8484  </sect2>
     85
     86  <!-- - - - - - - - - - -->
     87  <!-- Multilib - 32bit  -->
     88  <!-- - - - - - - - - - -->
     89 
     90  <sect2 arch="ml_32,ml_all" role="installation">
     91    <title>Installation of Kmod - 32bit</title>
     92
     93    <para>Clean previous build but keep man pages as they cannot
     94    be recreated since xsltproc isn't installed yet:</para>
     95
     96<screen><userinput remap="pre">sed -e "s/^CLEANFILES =.*/CLEANFILES =/" -i man/Makefile
     97make clean</userinput></screen>
     98
     99    <para>Prepare Kmod for compilation:</para>
     100
     101<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     102    --host=i686-pc-linux-gnu      \
     103    --prefix=/usr                 \
     104    --libdir=/usr/lib32           \
     105    --sysconfdir=/etc             \
     106    --with-xz                     \
     107    --with-zlib                   \
     108    --with-rootlibdir=/usr/lib32</userinput></screen>
     109
     110    <para>Compile the package:</para>
     111
     112<screen><userinput remap="make">make</userinput></screen>
     113
     114    <para>Install the package:</para>
     115
     116<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     117cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     118rm -rf DESTDIR</userinput></screen>
     119
     120  </sect2><!-- m32 -->
     121
     122  <!-- - - - - - - - - - -->
     123  <!-- Multilib - x32bit -->
     124  <!-- - - - - - - - - - -->
     125 
     126  <sect2 arch="ml_x32,ml_all" role="installation">
     127    <title>Installation of Kmod - x32bit</title>
     128
     129    <para>Clean previous build but keep man pages as they cannot
     130    be recreated since xsltproc isn't installed yet:</para>
     131
     132<screen><userinput remap="pre">sed -e "s/^CLEANFILES =.*/CLEANFILES =/" -i man/Makefile
     133make clean</userinput></screen>
     134
     135    <para>Prepare Kmod for compilation:</para>
     136
     137<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     138    --host=x86_64-pc-linux-gnux32 \
     139    --prefix=/usr                 \
     140    --libdir=/usr/libx32          \
     141    --sysconfdir=/etc             \
     142    --with-xz                     \
     143    --with-zlib                   \
     144    --with-rootlibdir=/usr/libx32</userinput></screen>
     145
     146    <para>Compile the package:</para>
     147
     148<screen><userinput remap="make">make</userinput></screen>
     149
     150    <para>Install the package:</para>
     151
     152<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     153cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     154rm -rf DESTDIR</userinput></screen>
     155
     156  </sect2><!-- mx32 -->
    85157
    86158  <sect2 id="contents-kmod" role="content">
  • chapter08/libcap.xml

    r35d2578 r60870bc  
    8080  </sect2>
    8181
     82  <!-- - - - - - - - - - -->
     83  <!-- Multilib - 32bit  -->
     84  <!-- - - - - - - - - - -->
     85 
     86  <sect2 arch="ml_32,ml_all" role="installation">
     87    <title>Installation of Libcap - 32bit</title>
     88
     89    <para>Clean previous build:</para>
     90
     91<screen><userinput remap="pre">make distclean</userinput></screen>
     92
     93    <para>Compile the package:</para>
     94
     95<screen><userinput remap="make">make CC="gcc -m32 -march=i686"</userinput></screen>
     96
     97    <para>Install the package:</para>
     98
     99<screen><userinput remap="install">make CC="gcc -m32 -march=i686" lib=lib32 prefix=$PWD/DESTDIR/usr -C libcap install
     100cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     101sed -e "s|^libdir=.*|libdir=/usr/lib32|" -i /usr/lib32/pkgconfig/lib{cap,psx}.pc
     102chmod -v 755 /usr/lib32/libcap.so.&libcap-version;
     103rm -rf DESTDIR</userinput></screen>
     104
     105  </sect2><!-- m32 -->
     106
     107  <!-- - - - - - - - - - -->
     108  <!-- Multilib - x32bit -->
     109  <!-- - - - - - - - - - -->
     110 
     111  <sect2 arch="ml_x32,ml_all" role="installation">
     112    <title>Installation of Libcap - x32bit</title>
     113
     114    <para>Clean previous build:</para>
     115
     116<screen><userinput remap="pre">make distclean</userinput></screen>
     117
     118    <para>Compile the package:</para>
     119
     120<screen><userinput remap="make">make CC="gcc -mx32 -march=x86-64"</userinput></screen>
     121
     122    <para>Install the package:</para>
     123
     124<screen><userinput remap="install">make CC="gcc -mx32 -march=x86-64" lib=libx32 prefix=$PWD/DESTDIR/usr -C libcap install
     125cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     126sed -e "s|^libdir=.*|libdir=/usr/libx32|" -i /usr/libx32/pkgconfig/lib{cap,psx}.pc
     127chmod -v 755 /usr/libx32/libcap.so.&libcap-version;
     128rm -rf DESTDIR</userinput></screen>
     129
     130  </sect2><!-- mx32 -->
     131
    82132  <sect2 id="contents-libcap" role="content">
    83133    <title>Contents of Libcap</title>
  • chapter08/libelf.xml

    r35d2578 r60870bc  
    6969  </sect2>
    7070
     71  <!-- - - - - - - - - - -->
     72  <!-- Multilib - 32bit  -->
     73  <!-- - - - - - - - - - -->
     74 
     75  <sect2 arch="ml_32,ml_all" role="installation">
     76    <title>Installation of Libelf - 32bit</title>
     77
     78    <para>Clean previous build:</para>
     79
     80<screen><userinput remap="pre">make distclean</userinput></screen>
     81
     82    <para>Prepare Libtool for compilation:</para>
     83
     84<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     85    --host=i686-pc-linux-gnu \
     86    --prefix=/usr            \
     87    --libdir=/usr/lib32      \
     88    --disable-debuginfod     \
     89    --enable-libdebuginfod=dummy</userinput></screen>
     90
     91    <para>Compile the package:</para>
     92
     93<screen><userinput remap="make">make</userinput></screen>
     94
     95    <para>Install the package:</para>
     96
     97<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR -C libelf install
     98install -vDm644 config/libelf.pc DESTDIR/usr/lib32/pkgconfig/libelf.pc
     99cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     100rm -rf DESTDIR</userinput></screen>
     101
     102  </sect2><!-- m32 -->
     103
     104  <!-- - - - - - - - - - -->
     105  <!-- Multilib - x32bit -->
     106  <!-- - - - - - - - - - -->
     107 
     108  <sect2 arch="ml_x32,ml_all" role="installation">
     109    <title>Installation of Libelf - x32bit</title>
     110
     111    <para>Clean previous build:</para>
     112
     113<screen><userinput remap="pre">make distclean</userinput></screen>
     114
     115    <para>Prepare Libtool for compilation:</para>
     116
     117<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     118    --host=x86_64-pc-linux-gnux32 \
     119    --prefix=/usr                 \
     120    --libdir=/usr/libx32          \
     121    --disable-debuginfod          \
     122    --enable-libdebuginfod=dummy</userinput></screen>
     123
     124    <para>Compile the package:</para>
     125
     126<screen><userinput remap="make">make</userinput></screen>
     127
     128    <para>Install the package:</para>
     129
     130<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR -C libelf install
     131install -vDm644 config/libelf.pc DESTDIR/usr/libx32/pkgconfig/libelf.pc
     132cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     133rm -rf DESTDIR</userinput></screen>
     134
     135  </sect2><!-- mx32 -->
     136
    71137  <sect2 id="contents-elfutils" role="content">
    72138    <title>Contents of Libelf</title>
  • chapter08/libffi.xml

    r35d2578 r60870bc  
    104104  </sect2>
    105105
     106  <!-- - - - - - - - - - -->
     107  <!-- Multilib - 32bit  -->
     108  <!-- - - - - - - - - - -->
     109 
     110  <sect2 arch="ml_32,ml_all" role="installation">
     111    <title>Installation of Libffi - 32bit</title>
     112
     113    <para>Clean previous build:</para>
     114
     115<screen><userinput remap="pre">make distclean</userinput></screen>
     116
     117    <para>Prepare Libffi for compilation:</para>
     118
     119<screen><userinput remap="configure">CC="gcc -m32" CXX="g++ -m32" ./configure \
     120    --host=i686-pc-linux-gnu \
     121    --prefix=/usr            \
     122    --libdir=/usr/lib32      \
     123    --disable-static         \
     124    --with-gcc-arch=i686     \
     125    --disable-exec-static-tramp</userinput></screen>
     126
     127    <para>Compile the package:</para>
     128
     129<screen><userinput remap="make">make</userinput></screen>
     130
     131    <para>To test the results, issue:</para>
     132
     133<screen><userinput remap="test">make check</userinput></screen>
     134
     135    <para>Install the package:</para>
     136
     137<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     138cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     139rm -rf DESTDIR</userinput></screen>
     140
     141  </sect2><!-- m32 -->
     142
     143  <!-- - - - - - - - - - -->
     144  <!-- Multilib - x32bit -->
     145  <!-- - - - - - - - - - -->
     146 
     147  <sect2 arch="ml_x32,ml_all" role="installation">
     148    <title>Installation of Libffi - x32bit</title>
     149
     150    <para>Clean previous build:</para>
     151
     152<screen><userinput remap="pre">make distclean</userinput></screen>
     153
     154    <para>Prepare Libffi for compilation:</para>
     155
     156<screen><userinput remap="configure">CC="gcc -mx32" CXX="g++ -mx32" ./configure \
     157    --host=x86_64-unknown-linux-gnux32 \
     158    --prefix=/usr            \
     159    --libdir=/usr/libx32     \
     160    --disable-static         \
     161    --with-gcc-arch=x86_64   \
     162    --disable-exec-static-tramp</userinput></screen>
     163
     164    <para>Compile the package:</para>
     165
     166<screen><userinput remap="make">make</userinput></screen>
     167
     168    <para>To test the results, issue:</para>
     169
     170<screen><userinput remap="test">make check</userinput></screen>
     171
     172    <para>Install the package:</para>
     173
     174<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     175cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     176rm -rf DESTDIR</userinput></screen>
     177
     178  </sect2><!-- mx32 -->
     179
    106180  <sect2 id="contents-libffi" role="content">
    107181    <title>Contents of Libffi</title>
     
    134208
    135209</sect1>
    136 
  • chapter08/libtool.xml

    r35d2578 r60870bc  
    7878  </sect2>
    7979
     80  <!-- - - - - - - - - - -->
     81  <!-- Multilib - 32bit  -->
     82  <!-- - - - - - - - - - -->
     83 
     84  <sect2 arch="ml_32,ml_all" role="installation">
     85    <title>Installation of Libtool - 32bit</title>
     86
     87    <para>Clean previous build:</para>
     88
     89<screen><userinput remap="pre">make distclean</userinput></screen>
     90
     91    <para>Prepare Libtool for compilation:</para>
     92
     93<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     94    --host=i686-pc-linux-gnu \
     95    --prefix=/usr            \
     96    --libdir=/usr/lib32</userinput></screen>
     97
     98    <para>Compile the package:</para>
     99
     100<screen><userinput remap="make">make</userinput></screen>
     101
     102    <para>Install the package:</para>
     103
     104<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     105cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     106rm -rf DESTDIR</userinput></screen>
     107
     108  </sect2><!-- m32 -->
     109
     110  <!-- - - - - - - - - - -->
     111  <!-- Multilib - x32bit -->
     112  <!-- - - - - - - - - - -->
     113 
     114  <sect2 arch="ml_x32,ml_all" role="installation">
     115    <title>Installation of Libtool - x32bit</title>
     116
     117    <para>Clean previous build:</para>
     118
     119<screen><userinput remap="pre">make distclean</userinput></screen>
     120
     121    <para>Prepare Libtool for compilation:</para>
     122
     123<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     124    --host=x86_64-pc-linux-gnux32 \
     125    --prefix=/usr                 \
     126    --libdir=/usr/libx32</userinput></screen>
     127
     128    <para>Compile the package:</para>
     129
     130<screen><userinput remap="make">make</userinput></screen>
     131
     132    <para>Install the package:</para>
     133
     134<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     135cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     136rm -rf DESTDIR</userinput></screen>
     137
     138  </sect2><!-- mx32 -->
    80139
    81140  <sect2 id="contents-libtool" role="content">
  • chapter08/ncurses.xml

    r35d2578 r60870bc  
    150150
    151151  </sect2>
     152
     153  <!-- - - - - - - - - - -->
     154  <!-- Multilib - 32bit  -->
     155  <!-- - - - - - - - - - -->
     156  <sect2 arch="ml_32,ml_all">
     157    <title>Building Ncurses - 32bit</title>
     158
     159    <para>Clean previous build:</para>
     160
     161<screen><userinput remap="pre">make distclean</userinput></screen>
     162
     163    <para>Prepare Ncurses for compilation:</para>
     164
     165<screen><userinput remap="configure">CC="gcc -m32" CXX="g++ -m32" \
     166./configure --prefix=/usr           \
     167            --host=i686-pc-linux-gnu \
     168            --libdir=/usr/lib32     \
     169            --mandir=/usr/share/man \
     170            --with-shared           \
     171            --without-debug         \
     172            --without-normal        \
     173            --enable-pc-files       \
     174            --enable-widec          \
     175            --with-pkg-config-libdir=/usr/lib32/pkgconfig</userinput></screen>
     176
     177    <para>Compile the package:</para>
     178
     179<screen><userinput remap="make">make</userinput></screen>
     180
     181    <para>Install the package:</para>
     182
     183<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     184mkdir -p DESTDIR/usr/lib32/pkgconfig
     185for lib in ncurses form panel menu ; do
     186    rm -vf                    DESTDIR/usr/lib32/lib${lib}.so
     187    echo "INPUT(-l${lib}w)" > DESTDIR/usr/lib32/lib${lib}.so
     188    ln -svf ${lib}w.pc        DESTDIR/usr/lib32/pkgconfig/$lib.pc
     189done
     190rm -vf                     DESTDIR/usr/lib32/libcursesw.so
     191echo "INPUT(-lncursesw)" > DESTDIR/usr/lib32/libcursesw.so
     192ln -sfv libncurses.so      DESTDIR/usr/lib32/libcurses.so
     193cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     194rm -rf DESTDIR</userinput></screen>
     195
     196  </sect2><!-- m32 -->
     197
     198  <!-- - - - - - - - - - -->
     199  <!-- Multilib - x32bit -->
     200  <!-- - - - - - - - - - -->
     201  <sect2 arch="ml_x32,ml_all">
     202    <title>Building Ncurses - x32bit</title>
     203
     204    <para>Clean previous build:</para>
     205
     206<screen><userinput remap="pre">make distclean</userinput></screen>
     207
     208    <para>Prepare Ncurses for compilation:</para>
     209
     210<screen><userinput remap="configure">CC="gcc -mx32" CXX="g++ -mx32" \
     211./configure --prefix=/usr           \
     212            --host=x86_64-pc-linux-gnux32 \
     213            --libdir=/usr/libx32    \
     214            --mandir=/usr/share/man \
     215            --with-shared           \
     216            --without-debug         \
     217            --without-normal        \
     218            --enable-pc-files       \
     219            --enable-widec          \
     220            --with-pkg-config-libdir=/usr/libx32/pkgconfig</userinput></screen>
     221
     222    <para>Compile the package:</para>
     223
     224<screen><userinput remap="make">make</userinput></screen>
     225
     226    <para>Install the package:</para>
     227
     228<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     229mkdir -p DESTDIR/usr/libx32/pkgconfig
     230for lib in ncurses form panel menu ; do
     231    rm -vf                    DESTDIR/usr/libx32/lib${lib}.so
     232    echo "INPUT(-l${lib}w)" > DESTDIR/usr/libx32/lib${lib}.so
     233    ln -svf ${lib}w.pc        DESTDIR/usr/libx32/pkgconfig/$lib.pc
     234done
     235rm -vf                     DESTDIR/usr/libx32/libcursesw.so
     236echo "INPUT(-lncursesw)" > DESTDIR/usr/libx32/libcursesw.so
     237ln -sfv libncurses.so      DESTDIR/usr/libx32/libcurses.so
     238cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     239rm -rf DESTDIR</userinput></screen>
     240
     241  </sect2><!-- mx32 -->
    152242
    153243  <sect2 id="contents-ncurses" role="content">
  • chapter08/openssl.xml

    r35d2578 r60870bc  
    9999
    100100  </sect2>
     101
     102  <!-- - - - - - - - - - -->
     103  <!-- Multilib - 32bit  -->
     104  <!-- - - - - - - - - - -->
     105 
     106  <sect2 arch="ml_32,ml_all" role="installation">
     107    <title>Installation of OpenSSL - 32bit</title>
     108
     109    <para>Clean previous build:</para>
     110
     111<screen><userinput remap="pre">make distclean</userinput></screen>
     112
     113    <para>Prepare OpenSSL for compilation:</para>
     114
     115<screen><userinput remap="configure">MACHINE="i686"             \
     116CC="gcc -m32 -march=i686"  \
     117CXX="g++ -m32 -march=i686" \
     118    ./config               \
     119    --prefix=/usr          \
     120    --openssldir=/etc/ssl  \
     121    --libdir=lib32         \
     122    shared                 \
     123    zlib-dynamic</userinput></screen>
     124
     125    <para>Compile the package:</para>
     126
     127<screen><userinput remap="make">make</userinput></screen>
     128
     129    <para>Install the package:</para>
     130
     131<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     132cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     133rm -rf DESTDIR</userinput></screen>
     134
     135  </sect2><!-- m32 -->
     136
     137  <!-- - - - - - - - - - -->
     138  <!-- Multilib - x32bit -->
     139  <!-- - - - - - - - - - -->
     140 
     141  <sect2 arch="ml_x32,ml_all" role="installation">
     142    <title>Installation of OpenSSL - x32bit</title>
     143
     144    <para>Clean previous build:</para>
     145
     146<screen><userinput remap="pre">make distclean</userinput></screen>
     147
     148    <para>Prepare OpenSSL for compilation:</para>
     149
     150<screen><userinput remap="configure">MACHINE="x86_64"          \
     151CC="gcc -mx32"            \
     152CXX="g++ -mx32"           \
     153    ./config              \
     154    --prefix=/usr         \
     155    --openssldir=/etc/ssl \
     156    --libdir=libx32       \
     157    shared                \
     158    zlib-dynamic</userinput></screen>
     159
     160    <para>Compile the package:</para>
     161
     162<screen><userinput remap="make">make</userinput></screen>
     163
     164    <para>Install the package:</para>
     165
     166<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     167cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     168rm -rf DESTDIR</userinput></screen>
     169
     170  </sect2><!-- mx32 -->
    101171
    102172  <sect2 id="contents-openssl" role="content">
  • chapter08/readline.xml

    r35d2578 r60870bc  
    101101  </sect2>
    102102
     103  <!-- - - - - - - - - - -->
     104  <!-- Multilib - 32bit  -->
     105  <!-- - - - - - - - - - -->
     106 
     107  <sect2 arch="ml_32,ml_all" role="installation">
     108    <title>Installation of Readline - 32bit</title>
     109
     110    <para>Clean previous build:</para>
     111
     112<screen><userinput remap="pre">make distclean</userinput></screen>
     113
     114    <para>Prepare Readline for compilation:</para>
     115
     116<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     117    --host=i686-pc-linux-gnu      \
     118    --prefix=/usr                 \
     119    --libdir=/usr/lib32           \
     120    --disable-static</userinput></screen>
     121
     122    <para>Compile the package:</para>
     123
     124<screen><userinput remap="make">make</userinput></screen>
     125
     126    <para>Install the package:</para>
     127
     128<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     129cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     130rm -rf DESTDIR</userinput></screen>
     131
     132  </sect2><!-- m32 -->
     133
     134  <!-- - - - - - - - - - -->
     135  <!-- Multilib - x32bit -->
     136  <!-- - - - - - - - - - -->
     137 
     138  <sect2 arch="ml_x32,ml_all" role="installation">
     139    <title>Installation of Readline - x32bit</title>
     140
     141    <para>Clean previous build:</para>
     142
     143<screen><userinput remap="pre">make distclean</userinput></screen>
     144
     145    <para>Prepare Readline for compilation:</para>
     146
     147<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     148    --host=x86_64-pc-linux-gnux32 \
     149    --prefix=/usr                 \
     150    --libdir=/usr/libx32          \
     151    --disable-static</userinput></screen>
     152
     153    <para>Compile the package:</para>
     154
     155<screen><userinput remap="make">make</userinput></screen>
     156
     157    <para>Install the package:</para>
     158
     159<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     160cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     161rm -rf DESTDIR</userinput></screen>
     162
     163  </sect2><!-- mx32 -->
     164
    103165  <sect2 id="contents-readline" role="content">
    104166    <title>Contents of Readline</title>
  • chapter08/revisedchroot.xml

    r35d2578 r60870bc  
    4444  To remove them, run:</para>
    4545
    46 <screen><userinput>find /usr/lib /usr/libexec -name \*.la -delete</userinput></screen>
     46<screen><userinput>find /usr/lib /usr/libexec -name \*.la -delete</userinput><userinput arch="ml_32,ml_all">
     47find /usr/lib32 -name \*.la -delete</userinput><userinput arch="ml_x32,ml_all">
     48find /usr/libx32 -name \*.la -delete</userinput></screen>
    4749
    4850   <para>For more information about libtool archive files, see the <ulink
  • chapter08/stripping.xml

    r35d2578 r60870bc  
    5757
    5858cd /usr/lib
    59 
    6059for LIB in $save_usrlib; do
    6160    objcopy --only-keep-debug $LIB $LIB.dbg
     
    6564    install -vm755 /tmp/$LIB /usr/lib
    6665    rm /tmp/$LIB
    67 done
     66done</userinput>
     67<userinput arch="ml_32,ml_all">
     68cd /usr/lib32
     69for LIB in $save_usrlib; do
     70    objcopy --only-keep-debug $LIB $LIB.dbg
     71    cp $LIB /tmp/$LIB
     72    strip --strip-unneeded /tmp/$LIB
     73    objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
     74    install -vm755 /tmp/$LIB /usr/lib32
     75    rm /tmp/$LIB
     76done</userinput>
     77<userinput arch="ml_x32,ml_all">
     78cd /usr/libx32
     79for LIB in $save_usrlib; do
     80    objcopy --only-keep-debug $LIB $LIB.dbg
     81    cp $LIB /tmp/$LIB
     82    strip --strip-unneeded /tmp/$LIB
     83    objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
     84    install -vm755 /tmp/$LIB /usr/libx32
     85    rm /tmp/$LIB
     86done</userinput><userinput>
    6887
    6988online_usrbin="bash find strip"
     
    88107    install -vm755 /tmp/$LIB /usr/lib
    89108    rm /tmp/$LIB
    90 done
     109done</userinput><userinput arch="ml_32,ml_all">
     110for LIB in $online_usrlib; do
     111    cp /usr/lib32/$LIB /tmp/$LIB
     112    strip --strip-unneeded /tmp/$LIB
     113    install -vm755 /tmp/$LIB /usr/lib32
     114    rm /tmp/$LIB
     115done</userinput><userinput arch="ml_x32,ml_all">
     116for LIB in $online_usrlib; do
     117    cp /usr/libx32/$LIB /tmp/$LIB
     118    strip --strip-unneeded /tmp/$LIB
     119    install -vm755 /tmp/$LIB /usr/libx32
     120    rm /tmp/$LIB
     121done</userinput><userinput>
    91122
    92123for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \
     
    99130            ;;
    100131    esac
    101 done
     132done</userinput><userinput arch="ml_32,ml_all">
     133for i in $(find /usr/lib32 -type f -name \*.so* ! -name \*dbg); do
     134    case "$online_usrbin $online_usrlib $save_usrlib" in
     135        *$(basename $i)* )
     136            ;;
     137        * ) strip --strip-unneeded $i
     138            ;;
     139    esac
     140done</userinput><userinput arch="ml_x32,ml_all">
     141for i in $(find /usr/libx32 -type f -name \*.so* ! -name \*dbg); do
     142    case "$online_usrbin $online_usrlib $save_usrlib" in
     143        *$(basename $i)* )
     144            ;;
     145        * ) strip --strip-unneeded $i
     146            ;;
     147    esac
     148done</userinput><userinput>
    102149
    103150unset BIN LIB save_usrlib online_usrbin online_usrlib
  • chapter08/systemd.xml

    r35d2578 r60870bc  
    219219
    220220  </sect2>
     221
     222  <!-- - - - - - - - - - -->
     223  <!-- Multilib - 32bit  -->
     224  <!-- - - - - - - - - - -->
     225 
     226  <sect2 arch="ml_32,ml_all" role="installation">
     227    <title>Installation of systemd - 32-bit</title>
     228
     229    <para>Clean previous build:</para>
     230
     231<screen><userinput remap="pre">rm -rf *</userinput></screen>
     232
     233    <para>Create a symlink to work around missing xsltproc:</para>
     234
     235<!-- screen><userinput remap="pre">ln -sf /tools/bin/true /usr/bin/xsltproc</userinput></screen -->
     236<screen><userinput remap="pre">ln -sf /bin/true /usr/bin/xsltproc</userinput></screen>
     237
     238<!-- with cross-LFS we have util-linux in place:
     239    <para>Because we have not yet installed the final version of Util-Linux,
     240    create links to the libraries in the approprite location:</para>
     241
     242<screen><userinput remap="pre">for file in /tools/lib32/lib{blkid,mount,uuid}*; do
     243    ln -sf $file /usr/lib32/
     244done</userinput></screen>
     245-->
     246
     247    <para>Prepare systemd for compilation:</para>
     248
     249    <screen><userinput remap="configure">PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \
     250CC="gcc -m32 -march=i686"              \
     251CXX="g++ -m32 -march=i686"             \
     252LANG=en_US.UTF-8                       \
     253meson --prefix=/usr                    \
     254      --sysconfdir=/etc                \
     255      --localstatedir=/var             \
     256      -Dblkid=true                     \
     257      -Dbuildtype=release              \
     258      -Ddefault-dnssec=no              \
     259      -Dfirstboot=false                \
     260      -Dinstall-tests=false            \
     261      -Dkill-path=/bin/kill            \
     262      -Dkmod-path=/bin/kmod            \
     263      -Dldconfig=false                 \
     264      -Dmount-path=/bin/mount          \
     265      -Drootprefix=                    \
     266      -Drootlibdir=/usr/lib32          \
     267      -Dsplit-usr=true                 \
     268      -Dsulogin-path=/sbin/sulogin     \
     269      -Dsysusers=false                 \
     270      -Dumount-path=/bin/umount        \
     271      -Db_lto=false                    \
     272      ..</userinput></screen>
     273
     274    <para>Compile the package:</para>
     275
     276<screen><userinput remap="make">LANG=en_US.UTF-8 ninja</userinput></screen>
     277
     278    <para>Install the package:</para>
     279
     280<screen><userinput remap="install">LANG=en_US.UTF-8 DESTDIR=$PWD/DESTDIR ninja install
     281cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     282rm -rf DESTDIR
     283rm -f /usr/bin/xsltproc</userinput></screen>
     284
     285  </sect2><!-- m32 -->
     286
     287  <!-- - - - - - - - - - -->
     288  <!-- Multilib - x32bit -->
     289  <!-- - - - - - - - - - -->
     290 
     291  <sect2 arch="ml_x32,ml_all" role="installation">
     292    <title>Installation of systemd - x32-bit</title>
     293
     294    <para>Clean previous build:</para>
     295
     296<screen><userinput remap="pre">rm -rf *</userinput></screen>
     297
     298    <para>Create a symlink to work around missing xsltproc:</para>
     299
     300<screen><userinput remap="pre">ln -sf /bin/true /usr/bin/xsltproc</userinput></screen>
     301
     302    <para>Fix an issue on x32:</para>
     303
     304<screen><userinput remap="pre">sed '/log_debug/s@PRI_TIMEX@PRIi64@' -i src/timesync/timesyncd-manager.c
     305sed '/long drift_freq;/s@long @int64_t @' -i src/timesync/timesyncd-manager.h</userinput></screen>
     306
     307    <para>Prepare systemd for compilation:</para>
     308
     309<screen><userinput remap="configure">PKG_CONFIG_PATH="/usr/libx32/pkgconfig" \
     310CC="gcc -mx32"                          \
     311CXX="g++ -mx32"                         \
     312CFLAGS+="-Wno-error=shift-overflow"     \
     313CXXFLAGS+="-Wno-error=shift-overflow"   \
     314LANG=en_US.UTF-8                        \
     315meson --prefix=/usr                     \
     316      --sysconfdir=/etc                 \
     317      --localstatedir=/var              \
     318      -Dblkid=true                      \
     319      -Dbuildtype=release               \
     320      -Ddefault-dnssec=no               \
     321      -Dfirstboot=false                 \
     322      -Dinstall-tests=false             \
     323      -Dkill-path=/bin/kill             \
     324      -Dkmod-path=/bin/kmod             \
     325      -Dldconfig=false                  \
     326      -Dmount-path=/bin/mount           \
     327      -Drootprefix=                     \
     328      -Drootlibdir=/usr/libx32          \
     329      -Dsplit-usr=true                  \
     330      -Dsulogin-path=/sbin/sulogin      \
     331      -Dsysusers=false                  \
     332      -Dumount-path=/bin/umount         \
     333      -Db_lto=false                     \
     334      ..</userinput></screen>
     335
     336    <para>Compile the package:</para>
     337
     338<screen><userinput remap="make">LANG=en_US.UTF-8 ninja</userinput></screen>
     339
     340    <para>Install the package:</para>
     341
     342<screen><userinput remap="install">LANG=en_US.UTF-8 DESTDIR=$PWD/DESTDIR ninja install
     343cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     344rm -rf DESTDIR
     345rm -f /usr/bin/xsltproc</userinput></screen>
     346
     347  </sect2><!-- mx32 -->
    221348
    222349  <sect2 id="contents-systemd" role="content">
  • chapter08/util-linux.xml

    r35d2578 r60870bc  
    116116-->
    117117  </sect2>
     118
     119  <!-- - - - - - - - - - -->
     120  <!-- Multilib - 32bit  -->
     121  <!-- - - - - - - - - - -->
     122 
     123  <sect2 arch="ml_32,ml_all" role="installation">
     124    <title>Installation of Util-linux - 32-bit</title>
     125
     126    <para>Clean previous build:</para>
     127
     128<screen><userinput remap="pre">make distclean</userinput></screen>
     129
     130    <para>Prepare Util-linux for compilation:</para>
     131
     132<screen revision="sysv"><userinput remap="configure">CC="gcc -m32" \
     133./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
     134            --host=i686-pc-linux-gnu \
     135            --libdir=/usr/lib32      \
     136            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
     137            --disable-chfn-chsh      \
     138            --disable-login          \
     139            --disable-nologin        \
     140            --disable-su             \
     141            --disable-setpriv        \
     142            --disable-runuser        \
     143            --disable-pylibmount     \
     144            --disable-static         \
     145            --without-python         \
     146            --without-systemd        \
     147            --without-systemdsystemunitdir \
     148            --enable-libmount-force-mountinfo</userinput></screen>
     149
     150<screen revision="systemd"><userinput remap="configure">CC="gcc -m32" \
     151./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
     152            --host=i686-pc-linux-gnu \
     153            --libdir=/usr/lib32      \
     154            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
     155            --disable-chfn-chsh      \
     156            --disable-login          \
     157            --disable-nologin        \
     158            --disable-su             \
     159            --disable-setpriv        \
     160            --disable-runuser        \
     161            --disable-pylibmount     \
     162            --disable-static         \
     163            --without-python         \
     164            --enable-libmount-force-mountinfo</userinput></screen>
     165
     166    <para>Compile the package:</para>
     167
     168<screen><userinput remap="make">make</userinput></screen>
     169
     170    <para>Install the package:</para>
     171
     172<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     173cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     174rm -rf DESTDIR</userinput></screen>
     175
     176  </sect2><!-- m32 -->
     177
     178  <!-- - - - - - - - - - -->
     179  <!-- Multilib - x32bit -->
     180  <!-- - - - - - - - - - -->
     181 
     182  <sect2 arch="ml_x32,ml_all" role="installation">
     183    <title>Installation of Util-linux - x32-bit</title>
     184
     185    <para>Clean previous build:</para>
     186
     187<screen><userinput remap="pre">make distclean</userinput></screen>
     188
     189    <para>Prepare Util-linux for compilation:</para>
     190
     191<screen revision="sysv"><userinput remap="configure">CC="gcc -mx32" \
     192./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
     193            --host=x86_64-pc-linux-gnux32 \
     194            --libdir=/usr/libx32 \
     195            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
     196            --disable-chfn-chsh  \
     197            --disable-login      \
     198            --disable-nologin    \
     199            --disable-su         \
     200            --disable-setpriv    \
     201            --disable-runuser    \
     202            --disable-pylibmount \
     203            --disable-static     \
     204            --without-python     \
     205            --without-systemd    \
     206            --without-systemdsystemunitdir \
     207            --enable-libmount-force-mountinfo</userinput></screen>
     208
     209<screen revision="systemd"><userinput remap="configure">CC="gcc -mx32" \
     210./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
     211            --host=x86_64-pc-linux-gnux32 \
     212            --libdir=/usr/libx32 \
     213            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
     214            --disable-chfn-chsh  \
     215            --disable-login      \
     216            --disable-nologin    \
     217            --disable-su         \
     218            --disable-setpriv    \
     219            --disable-runuser    \
     220            --disable-pylibmount \
     221            --disable-static     \
     222            --without-python     \
     223            --enable-libmount-force-mountinfo</userinput></screen>
     224
     225    <para>Compile the package:</para>
     226
     227<screen><userinput remap="make">make</userinput></screen>
     228
     229    <para>Install the package:</para>
     230
     231<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     232cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     233rm -rf DESTDIR</userinput></screen>
     234
     235  </sect2><!-- mx32 -->
    118236
    119237  <sect2 id="contents-utillinux" role="content">
  • chapter08/xz.xml

    r35d2578 r60870bc  
    6464
    6565  </sect2>
     66
     67  <!-- - - - - - - - - - -->
     68  <!-- Multilib - 32bit  -->
     69  <!-- - - - - - - - - - -->
     70 
     71  <sect2 arch="ml_32,ml_all" role="installation">
     72    <title>Installation of Xz - 32bit</title>
     73
     74    <para>Clean previous build:</para>
     75
     76<screen><userinput remap="pre">make distclean</userinput></screen>
     77
     78    <para>Prepare Xz for compilation:</para>
     79
     80<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     81    --host=i686-pc-linux-gnu      \
     82    --prefix=/usr                 \
     83    --libdir=/usr/lib32           \
     84    --disable-static</userinput></screen>
     85
     86    <para>Compile the package:</para>
     87
     88<screen><userinput remap="make">make</userinput></screen>
     89
     90    <para>Install the package:</para>
     91
     92<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     93cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     94rm -rf DESTDIR</userinput></screen>
     95
     96  </sect2><!-- m32 -->
     97
     98  <!-- - - - - - - - - - -->
     99  <!-- Multilib - x32bit -->
     100  <!-- - - - - - - - - - -->
     101 
     102  <sect2 arch="ml_x32,ml_all" role="installation">
     103    <title>Installation of Xz - x32bit</title>
     104
     105    <para>Clean previous build:</para>
     106
     107<screen><userinput remap="pre">make distclean</userinput></screen>
     108
     109    <para>Prepare Xz for compilation:</para>
     110
     111<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     112    --host=x86_64-pc-linux-gnux32 \
     113    --prefix=/usr                 \
     114    --libdir=/usr/libx32          \
     115    --disable-static</userinput></screen>
     116
     117    <para>Compile the package:</para>
     118
     119<screen><userinput remap="make">make</userinput></screen>
     120
     121    <para>Install the package:</para>
     122
     123<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     124cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     125rm -rf DESTDIR</userinput></screen>
     126
     127  </sect2><!-- mx32 -->
    66128
    67129  <sect2 id="contents-xz" role="content">
  • chapter08/zlib.xml

    r35d2578 r60870bc  
    6464  </sect2>
    6565
     66  <!-- - - - - - - - - - -->
     67  <!-- Multilib - 32bit  -->
     68  <!-- - - - - - - - - - -->
     69
     70  <sect2 arch="ml_32,ml_all" role="installation">
     71    <title>Installation of Zlib - 32bit</title>
     72
     73    <para>Clean previous build:</para>
     74
     75<screen><userinput remap="pre">make distclean</userinput></screen>
     76
     77    <para>Prepare Zlib for compilation:</para>
     78
     79<screen><userinput remap="configure">CC="gcc -m32" \
     80./configure --prefix=/usr \
     81    --libdir=/usr/lib32</userinput></screen>
     82
     83    <para>Compile the package:</para>
     84
     85<screen><userinput remap="make">make</userinput></screen>
     86
     87    <para>Install the package:</para>
     88
     89<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     90cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     91rm -rf DESTDIR</userinput></screen>
     92
     93  </sect2><!-- m32 -->
     94
     95  <!-- - - - - - - - - - -->
     96  <!-- Multilib - x32bit -->
     97  <!-- - - - - - - - - - -->
     98
     99  <sect2 arch="ml_x32,ml_all" role="installation">
     100    <title>Installation of Zlib - x32bit</title>
     101
     102<screen><userinput remap="pre">make distclean</userinput></screen>
     103
     104    <para>Prepare Zlib for compilation:</para>
     105
     106<screen><userinput remap="configure">CC="gcc -mx32" \
     107./configure --prefix=/usr    \
     108    --libdir=/usr/libx32</userinput></screen>
     109
     110    <para>Compile the package:</para>
     111
     112<screen><userinput remap="make">make</userinput></screen>
     113
     114    <para>Install the package:</para>
     115
     116<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     117cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     118rm -rf DESTDIR</userinput></screen>
     119
     120  </sect2><!-- mx32 -->
     121
    66122  <sect2 id="contents-zlib" role="content">
    67123    <title>Contents of Zlib</title>
  • chapter08/zstd.xml

    r35d2578 r60870bc  
    6565
    6666  </sect2>
     67
     68  <!-- - - - - - - - - - -->
     69  <!-- Multilib - 32bit  -->
     70  <!-- - - - - - - - - - -->
     71 
     72  <sect2 arch="ml_32,ml_all" role="installation">
     73    <title>Installation of Zstd - 32bit</title>
     74
     75    <para>Clean previous build:</para>
     76
     77<screen><userinput remap="pre">make clean</userinput></screen>
     78
     79    <para>Compile the package:</para>
     80
     81<screen><userinput remap="make">CC="gcc -m32" make</userinput></screen>
     82
     83    <para>Install the package:</para>
     84
     85<screen><userinput remap="install">make prefix=/usr DESTDIR=$PWD/DESTDIR install
     86cp -Rv DESTDIR/usr/lib/* /usr/lib32/
     87sed -e "/^libdir/s/lib$/lib32/" -i /usr/lib32/pkgconfig/libzstd.pc
     88rm -rf DESTDIR</userinput></screen>
     89
     90  </sect2><!-- m32 -->
     91
     92  <!-- - - - - - - - - - -->
     93  <!-- Multilib - x32bit -->
     94  <!-- - - - - - - - - - -->
     95 
     96  <sect2 arch="ml_x32,ml_all" role="installation">
     97    <title>Installation of Zstd - x32bit</title>
     98
     99    <para>Clean previous build:</para>
     100
     101<screen><userinput remap="pre">make clean</userinput></screen>
     102
     103    <para>Compile the package:</para>
     104
     105<screen><userinput remap="make">CC="gcc -mx32" make</userinput></screen>
     106
     107    <para>Install the package:</para>
     108
     109<screen><userinput remap="install">make prefix=/usr DESTDIR=$PWD/DESTDIR install
     110cp -Rv DESTDIR/usr/lib/* /usr/libx32/
     111sed -e "/^libdir/s/lib$/libx32/" -i /usr/libx32/pkgconfig/libzstd.pc
     112rm -rf DESTDIR</userinput></screen>
     113
     114  </sect2><!-- mx32 -->
    67115
    68116  <sect2 id="contents-zstd" role="content">
  • chapter10/kernel.xml

    r35d2578 r60870bc  
    155155    </note>
    156156
     157    <note arch="ml_32,ml_x32,ml_all">
     158      <para>
     159        The kernel on a multilib system needs to be able to
     160        identify and start binaries compiled for different architectures
     161        than the default.
     162      </para>
     163
     164      <para arch="ml_32,ml_all">
     165        If support for any 32bit ABI was built, make sure that the option
     166        "IA32 Emulation" is selected. The option 'IA32 a.out support' is
     167        optional.
     168      </para>
     169
     170      <para arch="ml_x32,ml_all">
     171        If support for the x32bit ABI was built, make sure that the option
     172        "x32 ABI for 64-bit mode" is selected.
     173      </para>
     174
     175<screen arch="ml_32">Binary Emulations  ---&gt;
     176    [*] IA32 Emulation
     177    &lt;M&gt;   IA32 a.out support
     178</screen>
     179<screen arch="ml_x32">Binary Emulations  ---&gt;
     180    [*] x32 ABI for 64-bit mode
     181</screen>
     182<screen arch="ml_all">Binary Emulations  ---&gt;
     183    [*] IA32 Emulation
     184    &lt;M&gt;   IA32 a.out support
     185    [*] x32 ABI for 64-bit mode
     186</screen>
     187
     188    </note>
     189   
    157190    <variablelist>
    158191      <title>The rationale for the above configuration items:</title>
  • packages.ent

    r35d2578 r60870bc  
    355355<!ENTITY iproute2-fin-sbu "0.2 SBU">
    356356
     357<!ENTITY isl-version "0.22.1">
     358<!ENTITY isl-size "1.6 MB">
     359<!ENTITY isl-url "http://isl.gforge.inria.fr/isl-&isl-version;.tar.xz">
     360<!ENTITY isl-md5 "6e124849a9b62e3e2d5d51e955323f6e">
     361<!ENTITY isl-home "http://isl.gforge.inria.fr/">
     362<!ENTITY isl-fin-du "20 MB">
     363<!ENTITY isl-fin-sbu "0.1 SBU">
     364
    357365<!ENTITY jinja2-version "3.0.1">
    358366<!ENTITY jinja2-size "264 KB">
  • prologue/bookinfo.xml

    r35d2578 r60870bc  
    88<bookinfo>
    99  <title>Linux From Scratch</title>
    10   <subtitle revision='sysv'   >Version &version; </subtitle>
    11   <subtitle revision='systemd'>Version &versiond;</subtitle>
     10  <subtitle arch="default" revision='sysv'>Version &version;</subtitle>
     11  <subtitle arch="default" revision='systemd'>Version &versiond;</subtitle>
     12  <subtitle arch="ml_32,ml_x32,ml_all" revision='sysv'>Version &version;-multilib</subtitle>
     13  <subtitle arch="ml_32,ml_x32,ml_all" revision='systemd'>Version &versiond;-multilib</subtitle>
    1214  <subtitle>Published &releasedate;</subtitle>
    1315
     
    3032      <firstname>Editor: DJ</firstname>
    3133      <surname>Lucas</surname>
     34    </author>
     35
     36    <author arch="ml_32,ml_x32,ml_all">
     37      <firstname>Editor: Thomas</firstname>
     38      <surname>Trepl</surname>
    3239    </author>
    3340  </authorgroup>
  • prologue/preface.xml

    r35d2578 r60870bc  
    1616  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="architecture.xml"/>
    1717  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="prerequisites.xml"/>
     18  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="multilib.xml"/>
    1819  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="standards.xml"/>
    1920  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="why.xml"/>
Note: See TracChangeset for help on using the changeset viewer.