From 587651712793f79b28bd67b0af60b4e3f36e9c19 Mon Sep 17 00:00:00 2001 From: Matt Knight Date: Sun, 25 Jun 2023 11:56:35 -0700 Subject: [PATCH] helper function in build pkg (#13) --- tools/uf2/build.zig | 30 +++++++++++++++++++++++++++++- tools/uf2/src/uf2.zig | 2 +- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/tools/uf2/build.zig b/tools/uf2/build.zig index f72e906..f809713 100644 --- a/tools/uf2/build.zig +++ b/tools/uf2/build.zig @@ -1,6 +1,34 @@ const std = @import("std"); +const Dependency = std.Build.Dependency; +const CompileStep = std.Build.CompileStep; +const FileSource = std.Build.FileSource; -pub fn build(b: *std.build.Builder) void { +const uf2 = @import("src/uf2.zig"); + +pub fn from_elf(dep: Dependency, exe: CompileStep, opts: uf2.Options) FileSource { + std.debug.assert(!opts.bundle_source); // TODO: bundle source in UF2 File + const b = dep.builder; + const elf2uf2 = dep.artifact("elf2uf2"); + const run = b.addRunArtifact(elf2uf2); + + // family id + if (opts.family_id) |family_id| { + inline for (@typeInfo(uf2.FamilyId).Enum.fields) |field| { + if (@field(uf2.FamilyId, field.name) == family_id) { + run.addArgs(&.{ "--family-id", field.name }); + } + } + } + + // elf file + run.addArg("--elf-path"); + run.addArtifactArg(exe); + + // output file + return run.addPrefixedOutputFileArg("--output-path", "test.uf2"); +} + +pub fn build(b: *std.Build) void { const optimize = b.standardOptimizeOption(.{}); const target = b.standardTargetOptions(.{}); diff --git a/tools/uf2/src/uf2.zig b/tools/uf2/src/uf2.zig index 20e08e8..861dc1a 100644 --- a/tools/uf2/src/uf2.zig +++ b/tools/uf2/src/uf2.zig @@ -167,7 +167,7 @@ pub const Archive = struct { try self.blocks.appendSlice(blocks.items); if (opts.bundle_source) - @panic("TODO"); + @panic("TODO: bundle source in UF2 file"); } pub fn write_to(self: *Self, writer: anytype) !void {