X-Git-Url: https://git.saurik.com/apple/configd.git/blobdiff_plain/6bb659645459a5a8b169b9554c8dfc459f435bc2..9de8ab86392ba34369adc6be0bfc21bad9b7caa2:/SystemConfiguration.fproj/update-headers?ds=sidebyside diff --git a/SystemConfiguration.fproj/update-headers b/SystemConfiguration.fproj/update-headers index 862125b..05b247d 100755 --- a/SystemConfiguration.fproj/update-headers +++ b/SystemConfiguration.fproj/update-headers @@ -6,6 +6,8 @@ if (!$ENV{"INSTALL_DIR"} or !$ENV{"PUBLIC_HEADERS_FOLDER_PATH"} or !$ENV{"PRIVAT $DO_SPLIT = ($#ARGV >= 0 and $ARGV[0] eq "split"); +$USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK = $ENV{"USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK"} eq "YES"; + $API_BASE = $ENV{"INSTALL_DIR"} . "/" . $ENV{"PUBLIC_HEADERS_FOLDER_PATH"}; $SPI_BASE = $ENV{"INSTALL_DIR"} . "/" . $ENV{"PRIVATE_HEADERS_FOLDER_PATH"}; @@ -24,6 +26,7 @@ sub clean_API { $api_new = $DO_SPLIT ? $api : clean_INC($api); $api_new =~ s/(__MAC)_\w+\/\*SPI\*\//\1_NA/g; + $api_new =~ s/#define\t__AVAILABILITY_INTERNAL__.*FUTURE.*\/\*SPI\*\/\n//; $api_new =~ s/(__IPHONE)_\w+\/\*SPI\*\//\1_NA/g; return $api_new; @@ -35,11 +38,25 @@ sub clean_SPI { $spi_new = clean_INC($spi); $spi_new =~ s/(__MAC_\w+)\/\*SPI\*\//\1/g; + $spi_new =~ s/(#define\t__AVAILABILITY_INTERNAL__.*FUTURE.*)\/\*SPI\*\//\1/; $spi_new =~ s/(__IPHONE_\w+)\/\*SPI\*\//\1/g; return $spi_new; } +sub create_STUB { + my ($api_header) = @_; + my ($stub_new); + + $stub_new = " +#warning \"Please #include instead of this file directly.\" +#include +"; + $stub_new =~ s/PUBLIC.h/$api_header/g; + + return $stub_new; +} + # # Update .../PrivateHeaders # @@ -93,7 +110,9 @@ for (@headers) { close(API); $api_new = clean_API($api); - if ($api ne $api_new) { + next if ($api eq $api_new); # if no tweaks needed + + if (!$USING_PRIVATE_SYSTEMCONFIGURATION_FRAMEWORK) { printf "cleaning .../Headers/%s\n", $api_header; open(API, ">", $api_path); print API $api_new; @@ -119,6 +138,29 @@ for (@headers) { close(SPI); } } + } else { + $spi_new = clean_SPI($api); + if ($api_new ne $spi_new) { + if ((($stub_header) = ($api =~ /#ifdef\s+USE_SYSTEMCONFIGURATION_PRIVATE_HEADERS\s*.*?\n#include\s+\s*.*?\n/))) { + if ($api_header eq $stub_header) { + die "API & STUB header not unique: $api_header\n"; + } + } else { + die "Header missing #ifdef/#else/#endif: $api_header\n"; + } + + printf "updating .../Headers/%s\n", $api_header; + open(API, ">", $api_path); + print API $spi_new; + close(API); + + printf " adding .../PrivateHeaders/%s (stub)\n", $stub_header; + $stub_path = $SPI_BASE . "/" . $stub_header; + $stub_new = create_STUB($api_header); + open(STUB, ">", $stub_path); + print STUB $stub_new; + close(STUB); + } } } $/ = "\n";