mirror of
https://github.com/ziglang/zig.git
synced 2024-11-27 07:32:44 +00:00
compiler_rt: avoid referencing symbol on versions where it doesn't exist
This change causes `__isPlatformVersionAtLeast` to no longer exist in compiler_rt when targetting a min os version earlier than 10.15, which is earlier than the default os version and so only affects builds that explicitly target an older version than Zig officially supports.
This commit is contained in:
parent
941d3a2bb1
commit
aebf20cc9a
@ -2,10 +2,13 @@ const std = @import("std");
|
||||
const testing = std.testing;
|
||||
const builtin = @import("builtin");
|
||||
const linkage: std.builtin.GlobalLinkage = if (builtin.is_test) .Internal else .Weak;
|
||||
pub const panic = @import("common.zig").panic;
|
||||
const panic = @import("common.zig").panic;
|
||||
|
||||
const have_availability_version_check = builtin.os.tag.isDarwin() and
|
||||
builtin.os.version_range.semver.min.order(.{ .major = 10, .minor = 15, .patch = 0 }).compare(.gte);
|
||||
|
||||
comptime {
|
||||
if (builtin.os.tag.isDarwin()) {
|
||||
if (have_availability_version_check) {
|
||||
@export(__isPlatformVersionAtLeast, .{ .name = "__isPlatformVersionAtLeast", .linkage = linkage });
|
||||
}
|
||||
}
|
||||
@ -25,7 +28,7 @@ comptime {
|
||||
// the newer codepath, which merely calls out to the Darwin _availability_version_check API which is
|
||||
// available on macOS 10.15+, iOS 13+, tvOS 13+ and watchOS 6+.
|
||||
|
||||
const __isPlatformVersionAtLeast = if (builtin.os.tag.isDarwin()) struct {
|
||||
const __isPlatformVersionAtLeast = if (have_availability_version_check) struct {
|
||||
inline fn constructVersion(major: u32, minor: u32, subminor: u32) u32 {
|
||||
return ((major & 0xffff) << 16) | ((minor & 0xff) << 8) | (subminor & 0xff);
|
||||
}
|
||||
@ -50,7 +53,7 @@ const __isPlatformVersionAtLeast = if (builtin.os.tag.isDarwin()) struct {
|
||||
}.__isPlatformVersionAtLeast else struct {};
|
||||
|
||||
test "isPlatformVersionAtLeast" {
|
||||
if (!comptime builtin.os.tag.isDarwin()) return error.SkipZigTest;
|
||||
if (!have_availability_version_check) return error.SkipZigTest;
|
||||
|
||||
// Note: this test depends on the actual host OS version since it is merely calling into the
|
||||
// native Darwin API.
|
||||
|
Loading…
Reference in New Issue
Block a user