|
| 1 | +const Builder = @import("std").build.Builder; |
| 2 | +const builtin = @import("builtin"); |
| 3 | +const std = @import("std"); |
| 4 | +const CheckFileStep = std.build.CheckFileStep; |
| 5 | + |
| 6 | +pub fn build(b: *Builder) void { |
| 7 | + const target = .{ |
| 8 | + .cpu_arch = .thumb, |
| 9 | + .cpu_model = .{ .explicit = &std.Target.arm.cpu.cortex_m4 }, |
| 10 | + .os_tag = .freestanding, |
| 11 | + .abi = .gnueabihf, |
| 12 | + }; |
| 13 | + |
| 14 | + const mode = b.standardReleaseOptions(); |
| 15 | + |
| 16 | + const elf = b.addExecutable("zig-nrf52-blink.elf", "main.zig"); |
| 17 | + elf.setTarget(target); |
| 18 | + elf.setBuildMode(mode); |
| 19 | + |
| 20 | + const test_step = b.step("test", "Test the program"); |
| 21 | + b.default_step.dependOn(test_step); |
| 22 | + |
| 23 | + const hex_step = b.addInstallRaw(elf, "hello.hex"); |
| 24 | + test_step.dependOn(&hex_step.step); |
| 25 | + |
| 26 | + const explicit_format_hex_step = b.addInstallRawWithFormat(elf, "hello.foo", .hex); |
| 27 | + test_step.dependOn(&explicit_format_hex_step.step); |
| 28 | + |
| 29 | + const expected_hex = &[_][]const u8{ |
| 30 | + \\:020000021000EC |
| 31 | + \\:1000D400D001010001000000D20101000100000074 |
| 32 | + \\:1000E40028020100010000002402010001000000B8 |
| 33 | + \\:1000F4003A02010001000000E202010001000000D8 |
| 34 | + \\:100104000C03010001000000A50202000000000031 |
| 35 | + \\:1001140000000000000000000000000000000000DB |
| 36 | + \\:1001240000000000000000000000000000000000CB |
| 37 | + \\:1001340000000000000000000000000000000000BB |
| 38 | + \\:10014400AF02020098020100090000004D02010004 |
| 39 | + \\:100154000900000001000000000000000000000091 |
| 40 | + \\:100164000004000100C0800000020000080000003C |
| 41 | + \\:100174000000000000000000000000001E0000005D |
| 42 | + \\:1001840048010100000040888080FF000A14002913 |
| 43 | + \\:1001940000C0B00000020090080000000000000051 |
| 44 | + \\:1001A40000000000000000001E000000000000002D |
| 45 | + \\:1001B400000000000000000000000000000000003B |
| 46 | + \\:1001C400000000000000000000000000000000002B |
| 47 | + \\:1001D400000000000000000000000000000000001B |
| 48 | + \\:1001E400000000000000000000000000000000000B |
| 49 | + \\:1001F4000000000000000000000000008702010071 |
| 50 | + \\:1002040010000000200201002C0000006B0201001D |
| 51 | + \\:100214001B000000570201001300000072656D61AD |
| 52 | + \\:10022400696E646572206469766973696F6E2062B1 |
| 53 | + \\:1002340079207A65726F206F72206E6567617469C8 |
| 54 | + \\:1002440076652076616C756500636F727465782DD0 |
| 55 | + \\:100254006D3400696E646578206F7574206F662054 |
| 56 | + \\:10026400626F756E647300696E746567657220638E |
| 57 | + \\:10027400617374207472756E63617465642062695D |
| 58 | + \\:100284007473006469766973696F6E206279207A89 |
| 59 | + \\:1002940065726F00636F727465785F6D340000007F |
| 60 | + \\:1002A40081B00091FFE700BEFDE7D0B502AF90B08A |
| 61 | + \\:1002B4000391029007A800F029F803990020069002 |
| 62 | + \\:1002C40048680490FFE704990698019088420FD289 |
| 63 | + \\:1002D400FFE7019903980068405C07F8310C17F8B0 |
| 64 | + \\:1002E400311C07A800F021F8019801300690EAE7D4 |
| 65 | + \\:1002F400029807A9B1E80C50A0E80C5091E81C50F2 |
| 66 | + \\:1003040080E81C5010B0D0BDFFE7FEE7D0B502AFC7 |
| 67 | + \\:1003140040F2DC11C0F20101B1E80C50A0E80C502D |
| 68 | + \\:1003240091E81C5080E81C50D0BD80B56F4688B061 |
| 69 | + \\:1003340006906FF35F2127F80A1C37F80A0C049023 |
| 70 | + \\:10034400012038B9FFE740F20020C0F2010000218B |
| 71 | + \\:10035400FFF7A6FF0498C0F3431027F8020C37F800 |
| 72 | + \\:100364000A0C0390002038B9FFE7039800F01F003F |
| 73 | + \\:100374000290012038B914E040F20820C0F20100D4 |
| 74 | + \\:100384000021FFF78DFF029800F01F0007F8030C0F |
| 75 | + \\:100394000698009037F8020C0146019109280ED303 |
| 76 | + \\:1003A40006E040F21020C0F201000021FFF778FFC0 |
| 77 | + \\:1003B40040F21820C0F201000021FFF771FF0099FC |
| 78 | + \\:1003C400019A51F8220017F803CC012303FA0CF325 |
| 79 | + \\:1003D400184341F8220008B080BD81B000F03F000E |
| 80 | + \\:1003E4008DF802009DF80200103000F03F00022852 |
| 81 | + \\:1003F40004D3FFE700208DF8030003E001208DF80B |
| 82 | + \\:100404000300FFE79DF8030001B070470A000000F5 |
| 83 | + \\:1004140012000000020071001200000066000000DB |
| 84 | + \\:1004240003007D0C06000000000000000001110123 |
| 85 | + \\:10043400250E1305030E10171B0EB44219110112D9 |
| 86 | + \\:0604440006000002340076 |
| 87 | + \\:020000021000EC |
| 88 | + \\:1000D400D001010001000000D20101000100000074 |
| 89 | + \\:1000E40028020100010000002402010001000000B8 |
| 90 | + \\:1000F4003A02010001000000E202010001000000D8 |
| 91 | + \\:100104000C03010001000000A50202000000000031 |
| 92 | + \\:1001140000000000000000000000000000000000DB |
| 93 | + \\:1001240000000000000000000000000000000000CB |
| 94 | + \\:1001340000000000000000000000000000000000BB |
| 95 | + \\:10014400AF02020098020100090000004D02010004 |
| 96 | + \\:100154000900000001000000000000000000000091 |
| 97 | + \\:100164000004000100C0800000020000080000003C |
| 98 | + \\:100174000000000000000000000000001E0000005D |
| 99 | + \\:1001840048010100000040888080FF000A14002913 |
| 100 | + \\:1001940000C0B00000020090080000000000000051 |
| 101 | + \\:1001A40000000000000000001E000000000000002D |
| 102 | + \\:1001B400000000000000000000000000000000003B |
| 103 | + \\:1001C400000000000000000000000000000000002B |
| 104 | + \\:1001D400000000000000000000000000000000001B |
| 105 | + \\:1001E400000000000000000000000000000000000B |
| 106 | + \\:1001F4000000000000000000000000008702010071 |
| 107 | + \\:1002040010000000200201002C0000006B0201001D |
| 108 | + \\:100214001B000000570201001300000072656D61AD |
| 109 | + \\:10022400696E646572206469766973696F6E2062B1 |
| 110 | + \\:1002340079207A65726F206F72206E6567617469C8 |
| 111 | + \\:1002440076652076616C756500636F727465782DD0 |
| 112 | + \\:100254006D3400696E646578206F7574206F662054 |
| 113 | + \\:10026400626F756E647300696E746567657220638E |
| 114 | + \\:10027400617374207472756E63617465642062695D |
| 115 | + \\:100284007473006469766973696F6E206279207A89 |
| 116 | + \\:1002940065726F00636F727465785F6D340000007F |
| 117 | + \\:1002A40081B00091FFE700BEFDE7D0B502AF90B08A |
| 118 | + \\:1002B4000391029007A800F029F803990020069002 |
| 119 | + \\:1002C40048680490FFE704990698019088420FD289 |
| 120 | + \\:1002D400FFE7019903980068405C07F8310C17F8B0 |
| 121 | + \\:1002E400311C07A800F021F8019801300690EAE7D4 |
| 122 | + \\:1002F400029807A9B1E80C50A0E80C5091E81C50F2 |
| 123 | + \\:1003040080E81C5010B0D0BDFFE7FEE7D0B502AFC7 |
| 124 | + \\:1003140040F2DC11C0F20101B1E80C50A0E80C502D |
| 125 | + \\:1003240091E81C5080E81C50D0BD80B56F4688B061 |
| 126 | + \\:1003340006906FF35F2127F80A1C37F80A0C049023 |
| 127 | + \\:10034400012038B9FFE740F20020C0F2010000218B |
| 128 | + \\:10035400FFF7A6FF0498C0F3431027F8020C37F800 |
| 129 | + \\:100364000A0C0390002038B9FFE7039800F01F003F |
| 130 | + \\:100374000290012038B914E040F20820C0F20100D4 |
| 131 | + \\:100384000021FFF78DFF029800F01F0007F8030C0F |
| 132 | + \\:100394000698009037F8020C0146019109280ED303 |
| 133 | + \\:1003A40006E040F21020C0F201000021FFF778FFC0 |
| 134 | + \\:1003B40040F21820C0F201000021FFF771FF0099FC |
| 135 | + \\:1003C400019A51F8220017F803CC012303FA0CF325 |
| 136 | + \\:1003D400184341F8220008B080BD81B000F03F000E |
| 137 | + \\:1003E4008DF802009DF80200103000F03F00022852 |
| 138 | + \\:1003F40004D3FFE700208DF8030003E001208DF80B |
| 139 | + \\:100404000300FFE79DF8030001B070470A000000F5 |
| 140 | + \\:1004140012000000020071001200000066000000DB |
| 141 | + \\:1004240003007D0C06000000000000000001110123 |
| 142 | + \\:10043400250E1305030E10171B0EB44219110112D9 |
| 143 | + \\:0604440006000002340076 |
| 144 | + \\:020000022000DC |
| 145 | + \\:1002A40081B00091FFE700BEFDE7D0B502AF90B08A |
| 146 | + \\:1002B4000391029007A800F029F803990020069002 |
| 147 | + \\:1002C40048680490FFE704990698019088420FD289 |
| 148 | + \\:1002D400FFE7019903980068405C07F8310C17F8B0 |
| 149 | + \\:1002E400311C07A800F021F8019801300690EAE7D4 |
| 150 | + \\:1002F400029807A9B1E80C50A0E80C5091E81C50F2 |
| 151 | + \\:1003040080E81C5010B0D0BDFFE7FEE7D0B502AFC7 |
| 152 | + \\:1003140040F2DC11C0F20101B1E80C50A0E80C502D |
| 153 | + \\:1003240091E81C5080E81C50D0BD80B56F4688B061 |
| 154 | + \\:1003340006906FF35F2127F80A1C37F80A0C049023 |
| 155 | + \\:10034400012038B9FFE740F20020C0F2010000218B |
| 156 | + \\:10035400FFF7A6FF0498C0F3431027F8020C37F800 |
| 157 | + \\:100364000A0C0390002038B9FFE7039800F01F003F |
| 158 | + \\:100374000290012038B914E040F20820C0F20100D4 |
| 159 | + \\:100384000021FFF78DFF029800F01F0007F8030C0F |
| 160 | + \\:100394000698009037F8020C0146019109280ED303 |
| 161 | + \\:1003A40006E040F21020C0F201000021FFF778FFC0 |
| 162 | + \\:1003B40040F21820C0F201000021FFF771FF0099FC |
| 163 | + \\:1003C400019A51F8220017F803CC012303FA0CF325 |
| 164 | + \\:1003D400184341F8220008B080BD81B000F03F000E |
| 165 | + \\:1003E4008DF802009DF80200103000F03F00022852 |
| 166 | + \\:1003F40004D3FFE700208DF8030003E001208DF80B |
| 167 | + \\:0C0404000300FFE79DF8030001B0704703 |
| 168 | + \\:00000001FF |
| 169 | + }; |
| 170 | + |
| 171 | + test_step.dependOn(&CheckFileStep.create(b, hex_step.getOutputSource(), expected_hex).step); |
| 172 | + test_step.dependOn(&CheckFileStep.create(b, explicit_format_hex_step.getOutputSource(), expected_hex).step); |
| 173 | +} |
0 commit comments