The header ships with the package, so the check is not optional any more

vendor/raylib/web/ is gitignored, so the header a build-web.sh tree happens
to have never appears in a git worktree. Every parallel lane that touched
bindings was checking against nothing and was not told. One went looking and
used a copy out of ~/.local/share/Trash, which happened to be byte-identical.
A check that silently does not run is worse than no check.

raylib.h is 128K and now sits beside the package it describes. The argument
for ?${FLAN_RAYLIB_H} was that requiring a header would make a build need
raylib-devel, and that dissolves when the header is committed here. There is
no variable to export any more; to check against a different header, edit
the line or replace the file.

Measured, because always-on has to be paid by every build: a warm build of
raylib-font.flan is 0.10-0.11s against a 0.10s baseline. The header read is
cached and keyed like the object cache, so this is under the noise. Verified
it fires by putting f64 where raylib says int and watching an ordinary build
refuse, naming the tracked header.
This commit is contained in:
Joseph Ferano 2026-09-13 14:32:38 +07:00
parent d66d717716
commit 2957804ebc
2 changed files with 1726 additions and 13 deletions

31
vendor/raylib/headers vendored
View File

@ -24,13 +24,19 @@
# agrees with it by construction. That is also why the hand-written lines # agrees with it by construction. That is also why the hand-written lines
# were kept rather than replaced by generated ones. # were kept rather than replaced by generated ones.
# #
# Why it is still optional. A build needs libraylib linkable and *not* # Why it is no longer optional. It used to be `?${FLAN_RAYLIB_H}`, and the
# raylib-devel installed, which is a property worth keeping; requiring a header # argument was that a build needs libraylib linkable and *not* raylib-devel
# would take it from everyone to give the check to whoever has one. Before the # installed, so requiring a header would take that property from everyone to
# bindings were committed this marker also decided how many bindings a build # give the check to whoever had one. **That argument dissolved when the header
# got, which was the real cost of it being opt-in; it no longer decides that, # was committed here**: nobody needs raylib-devel to have it, because it ships
# and all it now withholds is a check that regeneration has already run once. # with the repository.
# Same shape as ${FLAN_RAYLIB_WEB} in `link`, and for the same reason. #
# What being optional actually cost was found the hard way. `vendor/raylib/web/`
# is gitignored, so the header a `build-web.sh` tree happens to have never
# appears in a git worktree — and every parallel lane that touched bindings was
# therefore checking against nothing and not being told. One of them went
# looking and used a copy out of `~/.local/share/Trash`, which happened to be
# byte-identical. A check that silently does not run is worse than no check.
# #
# The version must match the shared library `link` names — 5.5, libraylib.so.550. # The version must match the shared library `link` names — 5.5, libraylib.so.550.
# Reading one version's header while linking another's library is exactly the # Reading one version's header while linking another's library is exactly the
@ -38,11 +44,10 @@
# described: against a 5.1-dev header, regeneration reports ten differences # described: against a 5.1-dev header, regeneration reports ten differences
# that are all real and writes nothing. # that are all real and writes nothing.
# #
# export FLAN_RAYLIB_H=/path/to/raylib-5.5/src/raylib.h # To check against a different header — a newer raylib, or a system one — edit
# # this line or replace the file. There is no environment variable for it any
# vendor/raylib/build-web.sh already clones that exact tag to build the browser # more: the point of committing the header is that every tree checks against
# archive, so a tree that has built for web has the matching header at # the same one without anybody exporting anything.
# vendor/raylib/web/raylib-5.5/src/raylib.h.
# #
# To see what regeneration would produce without writing anything: # To see what regeneration would produce without writing anything:
# #
@ -52,4 +57,4 @@
# are called — is `bindings` beside this file. See its comments for why a # are called — is `bindings` beside this file. See its comments for why a
# committed generated file needs a config at all. # committed generated file needs a config at all.
# #
?${FLAN_RAYLIB_H} raylib-5.5.h

1708
vendor/raylib/raylib-5.5.h vendored Normal file

File diff suppressed because it is too large Load Diff