[7e03d10] | 1 | #!/usr/bin/perl |
---|
| 2 | |
---|
| 3 | # |
---|
| 4 | # Perl script to beautify and enhance RTEMS configure.in |
---|
| 5 | # |
---|
| 6 | # Reads from stdin and writes to stdout |
---|
| 7 | # |
---|
| 8 | # usage: |
---|
| 9 | # acpolish <configure.in >configure.in~ |
---|
| 10 | # mv configure.in~ configure.in |
---|
| 11 | # |
---|
| 12 | |
---|
[70810dc] | 13 | # $Id$ |
---|
| 14 | |
---|
[df49c60] | 15 | use strict ; |
---|
| 16 | |
---|
| 17 | my @vars = () ; |
---|
| 18 | my @buffer = () ; |
---|
[edb9d70] | 19 | my %var_ ; |
---|
[df49c60] | 20 | |
---|
| 21 | # find relative up-path to VERSION |
---|
[70810dc] | 22 | my $rtems_cfg = &find_file(".","VERSION"); |
---|
| 23 | my $rtems_root = &find_root() ; |
---|
| 24 | $rtems_root =~ tr/\//\-/ ; |
---|
| 25 | my $rtems_name = "rtems" ; |
---|
| 26 | $rtems_name .= "-" . "$rtems_root" if (length($rtems_root) > 0 ) ; |
---|
| 27 | |
---|
| 28 | while ( <> ) |
---|
| 29 | { |
---|
| 30 | push @buffer, "$_" ; |
---|
| 31 | } |
---|
| 32 | |
---|
| 33 | { |
---|
| 34 | my @tbuf = () ; |
---|
| 35 | |
---|
| 36 | foreach ( @buffer ) |
---|
| 37 | { |
---|
| 38 | if ( /^#.*list.*Makefile.*$/o ) {} |
---|
| 39 | elsif ( /^dnl[\s]+check.*target.*cc.*$/o ) {} |
---|
| 40 | elsif ( /^[\s]*AC_CONFIG_AUX_DIR\(.*\)[\s]*$/o ) |
---|
| 41 | { |
---|
| 42 | push @tbuf, "AC_CONFIG_AUX_DIR($rtems_cfg)\n" ; |
---|
| 43 | } |
---|
| 44 | elsif ( /^[\s]*RTEMS_TOP\(.*\)[\s]*$/o ) |
---|
| 45 | { |
---|
| 46 | push @tbuf, "RTEMS_TOP($rtems_cfg)\n" ; |
---|
| 47 | } |
---|
| 48 | elsif ( /^[\s]*AM_INIT_AUTOMAKE\(.*\)[\s]*$/o ) |
---|
| 49 | { |
---|
| 50 | push @tbuf, "AM_INIT_AUTOMAKE($rtems_name,\$RTEMS_VERSION,no)\n" ; |
---|
| 51 | } |
---|
| 52 | elsif ( /^[\s]*AC_SUBST\(RTEMS_HAS_POSIX_API\)[\s]*$/o ) |
---|
| 53 | { |
---|
| 54 | #remove the line |
---|
| 55 | } |
---|
| 56 | elsif ( /^[\s]*AC_SUBST\(RTEMS_HAS_ITRON_API\)[\s]*$/o ) |
---|
| 57 | { |
---|
| 58 | #remove the line |
---|
| 59 | } |
---|
| 60 | elsif ( /^[\s]*AC_SUBST\(RTEMS_HAS_HWAPI\)[\s]*$/o ) |
---|
| 61 | { |
---|
| 62 | #remove the line |
---|
| 63 | } |
---|
| 64 | elsif ( /^[\s]*AC_SUBST\(RTEMS_USE_MACROS\)[\s]*$/o ) |
---|
| 65 | { |
---|
| 66 | #remove the line |
---|
| 67 | } |
---|
| 68 | elsif ( /^[\s]*AC_SUBST\(RTEMS_HAS_MULTIPROCESSING\)[\s]*$/o ) |
---|
| 69 | { |
---|
| 70 | #remove the line |
---|
| 71 | } |
---|
| 72 | elsif ( /^[\s]*AC_SUBST\(RTEMS_HAS_RDBG\)[\s]*$/o ) |
---|
| 73 | { |
---|
| 74 | #remove the line |
---|
| 75 | } |
---|
| 76 | elsif ( /^[\s\t]*AC_SUBST\(RTEMS_USE_OWN_PDIR\)[\s]*$/o ) |
---|
| 77 | { # obsolete option |
---|
| 78 | #remove the line |
---|
| 79 | } |
---|
| 80 | elsif ( /^[\s\t]*RTEMS_ENABLE_GMAKE_PRINT[ ]*$/o ) |
---|
| 81 | { # obsolete macro |
---|
| 82 | #remove the line |
---|
| 83 | } |
---|
| 84 | elsif ( /^[\s]*AC_SUBST\(RTEMS_HAS_NETWORKING\)[\s]*$/o ) |
---|
| 85 | { |
---|
| 86 | #remove the line |
---|
| 87 | } |
---|
| 88 | elsif ( /^[\s]*AC_SUBST\(RTEMS_LIBC_DIR\)[\s]*$/o ) |
---|
| 89 | { |
---|
| 90 | #remove the line |
---|
| 91 | } |
---|
| 92 | elsif ( /^[\s]*AC_SUBST\(PROJECT_ROOT\)[\s]*$/o ) |
---|
| 93 | { |
---|
| 94 | #remove the line |
---|
| 95 | } |
---|
| 96 | elsif ( /^[\s]*AC_SUBST\(RTEMS_GAS_CODE16\)[\s]*$/o ) |
---|
| 97 | { |
---|
| 98 | #remove the line |
---|
| 99 | } |
---|
| 100 | elsif ( /^[\s]*PROJECT_ROOT[\s]*=.*$/o ) |
---|
| 101 | { |
---|
| 102 | #remove the line |
---|
| 103 | } |
---|
| 104 | elsif ( /^[\s]*(RTEMS_ENABLE_LIBCDIR).*$/o ) |
---|
| 105 | { #remove the line |
---|
| 106 | &define_variable("$1",""); |
---|
| 107 | push @tbuf, "$_" ; |
---|
| 108 | } |
---|
| 109 | elsif ( /^[\s]*(RTEMS_PROG_CC_FOR_TARGET).*$/o ) |
---|
| 110 | { |
---|
| 111 | &define_variable("$1",""); |
---|
| 112 | push @tbuf, "$_" ; |
---|
| 113 | } |
---|
| 114 | elsif ( /^[\s]*(RTEMS_PROG_CXX_FOR_TARGET).*$/o ) |
---|
| 115 | { |
---|
| 116 | &define_variable("$1",""); |
---|
| 117 | push @tbuf, "$_" ; |
---|
| 118 | } |
---|
| 119 | else |
---|
| 120 | { |
---|
| 121 | push @tbuf, "$_" ; |
---|
| 122 | } |
---|
| 123 | } # foreach |
---|
| 124 | @buffer = @tbuf ; |
---|
| 125 | } |
---|
| 126 | |
---|
| 127 | { |
---|
| 128 | my @tbuf = () ; |
---|
| 129 | foreach ( @buffer ) |
---|
| 130 | { |
---|
| 131 | if ( /^[\s]*(RTEMS_ENABLE_LIBCDIR).*$/o ) |
---|
| 132 | { |
---|
[edb9d70] | 133 | if ( ( not variable_seen( "RTEMS_PROG_CC_FOR_TARGET" ) ) |
---|
| 134 | and ( not variable_seen( "RTEMS_PROG_CXX_FOR_TARGET" ) ) |
---|
[70810dc] | 135 | ) |
---|
| 136 | { |
---|
| 137 | push @tbuf, "$_" ; |
---|
| 138 | } |
---|
| 139 | } |
---|
| 140 | elsif ( /^AC_OUTPUT.*$/o ) |
---|
| 141 | { |
---|
| 142 | push @tbuf, "# Explicitly list all Makefiles here\n" ; |
---|
| 143 | push @tbuf, "$_" ; |
---|
| 144 | } |
---|
| 145 | else |
---|
| 146 | { |
---|
| 147 | push @tbuf, "$_" ; |
---|
| 148 | } |
---|
| 149 | } |
---|
| 150 | @buffer = @tbuf ; |
---|
| 151 | } |
---|
| 152 | |
---|
| 153 | { ## pretty print |
---|
| 154 | my $out = join ('',@buffer) ; |
---|
| 155 | $out =~ s/\s\#\n(\#\n)+/\n/g ; |
---|
| 156 | $out =~ s/\n\n\#\n\n/\n/g ; |
---|
| 157 | $out =~ s/\n\n[\n]*/\n\n/g ; |
---|
| 158 | print $out ; |
---|
| 159 | } |
---|
| 160 | |
---|
| 161 | exit 1 ; |
---|
[7e03d10] | 162 | |
---|
| 163 | # find a relative up-path to a file $file, starting at directory $pre |
---|
[70810dc] | 164 | sub find_file($$) |
---|
[7e03d10] | 165 | { |
---|
| 166 | my $pre = $_[0] ; |
---|
| 167 | my $file= $_[1] ; |
---|
| 168 | |
---|
| 169 | my $top = "." ; |
---|
| 170 | if (not "$pre") { $pre = "." ; } |
---|
| 171 | |
---|
[df49c60] | 172 | for ( my $str = "$pre" . "/" . "$top" ; |
---|
[7e03d10] | 173 | ( -d "$str" ) ; |
---|
| 174 | $str = "$pre" . "/" . "$top" ) |
---|
| 175 | { |
---|
| 176 | if ( -f "${str}/${file}" ) |
---|
| 177 | { |
---|
| 178 | return $top ; |
---|
| 179 | } |
---|
| 180 | if ( "$top" eq "." ) |
---|
| 181 | { |
---|
| 182 | $top = ".." ; |
---|
| 183 | } |
---|
| 184 | else |
---|
| 185 | { |
---|
| 186 | $top .= "/.." ; |
---|
| 187 | } |
---|
| 188 | } ; |
---|
| 189 | die "Can't find file ${file}\n" ; |
---|
| 190 | } |
---|
| 191 | |
---|
[70810dc] | 192 | sub find_root() |
---|
| 193 | { |
---|
| 194 | my $top_builddir = "." ; |
---|
| 195 | my $subdir=""; |
---|
| 196 | my $pwd = `pwd`; chomp $pwd; |
---|
| 197 | $pwd .= "/" ; |
---|
| 198 | my $len ; |
---|
[7e03d10] | 199 | |
---|
[70810dc] | 200 | if ( -f "VERSION" ) { return $subdir ; } |
---|
| 201 | my $i = rindex($pwd,'/'); |
---|
[7e03d10] | 202 | |
---|
[70810dc] | 203 | $len = $i; |
---|
| 204 | $pwd = substr($pwd,0,$len); |
---|
| 205 | $i = rindex($pwd,'/'); |
---|
| 206 | $subdir = substr($pwd,$i+1,$len - 1); |
---|
| 207 | $top_builddir = ".." ; |
---|
[7e03d10] | 208 | |
---|
[70810dc] | 209 | while( -d "$top_builddir" ) |
---|
[7e03d10] | 210 | { |
---|
[70810dc] | 211 | if ( -f "${top_builddir}/VERSION" ) |
---|
| 212 | { |
---|
| 213 | return $subdir ; |
---|
| 214 | } |
---|
| 215 | $len=$i; |
---|
| 216 | $pwd = substr($pwd,0,$len); |
---|
| 217 | $i = rindex($pwd,'/'); |
---|
| 218 | $subdir = substr($pwd,$i+1,$len - 1) . "/$subdir"; |
---|
| 219 | $top_builddir .= "/.." ; |
---|
| 220 | } ; |
---|
| 221 | die "Can't find VERSION\n" ; |
---|
| 222 | } |
---|
| 223 | |
---|
[edb9d70] | 224 | sub variable_seen($) |
---|
[70810dc] | 225 | { |
---|
[edb9d70] | 226 | my $label = "$_[0]" ; |
---|
| 227 | my $res = defined $var_{"$label"}; |
---|
| 228 | #print STDERR "SEEN: $label ->$res<\n" ; |
---|
| 229 | return $res ; |
---|
| 230 | } |
---|
| 231 | |
---|
| 232 | sub define_variable($$) |
---|
| 233 | { |
---|
| 234 | my ($label,@value) = @_ ; |
---|
[70810dc] | 235 | |
---|
[edb9d70] | 236 | if ( not variable_seen("$label") ) |
---|
[7e03d10] | 237 | { |
---|
[edb9d70] | 238 | # print STDERR "DEFINING $label\n" ; |
---|
| 239 | push @vars, "$label" ; |
---|
[7e03d10] | 240 | } |
---|
[edb9d70] | 241 | |
---|
| 242 | foreach my $i ( @{value} ) |
---|
[7e03d10] | 243 | { |
---|
[edb9d70] | 244 | push @{$var_{"$label"}}, $i ; |
---|
[7e03d10] | 245 | } |
---|
[70810dc] | 246 | } |
---|
[7e03d10] | 247 | |
---|