]> git.saurik.com Git - apple/libc.git/blobdiff - xcodescripts/generate_features.pl
Libc-1244.1.7.tar.gz
[apple/libc.git] / xcodescripts / generate_features.pl
index ce710f4b96b37448219b543fb619c3ab2b19afe8..0704fcd6b3f323ba34e56b7149adb891e41c4488 100755 (executable)
@@ -1,9 +1,5 @@
 #!/usr/bin/perl
 
-if ($ENV{"ACTION"} eq "installhdrs") {
-       exit 0;
-}
-
 # Generates the libc-features.h files used to control #ifdef behaviour in Libc
 use warnings;
 use Data::Dumper;
@@ -23,9 +19,15 @@ for my $arch (split(/ /, $ENV{"ARCHS"}))
 {
        # set ENV{"CURRENT_ARCH"} so we can predicate on it
        $ENV{"CURRENT_ARCH"} = $arch;
-       
+
+       # BridgeOS shares the same platform name than the watch so
+       # we need to fix it and pick the right configuration.
        my $platformName = $ENV{"PLATFORM_NAME"};
-       $platformName = "iphoneos" if ($platformName eq "iphonesimulator");
+       if ($ENV{"RC_BRIDGE"} eq "YES") {
+               $platformName = "bridgeos";
+       }
+
+       $platformName =~ s/simulator/os/;
 
        my $platformPath = $ENV{"SRCROOT"} . "/Platforms/" . $platformName . "/Makefile.inc";
        my $featuresHeaderDir = $ENV{"DERIVED_FILES_DIR"}."/".$arch;
@@ -51,7 +53,7 @@ for my $arch (split(/ /, $ENV{"ARCHS"}))
                        my $regex = $2;
                        
                        $nested++;
-                       if ($ENV{$envvar} !~ /$regex/) {
+                       if (!defined($ENV{$envvar}) || ($ENV{$envvar} !~ /$regex/)) {
                                $skip += 1;
                        }
                }
@@ -83,7 +85,6 @@ for my $arch (split(/ /, $ENV{"ARCHS"}))
                $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"});
                
                my $output = "";
                for my $d (keys %unifdefs) {
@@ -100,7 +101,7 @@ for my $arch (split(/ /, $ENV{"ARCHS"}))
                my $platform_mtime = (stat($platformPath))[9];
                my $header_mtime = (stat($featuresHeader))[9];
 
-               if ($header_mtime > $platform_mtime) {
+               if (defined($header_mtime) && defined($platform_mtime) && ($header_mtime > $platform_mtime)) {
                        exit 0;
                }
 
@@ -123,6 +124,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,12 +149,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_ONLY_1050_VARIANTS"})) {
                        printf HEADER "#if !__DARWIN_ONLY_VERS_1050\n";
                        printf HEADER "#  error Feature mismatch: __DARWIN_ONLY_VERS_1050 == 0\n";
@@ -187,12 +185,6 @@ for my $arch (split(/ /, $ENV{"ARCHS"}))
                        printf HEADER "/* #undef __APPLE_PR3417676_HACK__ */\n";
                }
 
-               if (defined($features{"FEATURE_PATCH_5243343"})) {
-                       printf HEADER "#define PR_5243343 1\n";
-               } else {
-                       printf HEADER "/* #undef PR_5243343 */\n";
-               }
-
                if (defined($features{"FEATURE_PLOCKSTAT"})) {
                        printf HEADER "#define PLOCKSTAT 1\n";
                } else {
@@ -205,16 +197,22 @@ 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";
+               if (defined($features{"FEATURE_SMALL_STDIOBUF"})) {
+                       printf HEADER "#define FEATURE_SMALL_STDIOBUF 1\n";
+               } else {
+                       printf HEADER "/* #undef FEATURE_SMALL_STDIOBUF */\n";
+               }
+
+               if (defined($features{"FEATURE_XPRINTF_PERF"})) {
+                       printf HEADER "#define XPRINTF_PERF 1\n";
                } else {
-                       printf HEADER "/* #undef LIBC_NO_LIBCRASHREPORTERCLIENT */\n";
+                       printf HEADER "/* #undef XPRINTF_PERF */\n";
                }
 
-               if (defined($features{"FEATURE_MEMORYSTATUS"})) {
-                       printf HEADER "#define CONFIG_MEMORYSTATUS 1\n";
+               if (defined($features{"FEATURE_SIGNAL_RESTRICTION"})) {
+                       printf HEADER "#define FEATURE_SIGNAL_RESTRICTION 1\n";
                } else {
-                       printf HEADER "/* #undef CONFIG_MEMORYSTATUS */\n";
+                       printf HEADER "/* #undef FEATURE_SIGNAL_RESTRICTION */\n";
                }
 
                printf HEADER "#endif // _LIBC_FEATURES_H_\n";