64 lines
3.5 KiB
Plaintext
64 lines
3.5 KiB
Plaintext
# C headers this package reads function signatures out of. One per line: a
|
|
# path, then any clang flags that header needs. A relative path is against
|
|
# this directory, ${NAME} expands from the environment, and a leading `?`
|
|
# means "if it is there" — an optional line with nothing behind it is simply
|
|
# not read.
|
|
#
|
|
# What this is for, now that the bindings are committed. generated.flan holds
|
|
# every declaration the importer produced, in the repository, so a build needs
|
|
# libraylib linkable and no header at all. This line is read by two things:
|
|
#
|
|
# 1. `flan generate-c vendor/raylib`, which is the only way generated.flan
|
|
# is written. It reads the header named here, compares the package
|
|
# against it, and refuses to write when they disagree — so it is not
|
|
# possible to regenerate the bindings without comparing them to the
|
|
# library they claim to bind.
|
|
#
|
|
# 2. every ordinary build. Every C symbol
|
|
# is bound already — by hand in raylib.flan or by generation in
|
|
# generated.flan — so the importer generates nothing and the header read
|
|
# is purely the check. It runs over every declaration in the package and
|
|
# not only the hand-written ones, because the generated file is a package
|
|
# file like any other and is checked like one — though only the
|
|
# hand-written ones can actually disagree, since the generated half came
|
|
# out of this header and agrees with it by construction. That is also why
|
|
# the hand-written lines were kept rather than replaced by generated ones.
|
|
# (There were counts here once. They said 425 and 172 and the truth had
|
|
# moved on to 464 and 197, which is what a census written into a comment
|
|
# beside a growing file always does.)
|
|
#
|
|
# Why it is no longer optional. It used to be `?${FLAN_RAYLIB_H}`, and the
|
|
# argument was that a build needs libraylib linkable and *not* raylib-devel
|
|
# installed, so requiring a header would take that property from everyone to
|
|
# give the check to whoever had one. **That argument dissolved when the header
|
|
# was committed here**: nobody needs raylib-devel to have it, because it ships
|
|
# with the repository.
|
|
#
|
|
# 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.
|
|
# Reading one version's header while linking another's library is exactly the
|
|
# silent disagreement this exists to prevent, and it is caught rather than
|
|
# described: against a 5.1-dev header, regeneration reports ten differences
|
|
# that are all real and writes nothing.
|
|
#
|
|
# 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
|
|
# more: the point of committing the header is that every tree checks against
|
|
# the same one without anybody exporting anything.
|
|
#
|
|
# To see what regeneration would produce without writing anything:
|
|
#
|
|
# flan import-c vendor/raylib/raylib-5.5.h vendor/raylib/raylib.flan
|
|
#
|
|
# What shapes the generated half — which functions are skipped, and what they
|
|
# are called — is `bindings` beside this file. See its comments for why a
|
|
# committed generated file needs a config at all.
|
|
#
|
|
raylib-5.5.h
|