stage2: .stub files are yet another c++ source file extension

however .cu files are a superset of c++.
This commit is contained in:
Andrew Kelley 2022-01-27 13:39:28 -07:00
parent f589a66062
commit 0e6d2184ca
2 changed files with 11 additions and 14 deletions

View File

@ -3854,7 +3854,7 @@ pub fn addCCArgs(
try argv.appendSlice(&[_][]const u8{ "-target", llvm_triple });
switch (ext) {
.c, .cpp, .m, .mm, .h, .cuda => {
.c, .cpp, .m, .mm, .h, .cu => {
try argv.appendSlice(&[_][]const u8{
"-nostdinc",
"-fno-spell-checking",
@ -4153,7 +4153,7 @@ fn failCObjWithOwnedErrorMsg(
pub const FileExt = enum {
c,
cpp,
cuda,
cu,
h,
m,
mm,
@ -4168,7 +4168,7 @@ pub const FileExt = enum {
pub fn clangSupportsDepFile(ext: FileExt) bool {
return switch (ext) {
.c, .cpp, .h, .m, .mm, .cuda => true,
.c, .cpp, .h, .m, .mm, .cu => true,
.ll,
.bc,
@ -4199,11 +4199,8 @@ pub fn hasCppExt(filename: []const u8) bool {
return mem.endsWith(u8, filename, ".C") or
mem.endsWith(u8, filename, ".cc") or
mem.endsWith(u8, filename, ".cpp") or
mem.endsWith(u8, filename, ".cxx");
}
pub fn hasCudaExt(filename: []const u8) bool {
return mem.endsWith(u8, filename, ".cu") or mem.endsWith(u8, filename, ".stub");
mem.endsWith(u8, filename, ".cxx") or
mem.endsWith(u8, filename, ".stub");
}
pub fn hasObjCExt(filename: []const u8) bool {
@ -4270,8 +4267,8 @@ pub fn classifyFileExt(filename: []const u8) FileExt {
return .static_library;
} else if (hasObjectExt(filename)) {
return .object;
} else if (hasCudaExt(filename)) {
return .cuda;
} else if (mem.endsWith(u8, filename, ".cu")) {
return .cu;
} else {
return .unknown;
}

View File

@ -294,11 +294,11 @@ const usage_build_generic =
\\ .s Target-specific assembly source code
\\ .S Assembly with C preprocessor (requires LLVM extensions)
\\ .c C source code (requires LLVM extensions)
\\ .cxx .cc .C .cpp C++ source code (requires LLVM extensions)
\\ .cxx .cc .C .cpp .stub C++ source code (requires LLVM extensions)
\\ .m Objective-C source code (requires LLVM extensions)
\\ .mm Objective-C++ source code (requires LLVM extensions)
\\ .bc LLVM IR Module (requires LLVM extensions)
\\ .cu .stub Cuda source code (requires LLVM extensions)
\\ .cu Cuda source code (requires LLVM extensions)
\\
\\General Options:
\\ -h, --help Print this help and exit
@ -1248,7 +1248,7 @@ fn buildOutputType(
.object, .static_library, .shared_library => {
try link_objects.append(.{ .path = arg });
},
.assembly, .c, .cpp, .h, .ll, .bc, .m, .mm, .cuda => {
.assembly, .c, .cpp, .h, .ll, .bc, .m, .mm, .cu => {
try c_source_files.append(.{
.src_path = arg,
.extra_flags = try arena.dupe([]const u8, extra_cflags.items),
@ -1316,7 +1316,7 @@ fn buildOutputType(
.positional => {
const file_ext = Compilation.classifyFileExt(mem.sliceTo(it.only_arg, 0));
switch (file_ext) {
.assembly, .c, .cpp, .ll, .bc, .h, .m, .mm, .cuda => {
.assembly, .c, .cpp, .ll, .bc, .h, .m, .mm, .cu => {
try c_source_files.append(.{ .src_path = it.only_arg });
},
.unknown, .shared_library, .object, .static_library => {