add packages to your embedded app (#13)

wch-ch32v003
Matt Knight 3 years ago committed by GitHub
parent 38110fb3bd
commit 23eb8d5658
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -42,6 +42,7 @@ pub fn build(b: *std.build.Builder) !void {
"test-" ++ tst.name ++ "-" ++ cfg.name ++ ".elf", "test-" ++ tst.name ++ "-" ++ cfg.name ++ ".elf",
tst.source, tst.source,
cfg.backing, cfg.backing,
.{},
); );
if (filter == null or exe.target.cpu_arch.? == filter.?) { if (filter == null or exe.target.cpu_arch.? == filter.?) {

@ -18,11 +18,16 @@ fn root() []const u8 {
return std.fs.path.dirname(@src().file) orelse unreachable; return std.fs.path.dirname(@src().file) orelse unreachable;
} }
pub const BuildOptions = struct {
packages: ?[]const Pkg = null,
};
pub fn addEmbeddedExecutable( pub fn addEmbeddedExecutable(
builder: *std.build.Builder, builder: *std.build.Builder,
name: []const u8, name: []const u8,
source: []const u8, source: []const u8,
backing: Backing, backing: Backing,
options: BuildOptions,
) !*std.build.LibExeObjStep { ) !*std.build.LibExeObjStep {
const has_board = (backing == .board); const has_board = (backing == .board);
const chip = switch (backing) { const chip = switch (backing) {
@ -130,17 +135,22 @@ pub fn addEmbeddedExecutable(
exe.bundle_compiler_rt = false; exe.bundle_compiler_rt = false;
switch (backing) { switch (backing) {
.chip => { .chip => {
var app_pkgs = std.ArrayList(Pkg).init(builder.allocator);
try app_pkgs.append(Pkg{
.name = microzig_pkg.name,
.path = microzig_pkg.path,
.dependencies = &[_]Pkg{ config_pkg, chip_pkg },
});
if (options.packages) |packages|
try app_pkgs.appendSlice(packages);
exe.addPackage(Pkg{ exe.addPackage(Pkg{
.name = "app", .name = "app",
.path = .{ .path = source }, .path = .{ .path = source },
.dependencies = &[_]Pkg{ .dependencies = app_pkgs.items,
Pkg{
.name = microzig_pkg.name,
.path = microzig_pkg.path,
.dependencies = &[_]Pkg{ config_pkg, chip_pkg },
},
},
}); });
exe.addPackage(Pkg{ exe.addPackage(Pkg{
.name = microzig_pkg.name, .name = microzig_pkg.name,
.path = microzig_pkg.path, .path = microzig_pkg.path,
@ -148,24 +158,30 @@ pub fn addEmbeddedExecutable(
}); });
}, },
.board => |board| { .board => |board| {
exe.addPackage(Pkg{ var app_pkgs = std.ArrayList(Pkg).init(builder.allocator);
.name = "app", try app_pkgs.append(
.path = .{ .path = source }, Pkg{
.dependencies = &[_]Pkg{ .name = microzig_pkg.name,
Pkg{ .path = microzig_pkg.path,
.name = microzig_pkg.name, .dependencies = &[_]Pkg{
.path = microzig_pkg.path, config_pkg,
.dependencies = &[_]Pkg{ chip_pkg,
config_pkg, Pkg{
chip_pkg, .name = "board",
Pkg{ .path = .{ .path = board.path },
.name = "board", .dependencies = &[_]Pkg{ microzig_pkg, chip_pkg, pkgs.mmio },
.path = .{ .path = board.path },
.dependencies = &[_]Pkg{ microzig_pkg, chip_pkg, pkgs.mmio },
},
}, },
}, },
}, },
);
if (options.packages) |packages|
try app_pkgs.appendSlice(packages);
exe.addPackage(Pkg{
.name = "app",
.path = .{ .path = source },
.dependencies = app_pkgs.items,
}); });
exe.addPackage(Pkg{ exe.addPackage(Pkg{

Loading…
Cancel
Save