ogl_beamforming

Ultrasound Beamforming Implemented with OpenGL
git clone anongit@rnpnr.xyz:ogl_beamforming.git
Log | Files | Refs | Feed | Submodules | README | LICENSE

Commit: e545a88bf8f442a63a96d52d221b082fff119f1b
Parent: e225f40852b206ac11ed733f8fcbc816dbdd6898
Author: Randy Palamar
Date:   Tue,  8 Jul 2025 07:59:25 -0600

build: generate matlab bindings for live feedback flags

Diffstat:
Mbuild.c | 50+++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 49 insertions(+), 1 deletion(-)

diff --git a/build.c b/build.c @@ -15,6 +15,8 @@ #include "util.h" +#include "beamformer_parameters.h" + #define OUTDIR "out" #define OUTPUT(s) OUTDIR "/" s @@ -424,7 +426,7 @@ function void check_rebuild_self(Arena arena, i32 argc, char *argv[]) { char *binary = shift(argv, argc); - if (needs_rebuild(binary, __FILE__, "os_win32.c", "os_linux.c", "util.c", "util.h")) { + if (needs_rebuild(binary, __FILE__, "os_win32.c", "os_linux.c", "util.c", "util.h", "beamformer_parameters.h")) { Stream name_buffer = arena_stream(arena); stream_append_s8s(&name_buffer, c_str_to_s8(binary), s8(".old")); char *old_name = (char *)arena_stream_commit_zero(&arena, &name_buffer).data; @@ -695,6 +697,51 @@ build_tests(Arena arena, CommandList cc) return result; } +function void +stream_begin_matlab_enumeration(Stream *s, s8 name, s8 type) +{ + stream_append_s8s(s, s8("classdef "), name, s8(" < "), type, s8("\n"), s8(" enumeration\n")); +} + +function void +stream_append_matlab_enumeration_field(Stream *s, s8 field) +{ + stream_append_s8s(s, s8(" "), field, s8(",\n")); +} + +function void +stream_end_matlab_enumeration(Stream *s) +{ + stream_append_s8(s, s8(" end\nend\n")); +} + +function b32 +build_matlab_bindings(Arena arena) +{ + b32 result = 1; + os_make_directory(OUTPUT("matlab")); + + char *feedback_out = OUTPUT("matlab/LiveFeedbackFlags.m"); + /* NOTE(rnp): if one file is outdated all files are outdated */ + if (needs_rebuild(feedback_out, "beamformer_parameters.h")) { + + Stream sb = arena_stream(arena); + + #define X(name, flag) stream_append_matlab_enumeration_field(&sb, s8(#name " (" str(flag) ")")); + + stream_begin_matlab_enumeration(&sb, s8("LiveFeedbackFlags"), s8("int32")); + BEAMFORMER_LIVE_IMAGING_DIRTY_FLAG_LIST + stream_end_matlab_enumeration(&sb); + result &= os_write_new_file(feedback_out, stream_to_s8(&sb)); + + #undef X + + if (!result) build_log_failure("%s", feedback_out); + } + + return result; +} + i32 main(i32 argc, char *argv[]) { @@ -711,6 +758,7 @@ main(i32 argc, char *argv[]) CommandList c = cmd_base(&arena, &options); if (!check_build_raylib(arena, c, options.debug)) return 1; + result &= build_matlab_bindings(arena); result &= build_helper_library(arena, c); if (options.tests) result &= build_tests(arena, c);