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:
co-authored by
Claude Opus 4.8
parent
dd74d13120
commit
d53fcf61ad
+31
-7
@@ -43,17 +43,31 @@ def main():
|
||||
githash = subprocess.check_output(
|
||||
["git", "rev-parse", "--short", "HEAD"]).decode().strip()
|
||||
name = "BT411-%s-%s" % (time.strftime("%Y-%m-%d"), githash)
|
||||
zpath = os.path.join(outdir, name + ".zip")
|
||||
|
||||
tracked = subprocess.check_output(
|
||||
["git", "ls-files", "-z", "content/"]).decode().split("\0")
|
||||
tracked = [t for t in tracked if t]
|
||||
|
||||
# ONE unified build (2026-07-21): every layer (pod game + glass cockpit +
|
||||
# Steam transport) lives in the single exe; steam_api.dll is delay-loaded.
|
||||
# ONE unified build (2026-07-21): every layer lives in the single exe.
|
||||
# THE LICENSE GATE: BT_STEAM is compile-time (Steamworks SDK terms bar a
|
||||
# public release with Steam inside). Read the configure's answer from
|
||||
# the CMake cache; a steam-OFF zip must carry neither play_steam.bat nor
|
||||
# steam_api.dll (a stale DLL can linger from an earlier ON build).
|
||||
steam_on = False
|
||||
try:
|
||||
cache = open("build/CMakeCache.txt", encoding="utf-8", errors="ignore").read()
|
||||
steam_on = "BT_STEAM:BOOL=ON" in cache
|
||||
except OSError:
|
||||
pass
|
||||
print(" BT_STEAM=%s (from build/CMakeCache.txt)" % ("ON" if steam_on else "OFF"))
|
||||
if not steam_on:
|
||||
name += "-nosteam" # distinct name: never clobbers the dev-flavor zip
|
||||
zpath = os.path.join(outdir, name + ".zip")
|
||||
|
||||
exes = ["build/Release/btl4.exe"]
|
||||
bats = ["players/play_solo.bat", "players/join.bat", "players/join_lan.bat",
|
||||
"players/play_steam.bat"]
|
||||
bats = ["players/play_solo.bat", "players/join.bat", "players/join_lan.bat"]
|
||||
if steam_on:
|
||||
bats.append("players/play_steam.bat")
|
||||
for p in exes + bats:
|
||||
if not os.path.exists(p):
|
||||
sys.exit("MISSING: %s -- build/refresh it first" % p)
|
||||
@@ -63,8 +77,12 @@ def main():
|
||||
for exe in list(exes):
|
||||
d = os.path.dirname(exe)
|
||||
for f in sorted(os.listdir(d)):
|
||||
if f.lower().endswith(".dll"):
|
||||
exes.append(d + "/" + f)
|
||||
if not f.lower().endswith(".dll"):
|
||||
continue
|
||||
if f.lower() == "steam_api.dll" and not steam_on:
|
||||
print(" (steam OFF: leaving stale %s out of the zip)" % f)
|
||||
continue
|
||||
exes.append(d + "/" + f)
|
||||
|
||||
# System runtime DLLs the exe needs on a bare tester machine (32-bit
|
||||
# d3dx9 + MSVC runtimes -- carried in redist/, shipped next to the exe;
|
||||
@@ -79,6 +97,12 @@ def main():
|
||||
if os.path.exists("players/README.txt"):
|
||||
readme = open("players/README.txt", encoding="utf-8").read()
|
||||
readme = readme.replace("{VERSION}", name.replace("BT411_", ""))
|
||||
lines = readme.splitlines(True)
|
||||
if steam_on: # keep steam lines, drop marker
|
||||
lines = [l.replace("{STEAM}", "") for l in lines]
|
||||
else: # steam-free zip: strip them
|
||||
lines = [l for l in lines if "{STEAM}" not in l]
|
||||
readme = "".join(lines)
|
||||
z.writestr(name + "/README.txt", readme)
|
||||
for p in bats: # bats at the zip ROOT (next to
|
||||
arc = os.path.basename(p) # content\ + build\, per the guard)
|
||||
|
||||
Reference in New Issue
Block a user