aboutsummaryrefslogtreecommitdiff
path: root/lib/std/build.zig
diff options
context:
space:
mode:
Diffstat (limited to 'lib/std/build.zig')
-rw-r--r--lib/std/build.zig21
1 files changed, 20 insertions, 1 deletions
diff --git a/lib/std/build.zig b/lib/std/build.zig
index dacfaf5f75..8d6db459ea 100644
--- a/lib/std/build.zig
+++ b/lib/std/build.zig
@@ -509,7 +509,26 @@ pub const Builder = struct {
return null;
},
},
- .Float => panic("TODO float options to build script", .{}),
+ .Float => switch (entry.value.value) {
+ .Flag => {
+ warn("Expected -D{} to be a float, but received a boolean.\n", .{name});
+ self.markInvalidUserInput();
+ return null;
+ },
+ .Scalar => |s| {
+ const n = std.fmt.parseFloat(T, s) catch |err| {
+ warn("Expected -D{} to be a float of type {}.\n", .{ name, @typeName(T) });
+ self.markInvalidUserInput();
+ return null;
+ };
+ return n;
+ },
+ .List => {
+ warn("Expected -D{} to be a float, but received a list.\n", .{name});
+ self.markInvalidUserInput();
+ return null;
+ },
+ },
.Enum => switch (entry.value.value) {
.Flag => {
warn("Expected -D{} to be a string, but received a boolean.\n", .{name});