#!/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