]> Pileus Git - ~andy/gtk/blobdiff - gdk-pixbuf/makegdkpixbufalias.pl
Revert name change
[~andy/gtk] / gdk-pixbuf / makegdkpixbufalias.pl
index a76b61599ed439e93299634be5a71fab53bc10de..a03da363e970beaf7e6de2245c6a68dd463c8980 100755 (executable)
 #!/usr/bin/perl -w
 
+my $do_def = 0;
+
+if (($#ARGV >= 0) && ($ARGV[0] eq "-def")) {
+    shift;
+    $do_def = 1;
+}
+
 print <<EOF;
 /* Generated by makegdkpixbufalias.pl */
 
+#ifndef DISABLE_VISIBILITY
+
 #include <glib.h>
 
 #ifdef G_HAVE_GNUC_VISIBILITY
 
-#ifdef  GDK_PIXBUF_DISABLE_DEPRECATED
-#define WAS_NO_DEPR
-#endif
-#undef  GDK_PIXBUF_DISABLE_DEPRECATED
+EOF
 
-#ifdef  G_DISABLE_DEPRECATED
-#define WAS_NO_G_DEPR
-#endif
-#undef  G_DISABLE_DEPRECATED
+if ($do_def) {
+    print <<EOF
+#undef IN_FILE
+#define IN_FILE defined
 
-#include "gdk-pixbuf.h"
-#include "gdk-pixdata.h"
-#include "gdk-pixbuf-marshal.h"
+#undef IN_HEADER
+#define IN_HEADER(x) 1
 
 EOF
+} 
+else { 
+    print <<EOF
+#define IN_FILE(x) 1
+#define IN_HEADER defined
+
+EOF
+}
+
+my $in_comment = 0;
+my $in_skipped_section = 0;
 
 while (<>) {
 
   # ignore empty lines
   next if /^\s*$/;
 
+  # skip comments
+  if ($_ =~ /^\s*\/\*/)
+  {
+      $in_comment = 1;
+  }
+  
+  if ($in_comment)
+  {
+      if ($_ =~  /\*\/\s$/)
+      {
+         $in_comment = 0;
+      }
+      
+      next;
+  }
+
+  # handle ifdefs
+  if ($_ =~ /^\#endif/)
+  {
+      if (!$in_skipped_section)
+      {
+         print $_;
+      }
+
+      $in_skipped_section = 0;
+
+      next;
+  }
+
+  if ($_ =~ /^\#ifdef\s+INCLUDE_VARIABLES|INCLUDE_INTERNAL_SYMBOLS|ALL_FILES/)
+  {
+      $in_skipped_section = 1;
+  }
+
+  if ($in_skipped_section)
+  {
+      next;
+  }
+
+  if ($_ =~ /^\#ifn?def\s+G/)
+  {
+      print $_;
+      
+      next;
+  }
+
+  if ($_ =~ /^\#if.*(IN_FILE|IN_HEADER|IN_FILE)/)
+  {
+      print $_;
+      
+      next;
+  }
+
+  chop;
   my $str = $_;
+  my @words;
+  my $attributes = "";
+
+  @words = split(/ /, $str);
+  $str = shift(@words);
   chomp($str);
-  my $alias = $str."__internal_alias";
+  my $alias = "IA__".$str;
   
-  print "extern __typeof ($str) $alias __attribute((visibility(\"hidden\"))); \n";
-  print "extern __typeof ($str) $str __attribute((alias(\"$alias\"), visibility(\"default\"))); \n";
-  print "#define $str $alias \n";
-  print "\n";
-}
+  # Drop any Win32 specific .def file syntax,  but keep attributes
+  foreach $word (@words) {
+      $attributes = "$attributes $word" unless $word eq "PRIVATE";
+  }
+  
+  if (!$do_def) {
+    print <<EOF
+extern __typeof ($str) $alias __attribute((visibility("hidden")))$attributes;
+\#define $str $alias
 
-print <<EOF;
+EOF
+  }
+  else {
+    print <<EOF
+\#undef $str 
+extern __typeof ($str) $str __attribute((alias("$alias"), visibility("default")));
 
-#ifdef  WAS_NO_DEPR
-#define GDK_PIXBUF_DISABLE_DEPRECATED
-#undef  WAS_NO_DEPR
-#endif
+EOF
+  }
+}
 
-#ifdef  WAS_NO_G_DEPR
-#define G_DISABLE_DEPRECATED
-#undef  WAS_NO_G_DEPR
-#endif
+print <<EOF;
 
 #endif /* G_HAVE_GNUC_VISIBILITY */
+#endif /* DISABLE_VISIBILITY */
 EOF