diff options
Diffstat (limited to 'lib/std/Build/Module.zig')
| -rw-r--r-- | lib/std/Build/Module.zig | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/lib/std/Build/Module.zig b/lib/std/Build/Module.zig index 1f2b4f3fcb..f299946731 100644 --- a/lib/std/Build/Module.zig +++ b/lib/std/Build/Module.zig @@ -78,22 +78,51 @@ pub const SystemLib = struct { pub const SearchStrategy = enum { paths_first, mode_first, no_fallback }; }; +pub const CSourceLanguage = enum { + c, + cpp, + + objective_c, + objective_cpp, + + /// Standard assembly + assembly, + /// Assembly with the C preprocessor + assembly_with_preprocessor, + + pub fn internalIdentifier(self: CSourceLanguage) []const u8 { + return switch (self) { + .c => "c", + .cpp => "c++", + .objective_c => "objective-c", + .objective_cpp => "objective-c++", + .assembly => "assembler", + .assembly_with_preprocessor => "assembler-with-cpp", + }; + } +}; + pub const CSourceFiles = struct { root: LazyPath, /// `files` is relative to `root`, which is /// the build root by default files: []const []const u8, flags: []const []const u8, + /// By default, determines language of each file individually based on its file extension + language: ?CSourceLanguage, }; pub const CSourceFile = struct { file: LazyPath, flags: []const []const u8 = &.{}, + /// By default, determines language of each file individually based on its file extension + language: ?CSourceLanguage = null, pub fn dupe(file: CSourceFile, b: *std.Build) CSourceFile { return .{ .file = file.file.dupe(b), .flags = b.dupeStrings(file.flags), + .language = file.language, }; } }; @@ -378,9 +407,11 @@ pub const AddCSourceFilesOptions = struct { root: ?LazyPath = null, files: []const []const u8, flags: []const []const u8 = &.{}, + /// By default, determines language of each file individually based on its file extension + language: ?CSourceLanguage = null, }; -/// Handy when you have many C/C++ source files and want them all to have the same flags. +/// Handy when you have many non-Zig source files and want them all to have the same flags. pub fn addCSourceFiles(m: *Module, options: AddCSourceFilesOptions) void { const b = m.owner; const allocator = b.allocator; @@ -399,6 +430,7 @@ pub fn addCSourceFiles(m: *Module, options: AddCSourceFilesOptions) void { .root = options.root orelse b.path(""), .files = b.dupeStrings(options.files), .flags = b.dupeStrings(options.flags), + .language = options.language, }; m.link_objects.append(allocator, .{ .c_source_files = c_source_files }) catch @panic("OOM"); } |
