X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/2be56ee90c5c5bee77895b8787a43e894249002b..HEAD:/xcodescripts/generate_features.pl diff --git a/xcodescripts/generate_features.pl b/xcodescripts/generate_features.pl index ac54795..e1bf9c6 100755 --- a/xcodescripts/generate_features.pl +++ b/xcodescripts/generate_features.pl @@ -19,15 +19,19 @@ for my $arch (split(/ /, $ENV{"ARCHS"})) { # set ENV{"CURRENT_ARCH"} so we can predicate on it $ENV{"CURRENT_ARCH"} = $arch; - - my $platformName = $ENV{"PLATFORM_NAME"}; + + my $platformName = $ENV{"VARIANT_PLATFORM_NAME"}; $platformName =~ s/simulator/os/; + # Try to find a platform+arch config file. If not found, try just + # a platform config file. + my $platformArchPath = $ENV{"SRCROOT"} . "/Platforms/" . $platformName . "/Makefile." . $arch . ".inc"; my $platformPath = $ENV{"SRCROOT"} . "/Platforms/" . $platformName . "/Makefile.inc"; + my $featuresHeaderDir = $ENV{"DERIVED_FILES_DIR"}."/".$arch; my $featuresHeader = $featuresHeaderDir."/libc-features.h"; - open FEATURESFILE, "<$platformPath" or die "Unable to open: $platformPath"; + open FEATURESFILE, "<$platformArchPath" or open FEATURESFILE, "<$platformPath" or die "Unable to open: $platformArchPath nor $platformPath"; my %features = (); my $skip = 0; @@ -74,16 +78,13 @@ for my $arch (split(/ /, $ENV{"ARCHS"})) } elsif ($unifdef == 1) { - if ($platformName eq "macosx") { - $unifdefs{"__OSX_OPEN_SOURCE__"} = 1; - } # assume FEATURE_BLOCKS was on by default $unifdefs{"UNIFDEF_BLOCKS"} = 1; + $unifdefs{"UNIFDEF_DRIVERKIT"} = defined($ENV{"DRIVERKITSDK"}); $unifdefs{"UNIFDEF_LEGACY_64_APIS"} = defined($features{"FEATURE_LEGACY_64_APIS"}); $unifdefs{"UNIFDEF_LEGACY_RUNE_APIS"} = defined($features{"FEATURE_LEGACY_RUNE_APIS"}); $unifdefs{"UNIFDEF_LEGACY_UTMP_APIS"} = defined($features{"FEATURE_LEGACY_UTMP_APIS"}); - $unifdefs{"UNIFDEF_MOVE_LOCALTIME"} = defined($features{"FEATURE_MOVE_LOCALTIME"}); - $unifdefs{"UNIFDEF_TZDIR_SYMLINK"} = defined($features{"FEATURE_TZDIR_SYMLINK"}); + $unifdefs{"UNIFDEF_POSIX_ILP32_ALLOW"} = defined($features{"FEATURE_POSIX_ILP32_ALLOW"}); my $output = ""; for my $d (keys %unifdefs) { @@ -97,7 +98,11 @@ for my $arch (split(/ /, $ENV{"ARCHS"})) elsif ($unifdef == 0) { # If we touch this file on every build, then every other iterative build in Xcode will rebuild *everything* - my $platform_mtime = (stat($platformPath))[9]; + my $platform_mtime = (stat($platformArchPath))[9]; + if (!defined($platform_mtime)) { + # try the other one + $platform_mtime = (stat($platformPath))[9]; + } my $header_mtime = (stat($featuresHeader))[9]; if (defined($header_mtime) && defined($platform_mtime) && ($header_mtime > $platform_mtime)) { @@ -123,6 +128,9 @@ for my $arch (split(/ /, $ENV{"ARCHS"})) my $shortarch = $arch; $shortarch =~ s/armv\d+[a-z]?/arm/g; + # map all arm64 subtypes to arm64 + $shortarch =~ s/arm64[_a-z0-9]*/arm64/g; + printf HEADER "#if !defined(__".$shortarch."__)\n"; printf HEADER "#error Mismatched libc-features.h architecture\n"; printf HEADER "#endif\n\n"; @@ -145,18 +153,6 @@ for my $arch (split(/ /, $ENV{"ARCHS"})) printf HEADER "/* #undef UNIFDEF_LEGACY_UTMP_APIS */\n"; } - if (defined($features{"FEATURE_MOVE_LOCALTIME"})) { - printf HEADER "#define UNIFDEF_MOVE_LOCALTIME 1\n"; - } else { - printf HEADER "/* #undef UNIFDEF_MOVE_LOCALTIME */\n"; - } - - if (defined($features{"FEATURE_TZDIR_SYMLINK"})) { - printf HEADER "#define UNIFDEF_TZDIR_SYMLINK 1\n"; - } else { - printf HEADER "/* #undef UNIFDEF_TZDIR_SYMLINK */\n"; - } - if (defined($features{"FEATURE_ONLY_1050_VARIANTS"})) { printf HEADER "#if !__DARWIN_ONLY_VERS_1050\n"; printf HEADER "# error Feature mismatch: __DARWIN_ONLY_VERS_1050 == 0\n"; @@ -205,12 +201,6 @@ for my $arch (split(/ /, $ENV{"ARCHS"})) printf HEADER "/* #undef NOTIFY_TZ */\n"; } - if (defined($features{"FEATURE_NO_LIBCRASHREPORTERCLIENT"})) { - printf HEADER "#define LIBC_NO_LIBCRASHREPORTERCLIENT 1\n"; - } else { - printf HEADER "/* #undef LIBC_NO_LIBCRASHREPORTERCLIENT */\n"; - } - if (defined($features{"FEATURE_SMALL_STDIOBUF"})) { printf HEADER "#define FEATURE_SMALL_STDIOBUF 1\n"; } else {