Commit 7656903518

Andrew Kelley <andrew@ziglang.org>
2024-10-16 21:57:16
CLI: fix detection of link inputs
1 parent 861df93
Changed files (2)
src/link.zig
@@ -1392,13 +1392,6 @@ pub const UnresolvedInput = union(enum) {
     /// Put exactly this string in the dynamic section, no rpath.
     dso_exact: Input.DsoExact,
 
-    ///// Relocatable.
-    //object: Input.Object,
-    ///// Static library.
-    //archive: Input.Object,
-    ///// Windows resource file.
-    //winres: Path,
-
     pub const NameQuery = struct {
         name: []const u8,
         query: Query,
src/main.zig
@@ -2721,7 +2721,7 @@ fn buildOutputType(
                 },
             }
             if (create_module.c_source_files.items.len == 0 and
-                !link.anyObjectInputs(create_module.link_inputs.items) and
+                !anyObjectLinkInputs(create_module.cli_link_inputs.items) and
                 root_src_file == null)
             {
                 // For example `zig cc` and no args should print the "no input files" message.
@@ -2763,9 +2763,13 @@ fn buildOutputType(
             if (create_module.c_source_files.items.len >= 1)
                 break :b create_module.c_source_files.items[0].src_path;
 
-            for (create_module.link_inputs.items) |link_input| {
-                if (link_input.path()) |path| break :b path.sub_path;
-            }
+            for (create_module.cli_link_inputs.items) |unresolved_link_input| switch (unresolved_link_input) {
+                .path_query => |pq| switch (Compilation.classifyFileExt(pq.path.sub_path)) {
+                    .object, .static_library, .res => break :b pq.path.sub_path,
+                    else => continue,
+                },
+                else => continue,
+            };
 
             if (emit_bin == .yes)
                 break :b emit_bin.yes;
@@ -7491,3 +7495,14 @@ fn handleModArg(
     c_source_files_owner_index.* = create_module.c_source_files.items.len;
     rc_source_files_owner_index.* = create_module.rc_source_files.items.len;
 }
+
+fn anyObjectLinkInputs(link_inputs: []const link.UnresolvedInput) bool {
+    for (link_inputs) |link_input| switch (link_input) {
+        .path_query => |pq| switch (Compilation.classifyFileExt(pq.path.sub_path)) {
+            .object, .static_library, .res => return true,
+            else => continue,
+        },
+        else => continue,
+    };
+    return false;
+}