From 7dd20383fb389d2daa9d1c7b49cdc3f68f0cd38a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20=22xq=22=20Quei=C3=9Fner?= Date: Tue, 6 Feb 2024 11:16:37 +0100 Subject: [PATCH] Adds examples for espressif/esp, gigadevice/gd32 --- .gitignore | 2 +- examples/espressif-esp/build.zig | 66 +++++++++---------- examples/espressif-esp/build.zig.zon | 18 ----- examples/espressif-esp/microzig-package.json | 7 ++ examples/gigadevice-gd32/build.zig | 21 +++--- examples/gigadevice-gd32/build.zig.zon | 14 ---- .../gigadevice-gd32/microzig-package.json | 7 ++ examples/gigadevice-gd32/src/empty.zig | 6 ++ 8 files changed, 67 insertions(+), 74 deletions(-) delete mode 100644 examples/espressif-esp/build.zig.zon create mode 100644 examples/espressif-esp/microzig-package.json delete mode 100644 examples/gigadevice-gd32/build.zig.zon create mode 100644 examples/gigadevice-gd32/microzig-package.json create mode 100644 examples/gigadevice-gd32/src/empty.zig diff --git a/.gitignore b/.gitignore index 0660316..3f1d472 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,4 @@ microzig-deploy/ .gdbinit .lldbinit .direnv/ -__pycache__/ \ No newline at end of file +__pycache__/ diff --git a/examples/espressif-esp/build.zig b/examples/espressif-esp/build.zig index 08dccee..8e2b584 100644 --- a/examples/espressif-esp/build.zig +++ b/examples/espressif-esp/build.zig @@ -1,45 +1,45 @@ const std = @import("std"); -const esp = @import("esp"); +const MicroZig = @import("microzig-build"); -const available_targets = [_]TargetDesc{ - .{ .name = "esp32-c3", .target = esp.chips.esp32_c3 }, -}; - -const available_examples = [_][]const u8{ - "src/blinky.zig", +const available_examples = [_]Example{ + .{ .target = "chip:esp32_c3", .name = "esp32-c3_blinky", .file = "src/blinky.zig" }, }; pub fn build(b: *std.Build) void { - const microzig = @import("microzig").init(b, "microzig"); + const microzig = MicroZig.createBuildEnvironment(b, .{}); const optimize = b.standardOptimizeOption(.{}); - for (available_targets) |target| { - for (available_examples) |example| { - // `addFirmware` basically works like addExecutable, but takes a - // `microzig.Target` for target instead of a `std.zig.CrossTarget`. - // - // The target will convey all necessary information on the chip, - // cpu and potentially the board as well. - const firmware = microzig.addFirmware(b, .{ - .name = b.fmt("{s}-{s}", .{ std.fs.path.stem(example), target.name }), - .target = target.target, - .optimize = optimize, - .source_file = .{ .path = example }, - }); - - // `installFirmware()` is the MicroZig pendant to `Build.installArtifact()` - // and allows installing the firmware as a typical firmware file. - // - // This will also install into `$prefix/firmware` instead of `$prefix/bin`. - microzig.installFirmware(b, firmware, .{}); - - // For debugging, we also always install the firmware as an ELF file - microzig.installFirmware(b, firmware, .{ .format = .elf }); - } + const show_targets_step = b.step("show-targets", "Shows all available MicroZig targets"); + show_targets_step.dependOn(microzig.getShowTargetsStep()); + + for (available_examples) |example| { + const target = microzig.findTarget(example.target).?; + + // `addFirmware` basically works like addExecutable, but takes a + // `microzig.Target` for target instead of a `std.zig.CrossTarget`. + // + // The target will convey all necessary information on the chip, + // cpu and potentially the board as well. + const firmware = microzig.addFirmware(b, .{ + .name = example.name, + .target = target, + .optimize = optimize, + .source_file = .{ .path = example.file }, + }); + + // `installFirmware()` is the MicroZig pendant to `Build.installArtifact()` + // and allows installing the firmware as a typical firmware file. + // + // This will also install into `$prefix/firmware` instead of `$prefix/bin`. + microzig.installFirmware(b, firmware, .{}); + + // For debugging, we also always install the firmware as an ELF file + microzig.installFirmware(b, firmware, .{ .format = .elf }); } } -const TargetDesc = struct { - target: @import("microzig").Target, +const Example = struct { + target: []const u8, name: []const u8, + file: []const u8, }; diff --git a/examples/espressif-esp/build.zig.zon b/examples/espressif-esp/build.zig.zon deleted file mode 100644 index 5fc8d30..0000000 --- a/examples/espressif-esp/build.zig.zon +++ /dev/null @@ -1,18 +0,0 @@ -.{ - .name = "microzig-nxp-lpc-examples", - .version = "0.1.0", - .dependencies = .{ - .microzig = .{ - .url = "https://public.devspace.random-projects.net/packages/microzig-build.tar.gz", - .hash = "1220db1de385b765aa45a04719c199d7ab8306fcca6ac1a12b487ed589a69d05a665", - }, - .@"microzig-core" = .{ - .url = "https://public.devspace.random-projects.net/packages/microzig-core.tar.gz", - .hash = "1220f72de650278d4184dd4a43992189246b520a5c137b54fca05d7a44df8b828267", - }, - .@"microzig-bsp-rp2040" = .{ - .url = "https://public.devspace.random-projects.net/packages/board-support/raspberrypi/rp2040.tar.gz", - .hash = "1220b170e56d2bd85b96bd8b7f40f2890cf9926da2fcb86967e466a3c87486f31c43", - }, - }, -} diff --git a/examples/espressif-esp/microzig-package.json b/examples/espressif-esp/microzig-package.json new file mode 100644 index 0000000..162a6c7 --- /dev/null +++ b/examples/espressif-esp/microzig-package.json @@ -0,0 +1,7 @@ +{ + "package_name": "espressif/esp", + "package_type": "example", + "inner_dependencies": [ + "espressif/esp" + ] +} \ No newline at end of file diff --git a/examples/gigadevice-gd32/build.zig b/examples/gigadevice-gd32/build.zig index b7a2e4c..7783f3f 100644 --- a/examples/gigadevice-gd32/build.zig +++ b/examples/gigadevice-gd32/build.zig @@ -1,17 +1,22 @@ const std = @import("std"); -const gd32 = @import("gd32"); +const MicroZig = @import("microzig-build"); const available_examples = [_]Example{ - // .{ .name = "gd32vf103xb", .target = gd32.chips.gd32vf103xb, .file = "src/blinky.zig" }, - // .{ .name = "gd32vf103x8", .target = gd32.chips.gd32vf103x8, .file = "src/blinky.zig" }, - // .{ .name = "sipeed-longan_nano", .target = gd32.boards.sipeed.longan_nano, .file = "src/blinky.zig" }, + .{ .target = "chip:gd32vf103xb", .name = "gd32vf103xb", .file = "src/empty.zig" }, + .{ .target = "chip:gd32vf103x8", .name = "gd32vf103x8", .file = "src/empty.zig" }, + .{ .target = "board:sipeed/longan_nano", .name = "sipeed-longan_nano", .file = "src/empty.zig" }, }; pub fn build(b: *std.Build) void { - const microzig = @import("microzig").init(b, "microzig"); - const optimize = .ReleaseSmall; // The others are not really an option on AVR + const microzig = MicroZig.createBuildEnvironment(b, .{}); + const optimize = b.standardOptimizeOption(.{}); + + const show_targets_step = b.step("show-targets", "Shows all available MicroZig targets"); + show_targets_step.dependOn(microzig.getShowTargetsStep()); for (available_examples) |example| { + const target = microzig.findTarget(example.target).?; + // `addFirmware` basically works like addExecutable, but takes a // `microzig.Target` for target instead of a `std.zig.CrossTarget`. // @@ -19,7 +24,7 @@ pub fn build(b: *std.Build) void { // cpu and potentially the board as well. const firmware = microzig.addFirmware(b, .{ .name = example.name, - .target = example.target, + .target = target, .optimize = optimize, .source_file = .{ .path = example.file }, }); @@ -36,7 +41,7 @@ pub fn build(b: *std.Build) void { } const Example = struct { - target: @import("microzig").Target, + target: []const u8, name: []const u8, file: []const u8, }; diff --git a/examples/gigadevice-gd32/build.zig.zon b/examples/gigadevice-gd32/build.zig.zon deleted file mode 100644 index 2cfeaae..0000000 --- a/examples/gigadevice-gd32/build.zig.zon +++ /dev/null @@ -1,14 +0,0 @@ -.{ - .name = "microzig-gigadevice-gd32-examples", - .version = "0.1.0", - .dependencies = .{ - .microzig = .{ - .url = "https://github.com/ZigEmbeddedGroup/microzig/archive/c6c9ec4516f57638e751141085c9d76120990312.tar.gz", - .hash = "1220af58bdaa721b8189f3a7adfda660517dd354463463388e96d69fe4ceccf80b92", - }, - .gd32 = .{ - .url = "https://github.com/ZigEmbeddedGroup/gigadevice-gd32/archive/9324753cc3b8e7afe83fcda085bcfe76681a3be3.tar.gz", - .hash = "122043ff4dcbc342f25dbb936b0d9eaa701ac3509e2cbe6764be37b90d31c7a385d0", - }, - }, -} diff --git a/examples/gigadevice-gd32/microzig-package.json b/examples/gigadevice-gd32/microzig-package.json new file mode 100644 index 0000000..a4815bb --- /dev/null +++ b/examples/gigadevice-gd32/microzig-package.json @@ -0,0 +1,7 @@ +{ + "package_name": "gigadevice/gd32", + "package_type": "example", + "inner_dependencies": [ + "gigadevice/gd32" + ] +} \ No newline at end of file diff --git a/examples/gigadevice-gd32/src/empty.zig b/examples/gigadevice-gd32/src/empty.zig new file mode 100644 index 0000000..7c6dbbe --- /dev/null +++ b/examples/gigadevice-gd32/src/empty.zig @@ -0,0 +1,6 @@ +const std = @import("std"); +const microzig = @import("microzig"); + +pub fn main() void { + // +}