#!/usr/bin/perl # __________ __ ___. # Open \______ \ ____ ____ | | _\_ |__ _______ ___ # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ # \/ \/ \/ \/ \/ # $Id$ # # This program attempts to run configure with the correct build target # and type based on the pwd. # example: ~/rockbox/sansae200 is the build dir, it would run configure # for the sansae200 normal build target. # ~/rockbox/sansae200-sim for the e200 sim build (-boot for bootloader) # ~/rockbox/sim/sansae200 for e200 sim build. (replace sim with boot is also possible) # The full shortname is not required, each target name is checked and the first # possible match is used. # This script must be placed in the same directory as configure and builds.pm # use File::Basename; my $srcdir = dirname $0; require "$srcdir/builds.pm"; my $builddir = `pwd`; my @dirs = split(/\//, $builddir); my $test = pop(@dirs); sub doconfigure { my ($target, $type, $width, $height) = @_; if (!exists($builds{$target})) { for $key (keys(%builds)) { if ($key =~ $target) { $target = $key; last; } } } $command = "${srcdir}/configure --type=${type} --target=${target}"; if (defined $width) { $command .= " --lcdwidth=${width}"; } if (defined $height) { $command .= " --lcdheight=${height}"; } %typenames = ("n" => "Normal", "s" => "Simulator", "b" => "Bootloader" ); unless (@ARGV[0] eq "-y") { $prompt = "Rockbox autoconf: \n\tTarget: $target \n\tType: $typenames{$type} \n"; if (defined $width) { $prompt .= "\tLCD width: $width\n"; } if (defined $height) { $prompt .= "\tLCD height: $height\n"; } print $prompt . "Correct? [Y/n] "; chomp($response = <>); if ($response eq "") { $response = "y"; } if ($response ne "y" && $response ne "Y") { print "autoconf: Aborting\n"; exit(0); } } system($command); } sub buildtype { my ($text) = @_; if ($text eq "sim") { $build = "s"; } elsif ($text eq "boot") { $build = "b"; } elsif ($text eq "build") { $build = "n"; } else { $build = ""; } return $build; } if ($test =~ /(.*)-(.*)-([0-9]+)x([0-9]+)/) { if (buildtype($2)) { doconfigure($1, buildtype($2), $3, $4); } elsif (buildtype($1)) { doconfigure($2, buildtype($1), $3, $4); } } elsif ($test =~ /(.*)-(.*)/) { if (buildtype($2)) { doconfigure($1, buildtype($2)); } elsif (buildtype($1)) { doconfigure($2, buildtype($1)); } } elsif ($test =~ /(.*)/) { $target = $1; $build = buildtype(pop(@dirs)); doconfigure($target, $build); }