mirror of
https://github.com/open-goal/jak-project
synced 2026-09-12 20:56:09 -04:00
5d5e35fb9b
## Problem Windows builds break with a current local toolchain (Scoop LLVM 22.1.8, CMake 4.4.0, VS 2026), in two independent ways: 1. The build stops at curl's deliberate guard: `#error "no non-blocking method was found/used/set"` in `third-party/curl/lib/nonblock.c`. 2. From the second configure onward, `cmake --build` re-runs CMake in an endless loop (observed 42 consecutive reconfigure cycles in a single build). Likely the same mechanism behind the "endlessly building" VS 2026 note in `docs/setup/dev/vs.md`. ## Root cause 1. `third-party/curl/CMake/CurlTests.c` passes `int *` to `ioctlsocket()`, whose third parameter is `u_long *`. Clang 22 promotes `-Wincompatible-pointer-types` to a hard error in C, so the `HAVE_IOCTLSOCKET_FIONBIO` try_compile silently fails and `curl_config.h` never defines it. Upstream CI does not see this because the windows-2022 runner image ships an older LLVM. GCC 14 promotes the same warning to a hard error, which is very likely the `CurlTests.c.obj` failure reported from MSYS2 in open-goal/jak-project#3551. Upstream curl hit the identical problem with GCC 14 and fixed the probe in curl 8.8.0 (curl/curl#13578). 2. The root CMakeLists copies the build tree's `compile_commands.json` into `<src>/build/` for clangd using `configure_file()`, which registers its input as a configure dependency. CMake rewrites `compile_commands.json` late in every generation, after `CTestTestfile.cmake` and `cmake_install.cmake` (outputs of the same Ninja regen rule), so once the dependency is registered the rule is deterministically dirty and every `ninja` invocation re-runs CMake. A pristine first configure is safe (the file does not exist yet, so the `if(EXISTS ...)` guard skips the copy), which is why the loop looks machine- or IDE-specific. ## Fix 1. Per review, re-vendor `third-party/curl` at the `curl-8_21_0` tag (previously `curl-8_3_0`), which carries the upstream probe fix plus two years of upstream development; `vendor.yaml` updated to match. Adjustments the version jump forced: - curl 8.15 removed the native macOS Secure Transport backend (`CURL_USE_SECTRANSP`), so macOS now builds curl against OpenSSL like Linux. The two macOS workflows install Homebrew `openssl@3` and export `OPENSSL_ROOT_DIR` (keg-only), and the macOS setup docs gained the same two lines. - `CURL_BROTLI` / `CURL_ZSTD` switched to AUTO-detection in curl 8.10; pinned OFF to keep the previous no-compression behavior and avoid silently linking whatever the CI images happen to have. - curl's new top-level `BUILD_EXAMPLES` cache option (default ON) leaked into discord-rpc's identically named option and broke configure at a nonexistent `examples/send-presence` directory; pinned OFF ahead of the third-party subdirectories. The diff is dominated by the mechanical tag-tree swap under `third-party/curl` (linguist-vendored, collapsed in review). The hand-written changes are `CMakeLists.txt`, the two macOS workflows, `docs/setup/system/macos.md`, and `vendor.yaml`. 2. Swap `configure_file()` for `file(COPY ...)`: the same clangd copy with no configure dependency registered. (`file(COPY_FILE ... ONLY_IF_DIFFERENT)` would be cleaner still but requires CMake 3.21, above the declared `cmake_minimum_required(VERSION 3.10)`.) ## Test plan - [x] Fresh `cmake --preset Release-windows-clang` (LLVM 22, no cache seeding) completes and logs `Enabled SSL backends: Schannel`; the FIONBIO probe passes without the previous `#error` - [x] Full Windows Release build from scratch in the branch worktree (all 1422 targets) - [x] goalc-test suite: 1509 passed, 0 failed - [x] Second consecutive configure with `compile_commands.json` present: the regen rule in `build.ninja` has no `compile_commands.json` input; `<src>/build/compile_commands.json` is still refreshed for clangd - [x] Repeated `ninja` invocations after a full build no longer re-run CMake - [x] macOS Intel and ARM CI green (first exercise of the OpenSSL backend switch) --- I work off a self-hosted forge, so this GitHub account is quiet; the configure logs and ninja dirty-node traces from the investigation are available if anyone wants the raw data. (AI-assisted)
126 lines
6.0 KiB
Plaintext
Vendored
Generated
126 lines
6.0 KiB
Plaintext
Vendored
Generated
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
|
#
|
|
# SPDX-License-Identifier: curl
|
|
|
|
Guenter Knauf <lists@gknw.net> <gk@gknw.de>
|
|
Gisle Vanem <gvanem@yahoo.no> <gisle.vanem@gmail.com>
|
|
Gisle Vanem <gvanem@yahoo.no> <gvanem@broadpark.no>
|
|
Alessandro Ghedini <alessandro@ghedini.me> <alessandro@cloudflare.com>
|
|
Alessandro Ghedini <alessandro@ghedini.me> <al3xbio@gmail.com>
|
|
Björn Stenberg <bjorn@haxx.se>
|
|
Björn Stenberg <bjorn@haxx.se> <bjst@bjorn>
|
|
Viktor Szakats <commit@vsz.me> <commit@vszakats.net>
|
|
Viktor Szakats <commit@vsz.me> <vszakats@users.noreply.github.com>
|
|
Daniel Gustafsson <daniel@yesql.se> <dgustafsson@pivotal.io>
|
|
Daniel Gustafsson <daniel@yesql.se> <daniel@hobbit.se>
|
|
Linus Nielsen <linus@haxx.se>
|
|
Yamada Yasuharu <yasuharu.yamada@access-company.com>
|
|
Ulion <ulion2002@gmail.com>
|
|
Tim Rühsen <tim.ruehsen@gmx.de>
|
|
Steve Holme <steve_holme@hotmail.com> <steven.holme@cubic.com>
|
|
Claes Jakobsson <claes@surfar.nu> <claes@versed.se>
|
|
Sergei Nikulov <sergey.nikulov@gmail.com> <snikulov@users.noreply.github.com>
|
|
Patrick Monnerat <patrick@monnerat.net> <Patrick.Monnerat@datasphere.ch>
|
|
Patrick Monnerat <patrick@monnerat.net> <patrick.monnerat@dh.com>
|
|
Patrick Monnerat <patrick@monnerat.net> <pm@datasphere.ch>
|
|
Patrick Monnerat <patrick@monnerat.net> <monnerat@users.noreply.github.com>
|
|
Nick Zitzmann <nickzman@gmail.com> <nick@chronosnet.com>
|
|
Peter Wu <peter@lekensteyn.nl> <peter_at_lekensteyn.nl>
|
|
David Woodhouse <David.Woodhouse@intel.com> <dwmw2@infradead.org>
|
|
Marcel Raad <Marcel.Raad@teamviewer.com> <raad@teamviewer.com>
|
|
Marcel Raad <Marcel.Raad@teamviewer.com> <MarcelRaad@users.noreply.github.com>
|
|
Marcel Raad <Marcel.Raad@teamviewer.com> <marcelraad@users.sf.net>
|
|
Anthony Bryan <anthonybryan@gmail.com> <ant@localhost.localdomain>
|
|
Travis Burtrum <admin@moparisthebest.com>
|
|
Dmitry Kostjuchenko <dmitrykos@neutroncode.com>
|
|
Richard Alcock <richard.alcock@gmail.com>
|
|
Richard Alcock <richard.alcock@gmail.com> <richard.alcock@mathworks.co.uk>
|
|
Jan Ehrhardt <github@ehrhardt.nl>
|
|
Florin Petriuc <petriuc.florin@gmail.com> <pfl@northq.com>
|
|
Pavel Pavlov <pavlov.pavel@gmail.com>
|
|
Jason Juang <jasjuang@gmail.com>
|
|
Carlo Teubner <carlo.teubner@gmail.com>
|
|
Joel Depooter <joel.depooter@safe.com>
|
|
Sebastian Mundry <mundry@outlook.com>
|
|
Rainer Canavan <rainer.canavan@sevenval.com> <canavan@users.noreply.github.com>
|
|
Dan Fandrich <dan@coneharvesters.com>
|
|
Henrik S. Gaßmann <henrik@gassmann.onl>
|
|
Jiří Malák <malak.jiri@gmail.com>
|
|
Nick Zitzmann <nickzman@gmail.com>
|
|
Kees Dekker <kees.dekker@infor.com>
|
|
Max Savenkov <max.savenkov@gmail.com>
|
|
Daniel Jelinski <daniel.jelinski@thomsonreuters.com> <30433125+djelinski@users.noreply.github.com>
|
|
Amit Katyal <amkatyal@cisco.com>
|
|
Giorgos Oikonomou <giorgos.n.oikonomou@gmail.com>
|
|
Evgeny Grin (Karlson2k) <k2k@narod.ru> <k2k@yandex.ru>
|
|
Evgeny Grin (Karlson2k) <k2k@narod.ru>
|
|
Peter Pih <railsnewbie257@gmail.com>
|
|
Anton Malov <malov.anton@gmail.com>
|
|
Marquis de Muesli <marquis.de.muesli@gmail.com>
|
|
Kyohei Kadota <lufia@lufia.org>
|
|
Lucas Pardue <lucaspardue.24.7@gmail.com> <lucas@cloudflare.com>
|
|
Massimiliano Fantuzzi <superfantuz@gmail.com>
|
|
Niall O'Reilly <Niall.oReilly@ucd.ie>
|
|
Mohammad Hasbini <mohammad.hasbini@gmail.com>
|
|
Andrew Ishchuk <andrew_ishchuk@office.targem.ru>
|
|
Nicolas Guillier <59726521+nicoguillier@users.noreply.github.com>
|
|
Julian Z <julianz@example.com> <jzinn@users.noreply.github.com>
|
|
Jessa Chandler <jessachandler@gmail.com>
|
|
Gökhan Şengün <gsengun@linux-5d7d.site> <gokhansengun@gmai.com>
|
|
Svyatoslav Mishyn <juef@openmailbox.org>
|
|
Douglas Steinwand <dzs-curl@dzs.fx.org>
|
|
James Fuller <jim@webcomposite.com> <jfuller@redhat.com>
|
|
James Fuller <jim@webcomposite.com> Jim Fuller <jim@webcomposite.com>
|
|
Don J Olmstead <don.j.olmstead@gmail.com>
|
|
Nicolas Sterchele <sterchelen@gmail.com>
|
|
Sergey Raevskiy <ccik@inbox.ru>
|
|
SecuritySense on github <si@securitysense.co.uk>
|
|
Mipsters on github <tomaviv57@gmail.com>
|
|
Pavel Novikov <paul.skeptic@yandex.ru>
|
|
apique13 on github <apique@PC42.isdom.isoft.fr>
|
|
Daniel Hwang <danielleehwang@gmail.com>
|
|
Jon Rumsey <jrumsey@uk.ibm.com>
|
|
Tobias Nyholm <tobias.nyholm@gmail.com>
|
|
Timur Artikov <t.artikov@2gis.ru>
|
|
Michał Antoniak <47522782+MAntoniak@users.noreply.github.com>
|
|
Gleb Ivanovsky <gl.ivanovsky@gmail.com>
|
|
Max Dymond <cmeister2@gmail.com> <max.dymond@metaswitch.com>
|
|
Max Dymond <cmeister2@gmail.com> <max.dymond@microsoft.com>
|
|
Abhinav Singh <theawless@gmail.com>
|
|
Malik Idrees Hasan Khan <77000356+MalikIdreesHasanKhan@users.noreply.github.com>
|
|
Yongkang Huang <hyk68691@hotmail.com>
|
|
Xiaoke Wang <xkernel.wang@foxmail.com>
|
|
Philip H <47042125+pheiduck@users.noreply.github.com>
|
|
neutric on github <5984479+neutric@users.noreply.github.com>
|
|
Jan-Piet Mens <jp@mens.de>
|
|
Henrik Holst <henrik.holst@millistream.com>
|
|
Christian Schmitz <support@monkeybreadsoftware.de>
|
|
Max Mehl <max.mehl@fsfe.org>
|
|
rzrymiak on github <106121613+rzrymiak@users.noreply.github.com>
|
|
Oliver Roberts <oliver@futaura.co.uk>
|
|
opensignature on github <antonio@piumarossa.it>
|
|
Cering on github <gfypm@qq.com>
|
|
a1346054 on github <36859588+a1346054@users.noreply.github.com>
|
|
zhanghu on xiaomi <zhanghu6@xiaomi.com>
|
|
Philip Heiduck <pheiduck@Philips-MBP.lan> <47042125+pheiduck@users.noreply.github.com>
|
|
bsergean on github <bsergean@gmail.com>
|
|
Stefan Eissing <stefan@eissing.org> <stefan.eissing@greenbytes.de>
|
|
Michael Musset <mickamusset@gmail.com>
|
|
Andy Alt <arch_stanton5995@protonmail.com>
|
|
Thomas1664 on github <46387399+Thomas1664@users.noreply.github.com>
|
|
dengjfzh on github <dengjfzh@gmail.com>
|
|
Brad Harder <brad.harder@gmail.com>
|
|
Derzsi Dániel <daniel@tohka.us>
|
|
Michael Osipov <michael.osipov@siemens.com> <1983-01-06@gmx.net>
|
|
Michael Osipov <michael.osipov@siemens.com> <michael-o@users.sf.net>
|
|
Christian Weisgerber <naddy@mips.inka.de> <curl-library@lists.haxx.se>
|
|
Moritz Buhl <git@moritzbuhl.de>
|
|
Aki Sakurai <75532970+AkiSakurai@users.noreply.github.com>
|
|
Sinkevich Artem <artsin666@gmail.com>
|
|
Andrew Kirillov <akirillo@uk.ibm.com>
|
|
Stephen Farrell <stephen.farrell@cs.tcd.ie>
|
|
Calvin Ruocco <calvin.ruocco@vector.com>
|
|
Hamza Bensliman <benslimanhamza99@gmail.com>
|
|
Kaixuan Li <kaixuan.li@ntu.edu.sg>
|
|
Darren Banfi <boingball@gmail.com>
|