1
0
mirror of https://github.com/skeeto/w64devkit.git synced 2026-10-24 17:39:18 +03:00
Commit Graph

259 Commits

Author SHA1 Message Date
Christopher Wellons
b5b123da5b Bump to 2.5.0 2025-11-29 18:30:52 -05:00
Christopher Wellons
cecfa69de3 Upgrade to Debian 13 "trixie"
Due to bootstrapping this should have no impact on the result, except
for using a newer 7-zip to compress the 7z archive.
2025-11-15 09:14:01 -05:00
Christopher Wellons
f07ad376e2 Upgrade to busybox-w32 FRP-5857
https://frippery.org/busybox/release-notes/FRP-5857.html
2025-10-11 19:09:57 -04:00
Christopher Wellons
53cab45eb1 Filter Expat version to match the tag
Thanks to @Peter0x44 for the idea!
2025-09-24 18:52:45 -04:00
Christopher Wellons
0019476f03 Upgrade to expat 2.7.2 (#164)
Also switch to GitHub releases because it apparently not subject to
naive Expat security policies, making it more reliable. Expat only
parses trusted inputs in w64dk, and so is unaffected by security issues.
Updates are generally unnecessary. Unfortunately Expat's repository has
an unconventiontional tagging convention, and tags do not exactly match
the version, so the ARG will no longer work on its own, which is why I
had avoided its GitHub releases for so long.
2025-09-23 09:36:17 -04:00
Christopher Wellons
90c2621c4e Add uuidgen utility, a clone of Microsoft uuidgen
The original uuidgen utility complements midl, and this rewrite
complements the recently-added widl.
2025-09-14 21:20:09 -04:00
Peter0x44
44b3f9ea6f Don't specify gmp, mpfr, mpc include and lib directories separately 2025-09-10 14:51:27 +01:00
Christopher Wellons
be1515a9ee Build and include widl tool from Mingw-w64
The widl configure script is broken and does not support out-of-source
builds, so unlike gendef just above, it's built in the source tree. The
--prefix and --with-widl-includedir options must be congruent despite
their artificiality. These two paths are combined to construct the real
sysroot path at run time via tools.h:build_relative_path.

This patch also creates arch-prefixed aliases for both gendef and widl.
2025-09-07 10:37:58 -04:00
Peter0x44
e97a594ca0 Use ftpmirror.gnu.org for downloads
llvm-mingw switched to using it in this commit:
https://github.com/mstorsjo/llvm-mingw/commit/a96bbc0c

And I figured we should do the same. Especially since we download more
than just GNU make.

GNU themselves write (https://www.gnu.org/server/mirror.en.html):

> We recommend using this generic ftpmirror.gnu.org address wherever
> possible in links, documentation, etc., to reduce load on the main GNU
> server.
2025-09-03 10:29:28 -04:00
Christopher Wellons
bfd6577d07 Move w64devkit.ini to the root to mirror "installs"
One of my goals is that the distribution can be re-built in place using
only Docker or Podman, and so the unpacked distribution mirrors the
repository layout. That hasn't been true for w64devkit.ini, which is the
only file interfering with this trick, so fix it.
2025-09-03 09:09:07 -04:00
Christopher Wellons
6f59447a99 Bump to 2.4.0 2025-08-10 08:40:17 -04:00
Christopher Wellons
576676338c Update to GCC 15.2.0
https://gcc.gnu.org/gcc-15/changes.html
2025-08-08 09:10:52 -04:00
Peter0x44
e27db5e4a5 Upgrade to binutils 2.45
https://lists.gnu.org/archive/html/info-gnu/2025-07/msg00009.html
2025-07-27 14:50:31 -04:00
Christopher Wellons
b49df4c686 make: Fix support for shell paths with spaces
GNU Make incorrectly processes shell paths that contain a space on all
supported platforms. This is a common case on Windows after resolving
the shell's absolute path (e.g. "Documents and Settings" or "Program
Files"). The space is not escaped when constructing the shell command,
and then the shell path is truncated when splitting on the space.

Adding a space to sh_chars causes construct_command_argv_internal to
recurse indefinitely, so instead add a special case when copying the
shell path into the command.
2025-07-09 08:18:49 -04:00
Christopher Wellons
9a97c6d992 w64devkit.ini: MSYS2-like "path style"
Allows $PATH in w64dk environments to be controlled similarly to MSYS2.
Fixes #235.

https://www.msys2.org/wiki/MSYS2-introduction/#path
https://github.com/msys2/MSYS2-packages/blob/ae252e94/filesystem/profile#L28-L45
2025-07-06 11:29:22 -04:00
Christopher Wellons
ff695fc9c1 vim: Improve HiDPI experience with a better font
GUI Vim defaults to Fixedsys, a raster font which does not scale. On
HiDPI displays, Vim is unusable in its default configuration despite
supporting HiDPI generally. This issue was never solved upstream, and
the official Vim builds still have this poor experience. For w64dk, I
want a better out-of-the-box experience. It tries Consolas, present on
any HiDPI system, and then falls back to Fixedsys if necessary (XP). As
a side effect, the unicode experience improves as well because Fixedsys
has little support beyond ASCII.

There's an argument to be made for Lucida Console, but Consolas edges
out by not having a space in the name. This also "breaks the seal" on
making other changes to Vim's generally poor defaults, perhaps to adopt
some of neovim's more thoughtful defaults:

https://neovim.io/doc/user/vim_diff.html#defaults
2025-06-26 13:01:34 -04:00
Christopher Wellons
1d0ed3417e Fix Mingw-w64 stddef.h for C23
Mingw-w64 stddef.h embeds a full, outdated copy of GCC stddef.h, which
overrides GCC's definitions, preventing GCC from defining C23 features
such as nullptr_t and unreachable(). This is a wrong. Ideally, Mingw-w64
ought not provide stddef.h because it has nothing to add. Despite this,
its header includes non-standard headers via crtdefs.h and defines quite
a bit more than it should. Other Mingw-w64 headers incorrectly rely on
these transitive includes. Rather than fix all these header bugs, allow
it to continue defining too much, and focus only on fixing C23.
2025-06-19 19:25:15 -04:00
Christopher Wellons
d0d0af1c06 Bump to 2.3.0 2025-06-17 17:58:40 -04:00
Christopher Wellons
ff4bb190f1 Adopt Hannes Domani's relocatable mingw patch (#212)
3a38668f is incomplete, and requires the toolchain is located under a
path ending w64devkit/, which unfortunately made it into the 2.2.0
release. This patch is more complete, but must only be applied to the
native toolchain, not the cross toolchain, so it applies the patch late
in the build.
2025-06-08 10:03:47 -04:00
Christopher Wellons
f2b69d2df5 Upgrade to Mingw-w64 13.0.0
Despite the patch notes, the only new debug import libraries are
msvcr80d, msvcr100d, and msvcr110d.

https://www.mingw-w64.org/changelog/#v1300-2025-06-08
2025-06-08 09:57:33 -04:00
Christopher Wellons
af81225122 Bump to 2.2.0 2025-04-27 17:28:00 -04:00
Christopher Wellons
861ae534d5 Default to a quiet, trapping std::terminate
Remove 30k of Itanium demangling from C++ images just to display the
uncaught exception type before aborting. The message is near useless,
and GDB already does this while providing a wealth of information. An
application can still opt-in to the old behavior (including the 30k of
code) at runtime with:

    std::set_terminate(__gnu_cxx::__verbose_terminate_handler);

Speaking of GDB, std::terminate calls std::abort, but msvcrt!abort calls
exit() and does not trap. Introduce __gnu_cxx::__trap_terminate_handler
which uses __builtin_trap() instead, and set it as the new default. The
verbose handler also now uses a trap instruction. These changes improve
the debugging experience and better communicate the hard failure.

Closes #215.
2025-04-26 10:29:38 -04:00
Christopher Wellons
ab476113e2 Workaround old-style functions (GDB, Make, Vim) 2025-04-25 09:32:23 -04:00
Christopher Wellons
812849a368 Workarounds for GMP and MPFR bugs
Both GMP and MPFR sometimes use the wrong compiler when cross-compiling
unless a compiler is explicitly chosen. GCC now defaults to C23, but the
GMP configure script uses old-style, pre-ANSI function declarations that
were removed in C23.
2025-04-25 09:13:55 -04:00
Christopher Wellons
030ccf65c4 Update to GCC 15.1.0
https://gcc.gnu.org/gcc-15/changes.html
2025-04-25 07:54:22 -04:00
Christopher Wellons
3a38668f4e Remove target element from the toolchain sysroot
This extra layer serves no purpose. Removing it flattens out the
directory structure and makes it a little nicer. The mingw32.h patch
will need to be adjusted for GCC 15, as this file was renamed for the
upcoming ARM64 port.
2025-04-07 20:03:58 -04:00
Peter0x44
ec659f6883 Upgrade to libiconv 1.18 2025-03-27 15:45:03 -04:00
Peter0x44
ce0f09303c Upgrade to expat 2.7.0 2025-03-27 02:52:57 +00:00
Peter0x44
d25b1c790d Upgrade to MPFR 4.2.2 2025-03-26 01:16:09 +00:00
Christopher Wellons
fd6bb06188 Enable libbacktrace in libstdc++
This was supposed to be automatic, but libbacktrace's filetype.awk does
not recognize bigobj COFF (c9c9c07), and the detection failure overrides
--enable-stdcxx-backtrace. To work around it, clobber filetype.awk with
hardcoded output just before cross-compiling GCC.

Note: As of GCC 14.2, <stacktrace> requires linking -lstdc++exp.

Fixes #200.
2025-03-13 12:00:58 -04:00
Christopher Wellons
b217f139b8 Upgrade to busybox-w32 version FRP-5579
https://frippery.org/busybox/release-notes/FRP-5579.html
2025-02-28 07:59:02 -05:00
Christopher Wellons
05d3306ca2 Replace Vim xxd with new "rexxd" implementation
An order of magnitude faster, and far less buggy.

Ref: https://nullprogram.com/blog/2025/02/17/
2025-02-16 19:30:19 -05:00
Christopher Wellons
cbb4c3f0df Fix libmemory and libchkstk archival on x86
The build used the host ar instead of the cross ar. With -mbig-obj as
the default (c9c9c073), the host ar cannot understand the PE32 object
files and so doesn't produce a symbol index. Not the first time this
problem has come up.
2025-02-13 20:33:25 -05:00
Christopher Wellons
d2a9c1c8b2 Update Expat to 2.6.4
Change to SourceForge becasue it's slightly more reliable than
fossies.org, which is down as of the time of this commit.
2025-02-08 11:00:53 -05:00
Peter0x44
6675cda8c3 Upgrade to GDB 16.2
Closes #194.
2025-02-08 11:00:40 -05:00
Peter0x44
e0bea3b7b7 Upgrade binutils to 2.44 2025-02-08 04:57:08 +00:00
Christopher Wellons
1170f6e78a Bump to 2.1.0
No major changes, just minor changes accumulated from the past few
months.
2025-02-07 19:52:52 -05:00
Christopher Wellons
6a3c12737b Update Vim download URL
The ftp.vim.org subdomain is gone, but the server is still up under its
real hostname. No release artifacts prior to 9.0 are hosted at vim.org,
leaving only nluug.nl and its mirrors.
2025-01-24 17:58:53 -05:00
Christopher Wellons
e1d3826d6f vim: Backport "xxd -n" patch
The -n option is both useful and obvious. Surprising it took 20 years to
arrive, just after the release of Vim 9.0.
2025-01-19 20:22:38 -05:00
Christopher Wellons
c9c9c07351 binutils (as): Enable -mbig-obj by default
This format was introduced in VS 2005, and Binutils began supporting it
for x86-64 in 2013 and i386 in 2020. The format is now 20 years old and
well-established. An increasing amount of software is hitting the old,
meager COFF limitations. Rather than enable bigobj case-by-case, simply
switch to the new format by default.

This reduces compatibility with old linkers, but compatibility between
COFF toolchains has always been iffy. Even ignoring bigobj, Binutils and
MSVC link.exe already have limited object file compatibility for various
reasons.

A significant potential problem with changing the default is that the
Binutils developers didn't have the foresight to also add -mno-big-obj
at the same time, and so any change to the default at the very least
results in a flag day. This change does not introduce -mno-big-obj, so
it is not possible to produce objects in the old format.
2024-12-31 14:37:50 -05:00
Semphris
0c2b1b37ff Update Expat to 2.6.3 2024-10-30 19:43:12 -04:00
Peter0x44
a21558c6b4 Update to binutils 2.43 2024-10-25 14:25:56 -04:00
Peter0x44
b1a0339332 Update GDB to 15.2 2024-10-22 04:28:32 +01:00
Christopher Wellons
6bf81ffdc8 Disable stdcall fixup warnings (x86 only)
This warning is new in Binutils 2.42, and it regards fixing a long-time,
x86 bfd bug. Previously the fixup did not occur and bfd would fail to
locate decorated symbols. In the case of an entry point, bfd silently
linked the wrong address! It remains silent if the entry point is not
found, but the fixup makes it more likely to find the symbol.

The old, buggy behavior was an accident. It differs from MSVC and nobody
wants it. Theoretically some program might depend on the old behavior,
hence the warning, but it's incredibly unlikely, so silence the warning.
2024-09-22 19:36:28 -04:00
Christopher Wellons
11c8495d0f Upgrade to busybox-w32 FRP-5398-g89ae34445
Two patches have been effectively upstreamed.

https://frippery.org/busybox/release-notes/FRP-5467.html
2024-09-20 16:19:41 -04:00
Christopher Wellons
3cacd96206 busybox-w32: Enable UTF-8 in 64-bit builds
The x86 build supports Windows XP, but the x64 build supports no earlier
than Windows 7 (my personal favorite). Windows XP outright rejects EXEs
with a UTF-8 manifest, but Windows 7 simply ignores it. That permits GCC
to continue operating on Windows 7 with a UTF-8 manifest (as of GCC 13),
which must be disabled entirely in x86 builds for Windows XP. The same
can be done with busybox-w32 by disabling the UTF-8 check and gracefully
degrading to original "ANSI-only" behavior when the manifest is ignored.
2024-09-10 16:16:02 -04:00
Semphris
21177fbd38 Disable timestamps in 7-zip archives
Bad for reproducibility. Closes #153.
2024-08-05 08:22:50 -04:00
Christopher Wellons
481c6ab590 Bump to 2.0.0
Increment the major release for significant, "breaking" distribution
changes: new format and removed tools.
2024-08-01 10:17:26 -04:00
Christopher Wellons
d5e0d0e081 Update to GCC 14.2.0
This rolls in 7d6330af (#138), so the patch is no longer needed.
2024-08-01 08:37:14 -04:00
Christopher Wellons
ecc5c65615 Replace .zip with a self-extracting 7-zip (#87)
Cuts the distribution size by around 60%, and unpacks around 100x faster
than Windows built-in .zip support. However, 7-zip is the worst packaged
project included so far. The source release is a tarbomb with a URL that
contains two variations of the release version. It is not designed for
cross-compilation, and so requires minor source corrections and a custom
build script. Still, considering the circumstances, it's surprising how
easily it compiles.
2024-07-29 17:15:26 -04:00