diff options
| -rwxr-xr-x | extra/Configs/uClibc_config_fix.pl | 168 | 
1 files changed, 168 insertions, 0 deletions
| diff --git a/extra/Configs/uClibc_config_fix.pl b/extra/Configs/uClibc_config_fix.pl new file mode 100755 index 000000000..466c5b856 --- /dev/null +++ b/extra/Configs/uClibc_config_fix.pl @@ -0,0 +1,168 @@ +#!/usr/bin/perl +# Silly script to fixup the uClibc config file +# (c) Erik Andersen <andersee@codepoet.org> +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. +# + +use strict; +use Getopt::Long; + +# User Specified variables (commandline) +my($arch)	    = ""; +my($cross)	    = ""; +my($xcc)	    = ""; +my($native_cc)	    = ""; +my($devel_prefix)   = "/usr/$arch-linux-uclibc"; +my($kernel_dir)	    = "/usr/src/linux"; +my($ldso_path)	    = "$devel_prefix/lib"; +my($mmu)	    = "true"; +my($large_file)	    = "false"; +my($rpc_support)    = "false"; +my($c99_math)	    = "false"; +my($shared_support) = "true"; +my($shadow)	    = "false"; +my($pic)	    = "true"; +my($filename)	    = ""; +my($line); +my($got_arch); + +# Get commandline parameters +Getopt::Long::Configure("no_ignore_case", "bundling"); +&GetOptions(	"arch=s" => \$arch, +		"cross=s" => \$cross, +		"cc=s" => \$xcc, +		"native_cc=s" => \$native_cc, +		"devel_prefix=s" => \$devel_prefix, +		"kernel_dir=s" => \$kernel_dir, +		"mmu=s" => \$mmu, +		"large_file=s" => \$large_file, +		"rpc_support=s" => \$rpc_support, +		"c99_math=s" => \$c99_math, +		"shadow=s" => \$shadow, +		"shared_support=s" => \$shared_support, +		"ldso_path=s" => \$ldso_path, +		"pic=s" => \$pic, +		"file=s" => \$filename, +		); +chomp($arch); +chomp($cross); +chomp($xcc); +chomp($native_cc); +chomp($devel_prefix); +chomp($kernel_dir); +chomp($mmu); +chomp($large_file); +chomp($rpc_support); +chomp($c99_math); +chomp($shadow); +chomp($shared_support); +chomp($ldso_path); +chomp($pic); +chomp($filename); + +if ($filename) { +	open(FILE,"<$filename") or +		    die "(fatal) Can't open $filename:$!"; +} else { +    die "(fatal) Please give me a --file argument$!"; +} + + +while($line = <FILE>) { +    if ($line =~ /^TARGET_ARCH.*/) { +	print "TARGET_ARCH=\"$arch\"\n"; +	$got_arch=1; +	next; +    }  +    if ($cross && $line =~ /^CROSS.*/) { +	print "CROSS=\"$cross\"\n"; +	next; +    } +    if ($xcc && $line =~ /^CC.*/) { +	print "CC=\"$xcc\"\n"; +	next; +    } +    if ($native_cc && $line =~ /^NATIVE_CC.*/) { +	print "NATIVE_CC=\"$native_cc\"\n"; +	next; +    } +    if ($line =~ /^DEVEL_PREFIX.*/) { +	print "DEVEL_PREFIX=\"$devel_prefix\"\n"; +	next; +    } +    if ($line =~ /^KERNEL_SOURCE.*/) { +	print "KERNEL_SOURCE=\"$kernel_dir\"\n"; +	next; +    } +    if ($line =~ /^HAS_MMU.*/) { +	print "HAS_MMU=$mmu\n"; +	next; +    } +    if ($line =~ /^DOLFS.*/) { +	print "DOLFS=$large_file\n"; +	next; +    } +    if ($line =~ /^INCLUDE_RPC.*/) { +	print "INCLUDE_RPC=$rpc_support\n"; +	next; +    } +    if ($line =~ /^HAS_SHADOW.*/) { +	print "HAS_SHADOW=$shadow\n"; +	next; +    } +    if ($line =~ /^DO_C99_MATH.*/) { +	print "DO_C99_MATH=$c99_math\n"; +	next; +    } +    if ($shared_support == "true") { +	if ($line =~ /^BUILD_UCLIBC_LDSO.*/) { +	    print "BUILD_UCLIBC_LDSO=true\n"; +	    next; +	} +	if ($line =~ /^HAVE_SHARED.*/) { +	    print "HAVE_SHARED=true\n"; +	    next; +	} +	# Force PIC to be true when HAVE_SHARED is true +	if ($line =~ /^DOPIC.*/) { +	    print "DOPIC=true\n"; +	    next; +	} +	if ($line =~ /^SHARED_LIB_LOADER_PATH.*/) { +	    print "SHARED_LIB_LOADER_PATH=\"$ldso_path\"\n"; +	    next; +	} +    } else { +	if ($line =~ /^BUILD_UCLIBC_LDSO.*/) { +	    print "BUILD_UCLIBC_LDSO=false\n"; +	    next; +	} +	if ($line =~ /^HAVE_SHARED.*/) { +	    print "HAVE_SHARED=false\n"; +	    next; +	} +	if ($line =~ /^DOPIC.*/) { +	    print "DOPIC=false\n"; +	    next; +	} +    } +    print "$line"; +} + +if (! $got_arch) { +    print "TARGET_ARCH=$arch\n"; +} + | 
