BT_STEAM restored as THE compile gate (license) -- default OFF

The unification flattened BT_STEAM into the always-on exe; the user flagged
the constraint that makes it the one legitimate compile gate: the Steamworks
SDK license bars a public release with Steam inside, so a release build must
exclude it entirely.

- CMakeLists: option(BT_STEAM OFF) restored around the Steamworks block --
  an OFF configure touches no SDK headers, no steam_api.lib, no DLL copy.
  BT_GLASS stays retired (always defined); ONE build dir either way.
  Dev checkout: build/ configured once with -DBT_STEAM=ON.
- mkdist: reads BT_STEAM from build/CMakeCache.txt.  Steam-OFF zips exclude
  play_steam.bat + steam_api.dll (explicitly filtering a STALE DLL left by
  an earlier ON build), strip the README steam section ({STEAM} line
  markers), and take a -nosteam name suffix so the flavors never clobber
  (found live: both stamped 4.11.436 and the release zip overwrote the dev
  zip).

Verified both flavors:
  ON  (dev build):  steam smoke degrades to Winsock without the client;
      zip carries play_steam.bat + steam_api.dll + README steam lines.
  OFF (scratch build-relcheck, deleted after): 0 compile errors; exe dir =
      btl4.exe + OpenAL32.dll only; boots + simulates; BT_STEAM_NET=1 inert
      (transport not in the binary); end-to-end zip has zero steam bits and
      a clean README.

KB: context/glass-cockpit.md unified-build section records the license gate.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
arcattack
2026-07-21 10:40:03 -05:00
co-authored by Claude Opus 4.8
parent dd74d13120
commit d53fcf61ad
4 changed files with 85 additions and 38 deletions
+11 -3
View File
@@ -27,9 +27,17 @@ version skew (a stale steam exe shipped 2 days behind), tripled build time, and
| `BT_STEAM_NET=1` | the Steam transport (FakeIP/SDR; degrades to Winsock without the Steam client). `steam_api.dll` is **DELAY-LOADED** (`/DELAYLOAD` + delayimp) — machines without the DLL run everything else |
| (nothing) | the old pod-build behavior byte-for-byte: DEV profile, no menu, waits for the console egg — **the cabinet default is unchanged** |
- The `BT_GLASS`/`BT_STEAM` macros are now ALWAYS defined (seam markers only — the `#ifdef`
sites remain as documentation of the layer boundaries). Every gated code path was audited:
all are instance-guarded (`PadRIO::activeInstance`, `steamActive`) or env-gated at runtime.
- The `BT_GLASS` macro is now ALWAYS defined (a seam marker only — the `#ifdef` sites remain
as documentation of the layer boundary). Every gated code path was audited: all are
instance-guarded (`PadRIO::activeInstance`, `steamActive`) or env-gated at runtime.
- **`BT_STEAM` stays a COMPILE gate (the LICENSE gate, default OFF, restored 2026-07-21):**
the Steamworks SDK terms bar a public release with Steam inside, so a release configure
must be able to exclude it entirely — no SDK headers, no `steam_api.lib`, no DLL. The dev
checkout configures `build/` once with `-DBT_STEAM=ON`. `mkdist.py` reads the answer from
`build/CMakeCache.txt`: steam-OFF zips carry no `play_steam.bat`, no `steam_api.dll`
(including a STALE one from an earlier ON build), a README with the steam section stripped,
and a `-nosteam` name suffix so the two flavors never clobber. Verified both flavors:
OFF exe has no steam bits + `BT_STEAM_NET=1` is inert; ON exe degrades to Winsock.
- **Menu guard (cabinet protection):** the miniconsole previously claimed any zero-arg launch;
unified, it requires `BT_PLATFORM=glass` (or `BT_FE_MENU=1`) — a bare cabinet boot can never
land in the menu (btl4main.cpp, platform parse moved above the fe_menu_mode computation).