3.14. tcl-8.6.11

#!/bin/sh
# Copyright © 1999-2022 Gerard Beekmans
# Copyright © 2017-2022 Random Crew
# Distributed under the terms of MIT License.


MY_P="tcl${PV}-src"

Additional source handling

The directory inside source archive is named as tcl1.2.3 instead of standard tcl-1.2.3. We need to move to that directory explicitly.

src_postfetch()
{
    cd ${WORKDIR}/tcl${PV}
}

Configuration

String with ause_enable means option --enable-64bit will be added to configure, if project goes in 64-bit mode and dataword cap64 is present in configuration.

src_config()
{
    cd unix
    ./configure \
        --prefix=${PREFIX} \
        --mandir=${PREFIX}/share/man \
        $(ause_enable 'cap64' '--enable-64bit')
}

Compilation

src_compile()
{
    make ${MAKEOPTS}

    sed -e "s|${S}/unix|${PREFIX}/lib|" \
        -e "s|${S}|${PREFIX}/include|"  \
        -i tclConfig.sh

    sed -e "s|${S}/unix/pkgs/tdbc1.1.2|${PREFIX}/lib/tdbc1.1.2|" \
        -e "s|${S}/pkgs/tdbc1.1.2/generic|${PREFIX}/include|"    \
        -e "s|${S}/pkgs/tdbc1.1.2/library|${PREFIX}/lib/tcl8.6|" \
        -e "s|${S}/pkgs/tdbc1.1.2|${PREFIX}/include|"            \
        -i pkgs/tdbc1.1.2/tdbcConfig.sh

    sed -e "s|${S}/unix/pkgs/itcl4.2.1|${PREFIX}/lib/itcl4.2.1|" \
        -e "s|${S}/pkgs/itcl4.2.1/generic|${PREFIX}/include|"    \
        -e "s|${S}/pkgs/itcl4.2.1|${PREFIX}/include|"            \
        -i pkgs/itcl4.2.1/itclConfig.sh
}

Installation

src_install()
{
    make install ${MAKEOPTS} DESTDIR=${D}

    chmod u+w ${D}${PREFIX}/lib/libtcl8.6.so
    make install-private-headers ${MAKEOPTS} DESTDIR=${D}
    ln -s tclsh8.6 ${D}${PREFIX}/bin/tclsh
    mv ${D}${PREFIX}/share/man/man3/Thread.3 ${D}${PREFIX}/share/man/man3/Tcl_Thread.3
}

Unit testing

src_check()
{
    make test
}

Build code

tcl.build

Other files

meta.txt
text

Links

url.lfs: https://linuxfromscratch.org/lfs/view/10.1/chapter08/tcl.html
url.lfs.stage1: