mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 13:54:21 +00:00
zig cc: Respect Clang's -static and -dynamic flags.
Before:
❯ zig cc main.c -target x86_64-linux-musl && musl-ldd ./a.out
musl-ldd: ./a.out: Not a valid dynamic program
❯ zig cc main.c -target x86_64-linux-musl -static && musl-ldd ./a.out
musl-ldd: ./a.out: Not a valid dynamic program
❯ zig cc main.c -target x86_64-linux-musl -dynamic && musl-ldd ./a.out
musl-ldd: ./a.out: Not a valid dynamic program
After:
❯ zig cc main.c -target x86_64-linux-musl && musl-ldd ./a.out
musl-ldd: ./a.out: Not a valid dynamic program
❯ zig cc main.c -target x86_64-linux-musl -static && musl-ldd ./a.out
musl-ldd: ./a.out: Not a valid dynamic program
❯ zig cc main.c -target x86_64-linux-musl -dynamic && musl-ldd ./a.out
/lib/ld-musl-x86_64.so.1 (0x72c10019e000)
libc.so => /lib/ld-musl-x86_64.so.1 (0x72c10019e000)
Closes #11909.
This commit is contained in:
parent
715984340b
commit
6a8228603c
3 changed files with 29 additions and 2 deletions
|
|
@ -2610,7 +2610,14 @@ flagpd1("dwarf-ext-refs"),
|
||||||
},
|
},
|
||||||
sepd1("dylib_file"),
|
sepd1("dylib_file"),
|
||||||
flagpd1("dylinker"),
|
flagpd1("dylinker"),
|
||||||
flagpd1("dynamic"),
|
.{
|
||||||
|
.name = "dynamic",
|
||||||
|
.syntax = .flag,
|
||||||
|
.zig_equivalent = .dynamic,
|
||||||
|
.pd1 = true,
|
||||||
|
.pd2 = false,
|
||||||
|
.psl = false,
|
||||||
|
},
|
||||||
.{
|
.{
|
||||||
.name = "dynamiclib",
|
.name = "dynamiclib",
|
||||||
.syntax = .flag,
|
.syntax = .flag,
|
||||||
|
|
@ -5698,7 +5705,7 @@ flagpd1("startfiles"),
|
||||||
.{
|
.{
|
||||||
.name = "static",
|
.name = "static",
|
||||||
.syntax = .flag,
|
.syntax = .flag,
|
||||||
.zig_equivalent = .other,
|
.zig_equivalent = .static,
|
||||||
.pd1 = true,
|
.pd1 = true,
|
||||||
.pd2 = true,
|
.pd2 = true,
|
||||||
.psl = false,
|
.psl = false,
|
||||||
|
|
|
||||||
12
src/main.zig
12
src/main.zig
|
|
@ -2338,6 +2338,16 @@ fn buildOutputType(
|
||||||
fatal("unsupported -rtlib option '{s}'", .{it.only_arg});
|
fatal("unsupported -rtlib option '{s}'", .{it.only_arg});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
.static => {
|
||||||
|
create_module.opts.link_mode = .static;
|
||||||
|
lib_preferred_mode = .static;
|
||||||
|
lib_search_strategy = .no_fallback;
|
||||||
|
},
|
||||||
|
.dynamic => {
|
||||||
|
create_module.opts.link_mode = .dynamic;
|
||||||
|
lib_preferred_mode = .dynamic;
|
||||||
|
lib_search_strategy = .mode_first;
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Parse linker args.
|
// Parse linker args.
|
||||||
|
|
@ -5954,6 +5964,8 @@ pub const ClangArgIterator = struct {
|
||||||
san_cov,
|
san_cov,
|
||||||
no_san_cov,
|
no_san_cov,
|
||||||
rtlib,
|
rtlib,
|
||||||
|
static,
|
||||||
|
dynamic,
|
||||||
};
|
};
|
||||||
|
|
||||||
const Args = struct {
|
const Args = struct {
|
||||||
|
|
|
||||||
|
|
@ -572,6 +572,14 @@ const known_options = [_]KnownOpt{
|
||||||
.name = "rtlib=",
|
.name = "rtlib=",
|
||||||
.ident = "rtlib",
|
.ident = "rtlib",
|
||||||
},
|
},
|
||||||
|
.{
|
||||||
|
.name = "static",
|
||||||
|
.ident = "static",
|
||||||
|
},
|
||||||
|
.{
|
||||||
|
.name = "dynamic",
|
||||||
|
.ident = "dynamic",
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const blacklisted_options = [_][]const u8{};
|
const blacklisted_options = [_][]const u8{};
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue