1- const sources : []const []const u8 = &.{
2- "SAR.cpp" ,
3- "Features/AutoSubmit.cpp" ,
4- "Features/DataMapDumper.cpp" ,
5- "Features/WorkshopList.cpp" ,
6- "Features/DiscordRichPresence.cpp" ,
7- "Features/Routing/SeamshotFind.cpp" ,
8- "Features/Routing/EntityInspector.cpp" ,
9- "Features/Routing/Ruler.cpp" ,
10- "Features/Routing/StepSlopeBoostDebug.cpp" ,
11- "Features/SteamTimeline.cpp" ,
12- "Features/Timer/Timer.cpp" ,
13- "Features/Timer/TimerAverage.cpp" ,
14- "Features/Timer/TimerCheckPoints.cpp" ,
15- "Features/Timer/PauseTimer.cpp" ,
16- "Features/Teleporter.cpp" ,
17- "Features/StepCounter.cpp" ,
18- "Features/Renderer.cpp" ,
19- "Features/Stats/JumpStats.cpp" ,
20- "Features/Stats/StepStats.cpp" ,
21- "Features/Stats/Sync.cpp" ,
22- "Features/Stats/StatsCounter.cpp" ,
23- "Features/Stats/VelocityStats.cpp" ,
24- "Features/Stats/Stats.cpp" ,
25- "Features/OverlayRender.cpp" ,
26- "Features/Cvars.cpp" ,
27- "Features/Summary.cpp" ,
28- "Features/PlacementScanner.cpp" ,
29- "Features/PlayerTrace.cpp" ,
30- "Features/Listener.cpp" ,
31- "Features/ReloadedFix.cpp" ,
32- "Features/Session.cpp" ,
33- "Features/FCPS.cpp" ,
34- "Features/Feature.cpp" ,
35- "Features/TwitchIntegration.cpp" ,
36- "Features/ChallengeMode.cpp" ,
37- "Features/Stitcher.cpp" ,
38- "Features/SeasonalASCII.cpp" ,
39- "Features/Speedrun/CategoriesPreset.cpp" ,
40- "Features/Speedrun/CategoryCreator.cpp" ,
41- "Features/Speedrun/Categories.cpp" ,
42- "Features/Speedrun/Rules.cpp" ,
43- "Features/Speedrun/SpeedrunTimer.cpp" ,
44- "Features/Hud/Crosshair.cpp" ,
45- "Features/Hud/Minimap.cpp" ,
46- "Features/Hud/PlacementHelperHud.cpp" ,
47- "Features/Hud/InputHud.cpp" ,
48- "Features/Hud/PortalgunHud.cpp" ,
49- "Features/Hud/Watermark.cpp" ,
50- "Features/Hud/VelocityGraph.cpp" ,
51- "Features/Hud/SpeedrunHud.cpp" ,
52- "Features/Hud/PerformanceHud.cpp" ,
53- "Features/Hud/StrafeHud.cpp" ,
54- "Features/Hud/StrafeQuality.cpp" ,
55- "Features/Hud/EHMDebugHud.cpp" ,
56- "Features/Hud/LPHud.cpp" ,
57- "Features/Hud/InspectionHud.cpp" ,
58- "Features/Hud/PortalPlacement.cpp" ,
59- "Features/Hud/RhythmGame.cpp" ,
60- "Features/Hud/AimPointHud.cpp" ,
61- "Features/Hud/StrafeSyncHud.cpp" ,
62- "Features/Hud/Toasts.cpp" ,
63- "Features/Hud/ScrollSpeed.cpp" ,
64- "Features/Hud/CheatWarn.cpp" ,
65- "Features/Hud/VphysHud.cpp" ,
66- "Features/Hud/Hud.cpp" ,
67- "Features/Camera.cpp" ,
68- "Features/Tas/TasScript.cpp" ,
69- "Features/Tas/TasController.cpp" ,
70- "Features/Tas/TasParser.cpp" ,
71- "Features/Tas/TasProtocol.cpp" ,
72- "Features/Tas/TasTools/CheckTool.cpp" ,
73- "Features/Tas/TasTools/AutoAimTool.cpp" ,
74- "Features/Tas/TasTools/CommandTool.cpp" ,
75- "Features/Tas/TasTools/AngleToolsUtils.cpp" ,
76- "Features/Tas/TasTools/UseTool.cpp" ,
77- "Features/Tas/TasTools/LookTool.cpp" ,
78- "Features/Tas/TasTools/TasUtils.cpp" ,
79- "Features/Tas/TasTools/AbsoluteMoveTool.cpp" ,
80- "Features/Tas/TasTools/StrafeTool.cpp" ,
81- "Features/Tas/TasTools/DuckTool.cpp" ,
82- "Features/Tas/TasTools/StopTool.cpp" ,
83- "Features/Tas/TasTools/ZoomTool.cpp" ,
84- "Features/Tas/TasTools/ShootTool.cpp" ,
85- "Features/Tas/TasTools/DecelTool.cpp" ,
86- "Features/Tas/TasTools/AutoJumpTool.cpp" ,
87- "Features/Tas/TasTools/SetAngleTool.cpp" ,
88- "Features/Tas/TasTools/MoveTool.cpp" ,
89- "Features/Tas/TasPlayer.cpp" ,
90- "Features/Tas/TasTool.cpp" ,
91- "Features/ClassDumper.cpp" ,
92- "Features/ChapterMenu.cpp" ,
93- "Features/Updater.cpp" ,
94- "Features/TimescaleDetect.cpp" ,
95- "Features/SegmentedTools.cpp" ,
96- "Features/GroundFramesCounter.cpp" ,
97- "Features/AchievementTracker.cpp" ,
98- "Features/RNGManip.cpp" ,
99- "Features/Pathmatch.cpp" ,
100- "Features/WindowResizer.cpp" ,
101- "Features/FovChanger.cpp" ,
102- "Features/EntityList.cpp" ,
103- "Features/NetMessage.cpp" ,
104- "Features/Metronome.cpp" ,
105- "Features/Demo/DemoParser.cpp" ,
106- "Features/Demo/NetworkGhostPlayer.cpp" ,
107- "Features/Demo/DemoGhostPlayer.cpp" ,
108- "Features/Demo/GhostLeaderboard.cpp" ,
109- "Features/Demo/GhostRenderer.cpp" ,
110- "Features/Demo/DemoGhostEntity.cpp" ,
111- "Features/Demo/Demo.cpp" ,
112- "Features/Demo/GhostEntity.cpp" ,
113- "Features/ConfigPlus.cpp" ,
114- "Interface.cpp" ,
115- "Entity.cpp" ,
116- "Command.cpp" ,
117- "Utils.cpp" ,
118- "CrashHandler.cpp" ,
119- "Variable.cpp" ,
120- "Checksum.cpp" ,
121- "Offsets.cpp" ,
122- "Games/ThinkingWithTimeMachine.cpp" ,
123- "Games/Portal2_2011.cpp" ,
124- "Games/Portal2.cpp" ,
125- "Games/INFRA.cpp" ,
126- "Games/ApertureTag.cpp" ,
127- "Games/BeginnersGuide.cpp" ,
128- "Games/PortalStoriesMel.cpp" ,
129- "Games/StanleyParable.cpp" ,
130- "Games/PortalReloaded.cpp" ,
131- "Modules/Tier1.cpp" ,
132- "Modules/FileSystem.cpp" ,
133- "Modules/Server.cpp" ,
134- "Modules/Matchmaking.cpp" ,
135- "Modules/EngineDemoRecorder.cpp" ,
136- "Modules/SteamAPI.cpp" ,
137- "Modules/VGui.cpp" ,
138- "Modules/InputSystem.cpp" ,
139- "Modules/Engine.cpp" ,
140- "Modules/EngineDemoPlayer.cpp" ,
141- "Modules/Client.cpp" ,
142- "Modules/Surface.cpp" ,
143- "Modules/Module.cpp" ,
144- "Modules/Scheme.cpp" ,
145- "Modules/MaterialSystem.cpp" ,
146- "Modules/Console.cpp" ,
147- "Plugin.cpp" ,
148- "Game.cpp" ,
149- "Event.cpp" ,
150- "Utils/Math.cpp" ,
151- "Utils/TwitchConnection.cpp" ,
152- "Utils/ed25519/sc.cpp" ,
153- "Utils/ed25519/fe.cpp" ,
154- "Utils/ed25519/key_exchange.cpp" ,
155- "Utils/ed25519/sign.cpp" ,
156- "Utils/ed25519/ge.cpp" ,
157- "Utils/ed25519/sha512.cpp" ,
158- "Utils/ed25519/keypair.cpp" ,
159- "Utils/ed25519/add_scalar.cpp" ,
160- "Utils/ed25519/verify.cpp" ,
161- "Utils/ed25519/seed.cpp" ,
162- "Utils/json11.cpp" ,
163- "Utils/NetworkConnection.cpp" ,
164- "Utils/SDK/EntityEdict.cpp" ,
165- "Utils/SDK/KeyValues.cpp" ,
166- "Utils/SDK/MeshBuilder.cpp" ,
167- "Utils/SDK/CViewSetup.cpp" ,
168- "Utils/SDK/ServerPlugin.cpp" ,
169- "Utils/Memory.cpp" ,
170- "Utils/lodepng.cpp" ,
171- "Cheats.cpp" ,
172- "Scheduler.cpp" ,
173- };
174-
1751const SarTarget = enum { linux , windows };
1762
1773pub fn build (b : * std.Build ) void {
@@ -183,6 +9,8 @@ pub fn build(b: *std.Build) void {
1839 const target = b .resolveTargetQuery (target_query );
18410 const optimize = b .standardOptimizeOption (.{});
18511
12+ const sources = findSarSources (b ) catch | err | std .debug .panic ("error listing source files: {s}" , .{@errorName (err )});
13+
18614 const mod = b .createModule (.{
18715 .target = target ,
18816 .optimize = optimize ,
@@ -484,4 +312,21 @@ fn generateHeaders(b: *std.Build) std.Build.LazyPath {
484312 return generate_headers .getDirectory ();
485313}
486314
315+ /// Walks the `src/` directory to find all files whose names end `.cpp`.
316+ /// Returns a slice of their paths relative to `src/`.
317+ fn findSarSources (b : * std.Build ) ! []const []const u8 {
318+ const arena = b .graph .arena ;
319+ var sources : std .ArrayListUnmanaged ([]const u8 ) = .empty ;
320+ var dir = try b .build_root .handle .openDir ("src/" , .{ .iterate = true });
321+ defer dir .close ();
322+ var w = try dir .walk (arena );
323+ defer w .deinit ();
324+ while (try w .next ()) | entry | {
325+ if (entry .kind != .file ) continue ;
326+ if (! std .mem .endsWith (u8 , entry .path , ".cpp" )) continue ;
327+ try sources .append (arena , b .dupe (entry .path ));
328+ }
329+ return sources .items ;
330+ }
331+
487332const std = @import ("std" );
0 commit comments