summaryrefslogtreecommitdiff
path: root/tools/seq_compiler.py
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-17 11:32:05 +0100
committerskal <pascal.massimino@gmail.com>2026-02-17 11:32:05 +0100
commit95dd0ff4c000f3752c5c9112d79de3a4bdaa7b25 (patch)
treeec6ff52b0bd8de357068f3bb7521ddf0b004c5e2 /tools/seq_compiler.py
parentbd26bc743933dcd5241fc87d160a893f83644dfb (diff)
fix(build): Resolve clean build failure from generated timeline header
When starting from a clean tree (where `src/generated/` does not exist), the build would fail with a "file not found" error for `generated/timeline.h`. This was due to an incorrect dependency graph where `gpu.cc` was compiled before its required header was generated. This commit fixes the issue by making the dependency explicit: - Modified `tools/seq_compiler.py` to explicitly generate `timeline.h` alongside `timeline.cc`. - Updated `cmake/DemoCodegen.cmake` to declare both files as `OUTPUT`s of the timeline compilation step. - Added a direct dependency from the `gpu` library target to the `generate_timeline` custom target in `cmake/DemoLibraries.cmake`. - Refactored the generated file paths in `DemoCodegen.cmake` into a single `GENERATED_CODE` variable for improved clarity and future-proofing.
Diffstat (limited to 'tools/seq_compiler.py')
-rwxr-xr-xtools/seq_compiler.py24
1 files changed, 22 insertions, 2 deletions
diff --git a/tools/seq_compiler.py b/tools/seq_compiler.py
index dec3ab1..18d5a1f 100755
--- a/tools/seq_compiler.py
+++ b/tools/seq_compiler.py
@@ -710,11 +710,31 @@ void RenderTimeline(WGPUSurface surface, float time, int width, int height,
}
'''
- # Write output
+ # Write C++ output
with open(args.output, 'w') as f:
f.write(all_cpp)
- print(f"Generated {len(sequences)} sequence(s) -> {args.output}")
+ # Write C++ header
+ header_path = os.path.splitext(args.output)[0] + ".h"
+ header_content = f'''// Generated by seq_compiler.py
+// DO NOT EDIT
+#pragma once
+
+#include "gpu/gpu.h"
+#include "gpu/sequence.h"
+
+void InitializeSequences(const GpuContext& ctx, int width, int height);
+Sequence* GetActiveSequence(float time);
+void RenderTimeline(WGPUCommandEncoder encoder, float time, int width, int height,
+ float beat_time, float audio_intensity);
+void RenderTimeline(WGPUSurface surface, float time, int width, int height,
+ float beat_time, float audio_intensity);
+float GetDemoDuration();
+'''
+ with open(header_path, 'w') as f:
+ f.write(header_content)
+
+ print(f"Generated {len(sequences)} sequence(s) -> {args.output} and {header_path}")
if __name__ == '__main__':
main()