]> git.saurik.com Git - apple/libc.git/blobdiff - xcodescripts/generate_features.pl
Libc-1439.100.3.tar.gz
[apple/libc.git] / xcodescripts / generate_features.pl
index ac5479559ac3ea2c10a3f8033622be14a12dcfc6..e1bf9c620a08a817c572aceeedd6e882ccb66903 100755 (executable)
@@ -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 {