1
0
mirror of https://github.com/skeeto/w64devkit.git synced 2026-10-23 06:08:56 +03:00

330 Commits

Author SHA1 Message Date
Christopher Wellons
c1a00cccd0 Bump to 2.9.0 2026-07-26 22:34:55 -04:00
Christopher Wellons
c05722d917 Drop libbacktrace COFF hack after bigobj changes 2026-07-26 21:12:46 -04:00
Peter0x44
d37cd99adc Drop patches Binutils 2.47 obsoleted
Binutils 2.47 includes several fixes for PE-COFF weak external fixes
from 2e2848327d8f, afec39e439ea, and 65043894aaac. The last of these
fixes GCC PR124263 so gcc-contract-violation-handler is no longer
needed.

It also includes 18ca02157d9c, which automatically promotes oversized
PE-COFF objects to BigObj. The limit was also increased to the safe
limit for regular COFF in d9d09c878e56.
2026-07-26 20:02:44 -05:00
Christopher Wellons
f0cdd55068 Upgrade to Binutils 2.47
https://lists.gnu.org/archive/html/info-gnu/2026-07/msg00006.html
2026-07-26 20:28:57 -04:00
Christopher Wellons
adadb3e9f5 Upgrade to CMake 4.4.0
The debugger breakpoint path normalization fix landed upstream (as
cmSystemTools::ToNormalizedPathOnDisk), so drop the local patch.
cmake-force-ninja.patch is still needed.

CMake 4.4.0 bundles curl 8.20.0, whose curl_setup.h now hard-errors
if _WIN32_WINNT < 0x0600. CMake's bundled copy explicitly disables
curl's CURL_TARGET_WINDOWS_VERSION option (wrapped in "if(0) XXX
not needed for build within cmake"), so the flag has to reach C
compilation directly. Add CMAKE_C_FLAGS matching the existing
CMAKE_CXX_FLAGS override.
2026-07-21 09:09:14 -04:00
Christopher Wellons
9a11bb6f53 crt: __MINGW_IMP_SYMBOL for _strtof_l and _wcstof_l
These functions are static emulations present in every libmsvcr*.a,
but the headers declare them dllimport (_CRTIMP), so callers reference
__imp__strtof_l and __imp__wcstof_l, which nothing defines, and the
link fails. Define fake import pointers alongside the definitions, as
already done for other statically-emulated functions such as
__acrt_iob_func and _initialize_onexit_table.

