| # Maintainer: Alexey Pavlov <alexpux@gmail.com> |
| # Contributor: Ray Donnelly <mingw.android@gmail.com> |
| |
| _realname=tcl |
| pkgbase=mingw-w64-${_realname} |
| pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" |
| pkgver=8.6.11 |
| pkgrel=3 |
| pkgdesc="The Tcl scripting language (mingw-w64)" |
| arch=('any') |
| mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') |
| depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-zlib") |
| #conflicts=(${MINGW_PACKAGE_PREFIX}-sqlite-analyzer) |
| makedepends=("${MINGW_PACKAGE_PREFIX}-gcc") |
| options=('staticlibs' '!makeflags') # '!strip' 'debug') |
| license=("custom") |
| url="https://tcl.sourceforge.io/" |
| source=("https://downloads.sourceforge.net/sourceforge/tcl/tcl${pkgver}-src.tar.gz" |
| 001-fix-relocation.patch |
| 002-fix-forbidden-colon-in-paths.mingw.patch |
| 004-use-system-zlib.mingw.patch |
| 005-no-xc.mingw.patch |
| 007-install.mingw.patch |
| 008-tcl-8.5.14-hidden.patch |
| 009-fix-using-gnu-print.patch |
| 010-win-non-x86.patch |
| 011-win-arm64.patch) |
| |
| sha256sums=('8c0486668586672c5693d7d95817cb05a18c5ecca2f40e2836b9578064088258' |
| 'cfcf9b3816f8bb063b514ac7f63a5ba73108f27e16fdf8e8312dc5f0683083f6' |
| '70bf0d8e84985f4e8ee63447ad37d5e50376eaf35ace51112761cacbbd596c4c' |
| '2d7581ad118c01afcebd762051eb74fe31511e8b40505554068f126bcd8d5d9f' |
| '2b0f41f6704aa964dbfafa0a65dd5ce0ab97e82ff5cbbe2a95a2e8d644cc5550' |
| '61d3430f82ee60000eab28758eba9663a747b1e79082758cb59e624aead6c517' |
| '3ec2702efb1be6873d6ffd2ffb357637588f835f8817ae65cf0373020fcc7359' |
| '894afd1d97c25a2f7b21981810026450d44677a46ba07a32c4025783d027c6d7' |
| 'b8156d191a3cf5a62678536bc9be4f026b9e3bef5c8dc0f9b78ab021fac89478' |
| '51dc29f822ad7af721d1dd6d13700856c21da30c70c9c2aa688f69a950965113') |
| |
| prepare() { |
| cd "${srcdir}/tcl${pkgver}" |
| patch -Np1 -i "${srcdir}/001-fix-relocation.patch" |
| patch -Np1 -i "${srcdir}/002-fix-forbidden-colon-in-paths.mingw.patch" |
| patch -Np1 -i "${srcdir}/004-use-system-zlib.mingw.patch" |
| patch -Np1 -i "${srcdir}/005-no-xc.mingw.patch" |
| patch -Np1 -i "${srcdir}/007-install.mingw.patch" |
| patch -Np1 -i "${srcdir}/008-tcl-8.5.14-hidden.patch" |
| # This patch can be removed once |
| # https://core.tcl-lang.org/tcl/tktview/c9759399735f1979a2e7931fd9f00da20f2fbb7e |
| # is resolved: |
| patch -Np1 -i "${srcdir}/009-fix-using-gnu-print.patch" |
| patch -Np1 -i "${srcdir}/010-win-non-x86.patch" |
| patch -Np1 -i "${srcdir}/011-win-arm64.patch" |
| |
| # Using the static libgcc library is problematic when sharing |
| # resources across dynamic link libraries, so we must use |
| # libgcc*.dll everywhere: |
| echo "Removing -static-libgcc from configure files" |
| find "${srcdir}/tcl${pkgver}" -type f \( -name "tcl.m4" -o -name "configure*" \) -print0 | xargs -0 sed -i 's/-static-libgcc//g' |
| |
| cd win && autoreconf -fi |
| } |
| |
| build() { |
| local extra_config= |
| if check_option "debug" "y"; then |
| extra_config="--enable-symbols" |
| fi |
| local enable64bit= |
| [[ "${MINGW_CHOST}" = "x86_64-w64-mingw32" ]] && enable64bit='--enable-64bit=amd64' |
| [[ "${MINGW_CHOST}" = "aarch64-w64-mingw32" ]] && enable64bit='--enable-64bit=arm64' |
| |
| [[ -d ${srcdir}/build-${MINGW_CHOST} ]] && rm -rf ${srcdir}/build-${MINGW_CHOST} |
| mkdir -p ${srcdir}/build-${MINGW_CHOST} |
| cd "${srcdir}/build-${MINGW_CHOST}" |
| ${srcdir}/tcl${pkgver}/win/configure \ |
| --prefix=${MINGW_PREFIX} \ |
| --build=${MINGW_CHOST} \ |
| --host=${MINGW_CHOST} \ |
| --enable-threads \ |
| ${extra_config} \ |
| ${enable64bit} |
| |
| make |
| } |
| |
| package() { |
| local debug_suffix= |
| if check_option "debug" "y"; then |
| debug_suffix="g" |
| fi |
| cd "${srcdir}/build-${MINGW_CHOST}" |
| cp tclsh86${debug_suffix}.exe tclsh.exe |
| #PATH=.:$PATH |
| make install INSTALL_ROOT="$pkgdir" |
| |
| cp "${pkgdir}${MINGW_PREFIX}/bin/tclsh86${debug_suffix}.exe" "${pkgdir}${MINGW_PREFIX}/bin/tclsh.exe" |
| find "${pkgdir}${MINGW_PREFIX}" -name '*.def' -o -name '*.exp' | xargs -rtl1 rm |
| find "${pkgdir}${MINGW_PREFIX}" -name '*.sh' -o -name '*.dll' -o -name '*.exe' | xargs -rtl1 chmod 755 |
| |
| local _libver=${pkgver%.*} |
| _libver=${_libver//./} |
| |
| local _odbc_ver=1.1.2 |
| local _itcl_ver=4.2.1 |
| sed \ |
| -e "s|^\(TCL_BUILD_LIB_SPEC\)='.*|\1='-Wl,${MINGW_PREFIX}/lib/libtcl${_libver}.dll.a'|" \ |
| -e "s|^\(TCL_SRC_DIR\)='.*'|\1='${MINGW_PREFIX}/include/tcl${pkgver%.*}/tcl-private'|" \ |
| -e "s|^\(TCL_BUILD_STUB_LIB_SPEC\)='.*|\1='-Wl,${MINGW_PREFIX}/lib/libtclstub${_libver}.a'|" \ |
| -e "s|^\(TCL_BUILD_STUB_LIB_PATH\)='.*|\1='${MINGW_PREFIX}/lib'|" \ |
| -e "s|^\(TCL_STUB_LIB_SPEC\)='.*|\1='-L${MINGW_PREFIX}/lib -ltclstub${_libver}'|" \ |
| -e "s|^\(TCL_INCLUDE_SPEC\)='.*|\1='-I${MINGW_PREFIX}/include/tcl${pkgver%.*}'|" \ |
| -i "${pkgdir}${MINGW_PREFIX}/lib/tclConfig.sh" |
| |
| sed \ |
| -e "s|^\(tdbc_BUILD_STUB_LIB_SPEC\)='.*|\1='-L${MINGW_PREFIX}/lib/tdbc${_odbc_ver} -ltdbcstub${_odbc_ver//./}'|" \ |
| -e "s|^\(TDBC_BUILD_STUB_LIB_SPEC\)='.*|\1='-L${MINGW_PREFIX}/lib/tdbc${_odbc_ver} -ltdbcstub${_odbc_ver//./}'|" \ |
| -e "s|^\(tdbc_BUILD_STUB_LIB_PATH\)='.*|\1='${MINGW_PREFIX}/lib/tdbc${_odbc_ver}/libtdbcstub${_odbc_ver//./}.a'|" \ |
| -e "s|^\(TDBC_BUILD_STUB_LIB_PATH\)='.*|\1='${MINGW_PREFIX}/lib/tdbc${_odbc_ver}/libtdbcstub${_odbc_ver//./}.a'|" \ |
| -e "s|^\(tdbc_INCLUDE_SPEC\)='.*|\1='${MINGW_PREFIX}/lib/tdbc${_odbc_ver}/libtdbcstub${_odbc_ver//./}.a'|" \ |
| -e "s|^\(tdbc_INCLUDE_SPEC\)='.*|\1='${MINGW_PREFIX}/lib/tdbc${_odbc_ver}/libtdbcstub${_odbc_ver//./}.a'|" \ |
| -i "${pkgdir}${MINGW_PREFIX}/lib/tdbc${_odbc_ver}/tdbcConfig.sh" |
| |
| sed \ |
| -e "s|^\(itcl_BUILD_LIB_SPEC\)='.*|\1='-L${MINGW_PREFIX}/lib/itcl${_itcl_ver} -litcl${_itcl_ver//./}'|" \ |
| -e "s|^\(ITCL_BUILD_LIB_SPEC\)='.*|\1='-L${MINGW_PREFIX}/lib/itcl${_itcl_ver} -litcl${_itcl_ver//./}'|" \ |
| -e "s|^\(itcl_BUILD_STUB_LIB_SPEC\)='.*|\1='-L${MINGW_PREFIX}/lib/itcl${_itcl_ver} -litclstub${_itcl_ver//./}'|" \ |
| -e "s|^\(ITCL_BUILD_STUB_LIB_SPEC\)='.*|\1='-L${MINGW_PREFIX}/lib/itcl${_itcl_ver} -litclstub${_itcl_ver//./}'|" \ |
| -e "s|^\(itcl_BUILD_STUB_LIB_PATH\)='.*|\1='${MINGW_PREFIX}/lib/itcl${_itcl_ver}/libitclstub${_itcl_ver//./}.a'|" \ |
| -e "s|^\(ITCL_BUILD_STUB_LIB_PATH\)='.*|\1='${MINGW_PREFIX}/lib/itcl${_itcl_ver}/libitclstub${_itcl_ver//./}.a'|" \ |
| -i "${pkgdir}${MINGW_PREFIX}/lib/itcl${_itcl_ver}/itclConfig.sh" |
| |
| ln -s "${pkgdir}${MINGW_PREFIX}/lib/libtcl86${debug_suffix}.dll.a" "${pkgdir}${MINGW_PREFIX}/lib/libtcl.dll.a" |
| ln -s "${pkgdir}${MINGW_PREFIX}/lib/tclConfig.sh" "${pkgdir}${MINGW_PREFIX}/lib/tcl${pkgver%.*.*}/tclConfig.sh" |
| |
| # Install private headers |
| mkdir -p "${pkgdir}${MINGW_PREFIX}/include/tcl${pkgver%.*}/tcl-private/"{generic,win} |
| cd ${srcdir}/tcl${pkgver} |
| find generic win -name "*.h" -exec cp -p '{}' "${pkgdir}${MINGW_PREFIX}"/include/tcl${pkgver%.*}/tcl-private/'{}' ';' |
| ( cd "${pkgdir}${MINGW_PREFIX}/include" |
| for header in *.h ; do |
| cp -f ${header} ${pkgdir}${MINGW_PREFIX}/include/tcl${pkgver%.*}/tcl-private/generic/ |
| done |
| ) |
| chmod a-x "${pkgdir}${MINGW_PREFIX}/lib/tcl${pkgver%.*}/encoding/"*.enc |
| chmod a-x "${pkgdir}${MINGW_PREFIX}/lib/"*/pkgIndex.tcl |
| |
| install -Dm644 ${srcdir}/${_realname}${pkgver}/win/tcl.m4 ${pkgdir}${MINGW_PREFIX}/share/aclocal/tcl${pkgver%.*}.m4 |
| |
| # Resolve conflict with sqlite-analyzer package |
| mv ${pkgdir}${MINGW_PREFIX}/bin/sqlite3_analyzer{,.sh} |
| |
| # mingw-w64-sqlite also provides the Tcl sqlite extension, which |
| # conflicts with the version provided by this package. Solve the |
| # problem removing the extension built here. The rationale is that |
| # the extension provided by mingw-w64-sqlite is more likely to be up |
| # to date: |
| rm -rf ${pkgdir}${MINGW_PREFIX}/lib/sqlite* |
| } |