Add a simple script to try to run configure with the correct target name/type based on the build directory name.

~/rockbox/.../e200  -> e200, normal
~/rockbox/.../e200-sim -> e200, sim build
~/rockbox/.../sim/e200 -> e200, sim build
replace sim with "boot" for bootloader, falls back on normal if neither is given.

Run this from inside the build dir just like you would tools/configure

using the full shortname guarentees the correct match, as above e200 will work for sansae200.... asks for confirmation before doing anything.
Add your folder structure if this doesnt work for your way of doing things

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28180 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jonathan Gordon 2010-09-28 13:44:56 +00:00
parent 7b52f97912
commit 4c385e6cb3
1 changed files with 79 additions and 0 deletions

79
tools/autoconf.pl Executable file
View File

@ -0,0 +1,79 @@
#!/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) = @_;
if (!exists($builds{$target})) {
for $key (keys(%builds)) {
if ($key =~ $target) {
$target = $key;
last;
}
}
}
$command = "${srcdir}/configure --type=${type} --target=${target}";
%typenames = ("n" => "Normal", "s" => "Simulator", "b" => "Bootloader" );
print "Rockbox autoconf: \n\tTarget: $target \n\tType: $typenames{$type} \nCorrect? [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";
} else {
$build = "n";
}
return $build;
}
if ($test =~ /(.*)-(.*)/)
{
$target = $1;
$build = buildtype($2);
doconfigure($target, $build);
}
elsif ($test =~ /(.*)/)
{
$target = $1;
$build = buildtype(pop(@dirs));
doconfigure($target, $build);
}