The _strtof_l half was merged upstream after v14.0.0 as 373c7dd0
("crt: Add missing __MINGW_IMP_SYMBOL for _strtof_l()"). The
_wcstof_l half is the same fix for the wide variant, which remains
broken upstream.
2026-07-10 20:24:08 -04:00
Christopher Wellons
9aff35afb5 Upgrade to Expat 2.8.2
Security release fixing 13 vulnerabilities.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-07-06 15:08:42 -04:00
Christopher Wellons
402c2c06eb Upgrade to Binutils 2.46.1 2026-06-08 21:53:09 -04:00
Christopher Wellons
614fe39553 Introduce most of C11 threads
Closes #388.
2026-05-25 20:53:35 -04:00
Christopher Wellons
c70b87233c Upgrade to CMake 4.3.3 2026-05-25 09:19:12 -04:00
Christopher Wellons
a208bcb70c Include aas-sign source in source.tar
dl-aas-sign was added but never added to the source-collection
stage, so the aas-sign source tarball was missing from the published
source.tar release artifact even though we now ship aas-sign.exe.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 19:03:08 -04:00
Christopher Wellons
4c1c3bccab Upgrade to Expat 2.8.1 2026-05-16 13:46:38 -04:00
Christopher Wellons
ef29c3cbfa Upgrade to GDB 17.2
https://lists.gnu.org/archive/html/info-gnu/2026-05/msg00003.html
2026-05-16 13:46:38 -04:00
Christopher Wellons
c791bc9e02 nsis: Nudge options around to fix x86 patch
Some patch programs, including busybox-w32, won't apply the patch
otherwise.
2026-05-09 00:44:12 -04:00
Christopher Wellons
6c3bc7d550 Cross-compile aas-sign.exe for the toolchain
Adds aas-sign as a Windows binary in $PREFIX/bin/ so users can sign
their own PE outputs with Azure Trusted Signing from inside the
toolchain. Same source as build-aas-sign (the Linux helper used at
release time); on Windows aas-sign's CMakeLists uses WinHTTP + BCrypt
instead of mbedtls, so the build is self-contained.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-08 22:56:33 -04:00
Christopher Wellons
7523c6755b busybox: Swap x86 to mingw32w_defconfig (#315) 2026-05-08 22:45:45 -04:00
Christopher Wellons
75ee239be7 Add NSIS 3.12 (makensis only)
Adds a CLI-only NSIS install for compiling .nsi scripts. Skips the
GUI wizards (makensisw, the NSIS installer creator) and documentation.

Path-resolution problem: makensis at $PREFIX/bin/makensis.exe would
auto-detect NSISDIR=$PREFIX (parent dir of bin), so NSIS would look
for $PREFIX/{Include,Stubs,Plugins,...} -- collides with w64devkit's
own $PREFIX/include on Windows's case-insensitive filesystem. Solve
by installing the real makensis under $PREFIX/share/nsis/bin/, where
auto-detection lands correctly on $PREFIX/share/nsis. A small alias
EXE at $PREFIX/bin/makensis.exe (built from the existing alias.c)
exec's it. Fully relocatable, no env vars.

New stages: dl-nsis, build-nsis. SCons + python3 only inside
build-nsis (not base) to avoid cache invalidation. TARGET_ARCH
derived from $ARCH at build time so the same Dockerfile works for
x64 and x86 -- no variant-x86.patch hunk needed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-08 22:44:05 -04:00
Christopher Wellons
74bdb3a1d5 busybox: disable bash applet and bash.exe alias
The busybox-w32 mingw64u_defconfig sets CONFIG_BASH_IS_ASH=y so the
ash shell is also installed under the name "bash". That collides
with any real bash on PATH (e.g. Git for Windows). Flip the Kconfig
"choice" to BASH_IS_NONE and drop bash from the alias list. The shell
is still available as ash and as sh.

CONFIG_ASH_BASH_COMPAT etc. (bash-style features inside ash) are
unrelated and remain enabled.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-08 10:31:16 -04:00
Christopher Wellons
ba3f4a86ef Upgrade to ccache 4.13.6
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-07 13:48:36 -04:00
Christopher Wellons
7c89bcd74c Move quilt build into its own stage
quilt is the only C++20 source in the project and pulls in libstdc++
headers, so its compile takes much longer than the other ~10 -nostdlib
C utilities built inline in `final`. Splitting it out lets BuildKit
cache it independently -- it's now only rebuilt when src/quilt.cpp
itself changes, rather than on every final-stage cache miss.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-07 13:40:18 -04:00
Christopher Wellons
b79f08a16b Upgrade to busybox-w32 FRP-6075
Drop busybox-005-disable-utf8-check.patch, now handled upstream.

Add a join.exe alias for the new join applet.

busybox-w32 gained crond and crontab applets, but I have decided to
disable them. It also gained a uuidgen applet, but we already have a
more complete, more appropriate implementation.

https://frippery.org/busybox/release-notes/FRP-6075.html
2026-05-07 13:32:50 -04:00
Christopher Wellons
f80f7818b0 Bump to 2.8.0 2026-05-03 11:16:34 -04:00
Christopher Wellons
b2dd6f9971 Upgrade to Expat 2.8.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-03 11:14:03 -04:00
Christopher Wellons
ddc4c7f89e Move code-signing into the build pipeline
Sign every PE inside the toolchain (~250 .exe and .dll), pack, then
sign the resulting self-extracting archive. All signing runs at
docker run time so the bulk of the build remains fully cacheable
and secrets never enter image layers.

Stage layout:
- dl-aas-sign / build-aas-sign: SHA-pinned source tarball with
  vendored mbedtls + nlohmann/json, built with the base image's
  Debian gcc.
- final: assembly only (drop the trailing 7z + CMD).
- signed (new): COPY aas-sign + sign-and-pack.sh, CMD runs the
  script at docker run time. Reads AZURE_CLIENT_ID/TENANT_ID and
  the GitHub OIDC env vars from -e flags.
- pack (new, default target): RUN 7z + CMD cat sfx archive.
  Behaviorally identical to the old final.

The release workflow rebuilds --target signed for each arch
(reusing the same GHA cache scope as the unsigned pack build),
then docker runs the image to produce the signed package on
stdout.
2026-05-03 11:10:55 -04:00
Peter0x44
18e17fdf54 Upgrade to GCC 16.1.0
Bumps GCC from 15.2.0 and adjusts the build for the new release:

- Drop the obsolete stdcall-align patch, no longer needed.

- Configure with --enable-tls so libstdc++ uses native Windows TLS
  rather than emutls. This is an ABI break: object files built with
  earlier w64devkit releases cannot be linked against new builds.

- Import gcc-dynamic-load-tzdb.patch (originally from
  redpanda-cpp/mingw-lite, by CyanoHao) so that libstdc++'s C++20
  std::chrono::current_zone() Windows backend resolves
  GetDynamicTimeZoneInformation at runtime via LoadLibrary/
  GetProcAddress. Without this, _WIN32_WINNT < 0x0600 builds fail
  to compile tzdb.cc.

- Add gcc-libgfortran-mapview.patch to replace the new
  MapViewOfFileExNuma call in libgfortran's caf_shmem with
  MapViewOfFileEx, which mingw-w64 declares for older Windows
  targets. NUMA_NO_PREFERRED_NODE makes the two calls equivalent,
  so no functional change.
2026-05-02 13:48:44 -04:00
Christopher Wellons
7d6709d785 Update to dcmake 1.7.1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-22 20:08:23 -04:00
Christopher Wellons
fcfa830c64 Upgrade to CMake 4.3.2
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-22 20:08:10 -04:00
Christopher Wellons
43fe452c6d Upgrade to ccache 4.13.4
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-22 20:07:44 -04:00
Christopher Wellons
7fffff28a0 Upgrade to MPC 1.4.1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-22 20:07:26 -04:00
Christopher Wellons
33dd0b3f07 Update to dcmake 1.7.0 2026-04-15 18:57:14 -04:00
Christopher Wellons
1f9d292f18 Update to dcmake 1.6.5
dcmake now sets _WIN32_WINNT internally, so drop the matching
define from variant-x86.patch for the dcmake build.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 10:59:14 -04:00
Christopher Wellons
5012b9288b Bump to 2.7.0 2026-04-13 20:37:33 -04:00
Christopher Wellons
22f81db827 Add source stage for collecting source tarballs
Adds an optional "source" Docker target that collects all upstream
source tarballs for producing a source.tar release artifact. BuildKit
skips it unless explicitly requested via --target source.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 17:26:55 -04:00
Christopher Wellons
07f6894161 Update to dcmake 1.6.4 2026-04-12 19:08:13 -04:00
Christopher Wellons
71f0fee060 Update to dcmake 1.6.0 2026-04-12 09:53:12 -04:00
Christopher Wellons
f248170154 Update to dcmake 1.5.0
Now requires Windows 7 even more than before.
2026-04-11 17:35:08 -04:00
Christopher Wellons
b010e46fba ninja: Fix deps log recovery
In DepsLog::Load(), the file offset used for truncation-based recovery
was advanced past each record immediately after reading its bytes from
disk, but before validating the record's semantic correctness (e.g. the
path checksum or node-id range checks). When a record was structurally
complete but semantically invalid, recovery truncated the file to an
offset that included the bad record, so it was never removed.

