| Ticket UUID: | ac3ea8730530daf7c680a4b9e2163dc146091fd6 | ||
| Title: | Don't assume that Windows has no usable zlib/tommath | ||
| Type: | Bug | Created on: | 2025-10-26 12:43:34 |
| Submitter: | oscarfv | Assigned to: | jan.nijtmans |
| Subsystem: | 53. Configuration and Build Tools | Severity: | Minor |
| Priority: | 5 Medium | Last modified: | 2026-10-20 21:25:31 |
| Status: | Closed | Closed by: | jan.nijtmans |
| Resolution: | Fixed | Closed on: | 2026-10-20 21:25:31 |
| Version: | 9.0.5, 9.1.0 | ||
| Description: | ||||
win/configure has this comment: #------------------------------------------------------------------------ # Add stuff for zlib/libtommath; note that this is mostly done in the # makefile now as we just assume that the platform hasn't got usable # z.lib/tommath.lib #------------------------------------------------------------------------ MSYS2/Mingw-Packages has usable zlib & tommath for many years now. I'm the occasional package maintainer for tcl/tk and having to refresh the patch that corrects this assumption on every minor release is a pain. I'm looking into packaging tcl9/tk9 and having this annoyance resolved will be great. I'm not proficient at autotools/automake, otherwise I would be glad to submit a patch years ago. Thanks. | ||||
| User Comments: | ||||
oscarfv added on 2025-10-29 09:11:09:
One brute-force solution for this is to explicitly exclude Tcl's zlib1.dll, etc. from our Tcl package. As long as Tcl's vendored zlib & tommath are keep in-sync with upstream (so it is basically building the same version as we have in MSYS2), it shouldn't be problematic, although not as robust as a proper build toggle. What do you think? jan.nijtmans added on 2025-10-29 21:50:31:
> What do you think? That should be OK. The zlib/tommath dll's distributed with Tcl are built with clang (ucrt) and with -static-gcclib. No other deviations from the standard build. It should be drop-in compatible with the MSYS2 built dll's. oscarfv added on 2025-10-30 08:44:30:
Thanks. I already adapted our (MSYS2) build recipe to use this approach instead of the patch for zlib in 8.6.17 and will do the same for tommath in 9.0.3. About 9.0.x: right now fails while building tcl90.dll with unresolved references to Tcl_GetNumberFromObj, Tcl_InitStringRep, TclBN_mp_neg, .... ClockMCDict and more. Do you want a ticket for this or is it a known problem? oscarfv added on 2025-10-30 08:45:10:
9.0.x is 9.0.2 on my previous comment. jan.nijtmans added on 2025-10-30 09:20:36:
> About 9.0.x: right now fails while building tcl90.dll with unresolved references ... Try passing CFLAGS_OPTIMIZE in stead of CFLAGS. See: [84e8a94613] (not exactly the same, but similar) It might also be that a tcl.h from 8.6 is still found somewhere serhiy.storchaka added on 2026-10-20 19:15:30:
Proposed in branch [61fe2461e3|win-system-zlib-tommath]: win/configure gets two options, off by default, so the standard build is unchanged: --with-system-zlib link -lz instead of the bundled zlib --with-system-libtommath link -ltommath instead of the bundled libtommath With them the bundled zlib1.dll / libtommath.dll and their import libraries are neither copied nor installed (for static builds the bundled objects are not compiled in), and configure fails if the library is not found. Tested natively with MSYS2 UCRT64 and its zlib and libtommath packages: tcl91.dll imports zlib1.dll and libtommath-1.dll from /ucrt64/bin, and the zlib, expr and format tests pass. Also checked with a MinGW-w64 cross build on Linux (shared and static, tests under Wine). The bundled zlib.h and tommath.h are still used for compiling, as on Unix. jan.nijtmans added on 2026-10-20 20:43:23:
I don't see anything wrong with this, so go ahead. +1 serhiy.storchaka added on 2026-10-20 21:14:09:
Merged to [be527d2e2d|trunk] and [809ce55fbc|core-9-0-branch]. jan.nijtmans added on 2026-10-20 21:25:31:
Please don't forget the changes.md/changes entries | ||||
