2022-01-07 00:06:06 -05:00

167 lines
8.1 KiB
Zig

const builtin = @import("builtin");
const std = @import("std");
const CheckFileStep = std.build.CheckFileStep;
pub fn build(b: *std.build.Builder) void {
const target = .{
.cpu_arch = .thumb,
.cpu_model = .{ .explicit = &std.Target.arm.cpu.cortex_m4 },
.os_tag = .freestanding,
.abi = .gnueabihf,
};
const mode = b.standardReleaseOptions();
const elf = b.addExecutable("zig-nrf52-blink.elf", "main.zig");
elf.setTarget(target);
elf.setBuildMode(mode);
const test_step = b.step("test", "Test the program");
b.default_step.dependOn(test_step);
const hex_step = b.addInstallRaw(elf, "hello.hex", .{});
test_step.dependOn(&hex_step.step);
const explicit_format_hex_step = b.addInstallRaw(elf, "hello.foo", .{ .format = .hex });
test_step.dependOn(&explicit_format_hex_step.step);
const expected_hex = &[_][]const u8{
":020000021000EC",
":1000D400A401010001000000A601010001000000CC",
":1000E400FC01010001000000F80101000100000012",
":1000F4000E02010001000000B60201000100000030",
":10010400E00201000100000079020200000000008A",
":1001140000000000000000000000000000000000DB",
":1001240000000000000000000000000000000000CB",
":1001340000000000000000000000000000000000BB",
":1001440083020200F401010009000000FE01010025",
":100154000900000001000000000000000000000091",
":1001640000080002008001010004000010000000EB",
":100174000000000000000000000000001F0000005C",
":1001840048010100000040888000FF01142800524B",
":100194000080610100040020110000000000000044",
":1001A40000000000000000001F000000000000002C",
":1001B400000000000000000000000000000000003B",
":1001C400000000000000000000000000000000002B",
":1001D4000802010010000000190201002C000000B8",
":1001E400460201001B00000062020100130000002F",
":1001F400636F727465785F6D3400636F72746578D1",
":100204002D6D34006469766973696F6E206279209C",
":100214007A65726F0072656D61696E6465722064DF",
":1002240069766973696F6E206279207A65726F20CE",
":100234006F72206E656761746976652076616C758E",
":100244006500696E746567657220636173742074F8",
":1002540072756E6361746564206269747300696E9B",
":10026400646578206F7574206F6620626F756E64A4",
":100274007300000081B00091FFE700BEFDE7D0B538",
":1002840002AF90B00391029007A800F029F80399F7",
":100294000020069048680490FFE7049906980190AE",
":1002A40088420FD2FFE7019903980068405C07F881",
":1002B400310C17F8311C07A800F021F8019801301F",
":1002C4000690EAE7029807A9B1E80C50A0E80C50A0",
":1002D40091E81C5080E81C5010B0D0BDFFE7FEE749",
":1002E400D0B502AF40F2B011C0F20101B1E80C5038",
":1002F400A0E80C5091E81C5080E81C50D0BD80B59B",
":100304006F4688B006906FF35F2127F80A1C37F810",
":100314000A0C0490012038B9FFE740F2D410C0F26F",
":1003240001000021FFF7A6FF0498C0F3431027F84B",
":10033400020C37F80A0C0390002038B9FFE7039841",
":1003440000F01F000290012038B914E040F2DC10E4",
":10035400C0F201000021FFF78DFF029800F01F009A",
":1003640007F8030C0698009037F8020C0146019137",
":1003740009280ED306E040F2E410C0F20100002187",
":10038400FFF778FF40F2EC10C0F201000021FFF704",
":1003940071FF0099019A51F8220017F803CC012348",
":1003A40003FA0CF3184341F8220008B080BD81B071",
":1003B40000F03F008DF802009DF802000F3000F0BD",
":1003C4003F00022804D3FFE700208DF8030003E078",
":1003D40001208DF80300FFE79DF8030001B070478A",
":1003E4000A00000012000000020071001200000068",
":1003F4006600000003007D0C060000000000000001",
":1004040000011101250E1305030E10171B0EB44233",
":0A0414001911011206000002340065",
":020000021000EC",
":1000D400A401010001000000A601010001000000CC",
":1000E400FC01010001000000F80101000100000012",
":1000F4000E02010001000000B60201000100000030",
":10010400E00201000100000079020200000000008A",
":1001140000000000000000000000000000000000DB",
":1001240000000000000000000000000000000000CB",
":1001340000000000000000000000000000000000BB",
":1001440083020200F401010009000000FE01010025",
":100154000900000001000000000000000000000091",
":1001640000080002008001010004000010000000EB",
":100174000000000000000000000000001F0000005C",
":1001840048010100000040888000FF01142800524B",
":100194000080610100040020110000000000000044",
":1001A40000000000000000001F000000000000002C",
":1001B400000000000000000000000000000000003B",
":1001C400000000000000000000000000000000002B",
":1001D4000802010010000000190201002C000000B8",
":1001E400460201001B00000062020100130000002F",
":1001F400636F727465785F6D3400636F72746578D1",
":100204002D6D34006469766973696F6E206279209C",
":100214007A65726F0072656D61696E6465722064DF",
":1002240069766973696F6E206279207A65726F20CE",
":100234006F72206E656761746976652076616C758E",
":100244006500696E746567657220636173742074F8",
":1002540072756E6361746564206269747300696E9B",
":10026400646578206F7574206F6620626F756E64A4",
":100274007300000081B00091FFE700BEFDE7D0B538",
":1002840002AF90B00391029007A800F029F80399F7",
":100294000020069048680490FFE7049906980190AE",
":1002A40088420FD2FFE7019903980068405C07F881",
":1002B400310C17F8311C07A800F021F8019801301F",
":1002C4000690EAE7029807A9B1E80C50A0E80C50A0",
":1002D40091E81C5080E81C5010B0D0BDFFE7FEE749",
":1002E400D0B502AF40F2B011C0F20101B1E80C5038",
":1002F400A0E80C5091E81C5080E81C50D0BD80B59B",
":100304006F4688B006906FF35F2127F80A1C37F810",
":100314000A0C0490012038B9FFE740F2D410C0F26F",
":1003240001000021FFF7A6FF0498C0F3431027F84B",
":10033400020C37F80A0C0390002038B9FFE7039841",
":1003440000F01F000290012038B914E040F2DC10E4",
":10035400C0F201000021FFF78DFF029800F01F009A",
":1003640007F8030C0698009037F8020C0146019137",
":1003740009280ED306E040F2E410C0F20100002187",
":10038400FFF778FF40F2EC10C0F201000021FFF704",
":1003940071FF0099019A51F8220017F803CC012348",
":1003A40003FA0CF3184341F8220008B080BD81B071",
":1003B40000F03F008DF802009DF802000F3000F0BD",
":1003C4003F00022804D3FFE700208DF8030003E078",
":1003D40001208DF80300FFE79DF8030001B070478A",
":1003E4000A00000012000000020071001200000068",
":1003F4006600000003007D0C060000000000000001",
":1004040000011101250E1305030E10171B0EB44233",
":0A0414001911011206000002340065",
":020000022000DC",
":1002780081B00091FFE700BEFDE7D0B502AF90B0B6",
":100288000391029007A800F029F80399002006902E",
":1002980048680490FFE704990698019088420FD2B5",
":1002A800FFE7019903980068405C07F8310C17F8DC",
":1002B800311C07A800F021F8019801300690EAE700",
":1002C800029807A9B1E80C50A0E80C5091E81C501E",
":1002D80080E81C5010B0D0BDFFE7FEE7D0B502AFF4",
":1002E80040F2B011C0F20101B1E80C50A0E80C5086",
":1002F80091E81C5080E81C50D0BD80B56F4688B08E",
":1003080006906FF35F2127F80A1C37F80A0C04904F",
":10031800012038B9FFE740F2D410C0F201000021F3",
":10032800FFF7A6FF0498C0F3431027F8020C37F82C",
":100338000A0C0390002038B9FFE7039800F01F006B",
":100348000290012038B914E040F2DC10C0F201003C",
":100358000021FFF78DFF029800F01F0007F8030C3B",
":100368000698009037F8020C0146019109280ED32F",
":1003780006E040F2E410C0F201000021FFF778FF28",
":1003880040F2EC10C0F201000021FFF771FF009964",
":10039800019A51F8220017F803CC012303FA0CF351",
":1003A800184341F8220008B080BD81B000F03F003A",
":1003B8008DF802009DF802000F3000F03F0002287F",
":1003C80004D3FFE700208DF8030003E001208DF837",
":0C03D8000300FFE79DF8030001B0704730",
":00000001FF",
};
test_step.dependOn(&CheckFileStep.create(b, hex_step.getOutputSource(), expected_hex).step);
test_step.dependOn(&CheckFileStep.create(b, explicit_format_hex_step.getOutputSource(), expected_hex).step);
}