This created an infinite cycle: every build would load the deps log, hit
the corrupt record, "recover" by truncating everything after it (but not
the record itself), then append new dependency records that would be
destroyed by the next build's recovery. The result was spurious rebuilds
on every invocation.

Move the offset update to the end of the loop body, after all validation
has passed. Now when a record fails validation, the offset still points
before it, and truncation correctly removes it.

(This patch has been submitted upstream.)
2026-04-11 16:25:16 -04:00
Christopher Wellons
8a109cdd71 Update to dcmake 1.4.0 2026-04-10 22:53:25 -04:00
Christopher Wellons
11a70781fe Update to dcmake 1.3.0
I keep finding more things to fix upstream.
2026-04-08 23:15:46 -04:00
Christopher Wellons
f14772c39f Update to dcmake 1.2.0 2026-04-08 09:32:55 -04:00
Christopher Wellons
d855e974df Update to dcmake 1.1.2 2026-04-07 22:37:24 -04:00
Christopher Wellons
dacd0812bd Introduce dcmake CMake debugger UI
I wrote this new tool yesterday after reading about "cmake --debugger"
the night before, and it's already been powerful and useful. In the past
this would be a month-long project, but in 2026 it only takes a day.
2026-04-05 22:40:02 -04:00
Christopher Wellons
c4ee256cc2 Introduce quilt command (Quilt.cpp)
This is a primitive source control system for w64devkit, a C++ clone of
a classic, old-school tool still in some use today.
2026-04-05 22:03:30 -04:00
Christopher Wellons
4a6417c21e Introduce etc/ in the sysroot
This is where src/profile *really* belongs, and I have plans for more
etc/ entries.
2026-04-05 21:57:16 -04:00
Christopher Wellons
85073275ff Upgrade to CMake 4.3.1 2026-03-29 19:07:05 -04:00
Christopher Wellons
c05f24b368 Upgrade to Mingw-w64 14.0.0
https://www.mingw-w64.org/changelog/#v1400-2026-03-27
2026-03-27 12:19:25 -04:00
Christopher Wellons
75ee252f2b New command: recycle
Send files and folders to the recycle bin without confirmation.
2026-03-26 18:59:09 -04:00
Christopher Wellons
bc3805f83e ctags: Add QML tag support
I have my own personal use for this feature, so I'm including it.
2026-03-23 21:34:08 -04:00
Christopher Wellons
4b1706e4e3 Introduce zstd/unzstd commands
Threads are disabled in the x86 build because zstd uses Windows 7
threading features. Closes #358.
2026-03-23 21:00:55 -04:00
Christopher Wellons
a736663d15 Upgrade to CMake 4.3.0 2026-03-23 19:48:25 -04:00