1#!/usr/bin/perl -w 2 3my $do_def = 0; 4 5if (($#ARGV >= 0) && ($ARGV[0] eq "-def")) { 6 shift; 7 $do_def = 1; 8} 9 10print <<EOF; 11/* Generated by makegobjectalias.pl */ 12 13#ifndef DISABLE_VISIBILITY 14 15#include "glibconfig.h" 16 17#ifdef G_HAVE_GNUC_VISIBILITY 18 19EOF 20 21if ($do_def) { 22 print <<EOF 23#undef IN_FILE 24#define IN_FILE defined 25 26#undef IN_HEADER 27#define IN_HEADER(x) 1 28 29EOF 30} 31else { 32 print <<EOF 33#define IN_FILE(x) 1 34#define IN_HEADER defined 35 36EOF 37} 38 39my $in_comment = 0; 40my $in_skipped_section = 0; 41 42while (<>) { 43 44 # ignore empty lines 45 next if /^\s*$/; 46 47 # skip comments 48 if ($_ =~ /^\s*\/\*/) 49 { 50 $in_comment = 1; 51 } 52 53 if ($in_comment) 54 { 55 if ($_ =~ /\*\/\s$/) 56 { 57 $in_comment = 0; 58 } 59 60 next; 61 } 62 63 # handle ifdefs 64 if ($_ =~ /^\#endif/) 65 { 66 if (!$in_skipped_section) 67 { 68 print $_; 69 } 70 71 $in_skipped_section = 0; 72 73 next; 74 } 75 76 if ($_ =~ /^\#ifdef\s+(INCLUDE_VARIABLES|INCLUDE_INTERNAL_SYMBOLS|ALL_FILES)/) 77 { 78 $in_skipped_section = 1; 79 } 80 81 if ($in_skipped_section) 82 { 83 next; 84 } 85 86 if ($_ =~ /^\#ifn?def\s+G/) 87 { 88 print $_; 89 90 next; 91 } 92 93 if ($_ =~ /^\#if.*(IN_FILE|IN_HEADER)/) 94 { 95 print $_; 96 97 next; 98 } 99 100 chop; 101 my $str = $_; 102 my @words; 103 my $attributes = ""; 104 105 @words = split(/ /, $str); 106 $str = shift(@words); 107 chomp($str); 108 my $alias = "IA__".$str; 109 110 # Drop any Win32 specific .def file syntax, but keep attributes 111 foreach $word (@words) { 112 $attributes = "$attributes $word" unless $word eq "PRIVATE"; 113 } 114 115 if (!$do_def) { 116 print <<EOF 117extern __typeof ($str) $alias __attribute((visibility("hidden")))$attributes; 118\#define $str $alias 119 120EOF 121 } 122 else { 123 print <<EOF 124\#undef $str 125extern __typeof ($str) $str __attribute((alias("$alias"), visibility("default"))); 126 127EOF 128 } 129} 130 131print <<EOF; 132 133#endif /* G_HAVE_GNUC_VISIBILITY */ 134#endif /* DISABLE_VISIBILITY */ 135EOF 136 137 138