summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xtools/buildzip.pl27
-rw-r--r--tools/root.make53
2 files changed, 50 insertions, 30 deletions
diff --git a/tools/buildzip.pl b/tools/buildzip.pl
index de7fd90e79..6d25a01f8f 100755
--- a/tools/buildzip.pl
+++ b/tools/buildzip.pl
@@ -13,6 +13,7 @@ use strict;
use File::Copy; # For move() and copy()
use File::Find; # For find()
use File::Path qw(mkpath rmtree); # For rmtree()
+use Cwd;
use Cwd 'abs_path';
use Getopt::Long qw(:config pass_through); # pass_through so not confused by -DTYPE_STUFF
@@ -29,6 +30,7 @@ my $incfonts;
my $target_id; # passed in, not currently used
my $rbdir; # can be non-.rockbox for special builds
my $app;
+my $mklinks;
sub glob_mkdir {
my ($dir) = @_;
@@ -81,10 +83,16 @@ sub find_copyfile {
print "find_copyfile: $pattern -> $destination\n" if $verbose;
return sub {
my $path = $_;
+ my $source = getcwd();
if ($path =~ $pattern && filesize($path) > 0 && !($path =~ /$rbdir/)) {
- copy($path, $destination);
- print "cp $path $destination\n" if $verbose;
- chmod(0755, $destination.'/'.$path);
+ if($mklinks) {
+ print "link $path $destination\n" if $verbose;
+ symlink($source.'/'.$path, $destination.'/'.$path);
+ } else {
+ print "cp $path $destination\n" if $verbose;
+ copy($path, $destination);
+ chmod(0755, $destination.'/'.$path);
+ }
}
}
}
@@ -205,6 +213,7 @@ GetOptions ( 'r|root=s' => \$ROOT,
'v|verbose' => \$verbose,
'install=s' => \$install, # install destination
'rbdir:s' => \$rbdir, # If we want to put in a different directory
+ 'l|link' => \$mklinks, # If we want to create links instead of copying files
);
# GetOptions() doesn't remove the params from @ARGV if their value was ""
@@ -695,9 +704,15 @@ sub runone {
}
if($install) {
- make_install(".rockbox", $install) or die "MKDIRFAILED\n";
- rmtree(".rockbox");
- print "rm .rockbox\n" if $verbose;
+ if($mklinks) {
+ my $cwd = getcwd();
+ symlink("$cwd/.rockbox", "$install/.rockbox");
+ print "link .rockbox $install\n" if $verbose;
+ } else {
+ make_install(".rockbox", $install) or die "MKDIRFAILED\n";
+ rmtree(".rockbox");
+ print "rm .rockbox\n" if $verbose;
+ }
}
else {
unless (".rockbox" eq $rbdir) {
diff --git a/tools/root.make b/tools/root.make
index 885a80d2c6..cb7ab9620c 100644
--- a/tools/root.make
+++ b/tools/root.make
@@ -307,33 +307,38 @@ fullinstall:
@echo "Installing a full setup in your '$(RBPREFIX)' dir"
$(SILENT)$(TOOLSDIR)/buildzip.pl $(VERBOSEOPT) -m "$(MODELNAME)" -i "$(TARGET_ID)" $(INSTALL) -z "zip -r0" -r "$(ROOTDIR)" --rbdir="$(RBDIR)" -f 2 $(TARGET) $(BINARY)
+symlinkinstall:
+ @echo "Installing a full setup with links in your '$(RBPREFIX)' dir"
+ $(SILENT)$(TOOLSDIR)/buildzip.pl $(VERBOSEOPT) -m "$(MODELNAME)" -i "$(TARGET_ID)" $(INSTALL) -z "zip -r0" -r "$(ROOTDIR)" --rbdir="$(RBDIR)" -f 2 $(TARGET) $(BINARY) -l
+
help:
@echo "A few helpful make targets"
@echo ""
- @echo "all - builds a full Rockbox (default), including tools"
- @echo "bin - builds only the Rockbox.<target name> file"
- @echo "rocks - builds only plugins"
- @echo "codecs - builds only codecs"
- @echo "dep - regenerates make dependency database"
- @echo "clean - cleans a build directory (not tools)"
- @echo "veryclean - cleans the build and tools directories"
- @echo "manual - builds a manual (pdf)"
- @echo "manual-html - HTML manual"
- @echo "manual-zip - HTML manual (zipped)"
- @echo "manual-txt - txt manual"
- @echo "fullzip - creates a rockbox.zip of your build with fonts"
- @echo "zip - creates a rockbox.zip of your build (no fonts)"
- @echo "gzip - creates a rockbox.tar.gz of your build (no fonts)"
- @echo "bzip2 - creates a rockbox.tar.bz2 of your build (no fonts)"
- @echo "7zip - creates a rockbox.7z of your build (no fonts)"
- @echo "fontzip - creates rockbox-fonts.zip"
- @echo "mapzip - creates rockbox-maps.zip with all .map files"
- @echo "tools - builds the tools only"
- @echo "voice - creates the voice clips (voice builds only)"
- @echo "voicetools - builds the voice tools only"
- @echo "install - installs your build (at PREFIX, defaults to simdisk/ for simulators (no fonts))"
- @echo "fullinstall - installs your build (like install, but with fonts)"
- @echo "reconf - rerun configure with the same selection"
+ @echo "all - builds a full Rockbox (default), including tools"
+ @echo "bin - builds only the Rockbox.<target name> file"
+ @echo "rocks - builds only plugins"
+ @echo "codecs - builds only codecs"
+ @echo "dep - regenerates make dependency database"
+ @echo "clean - cleans a build directory (not tools)"
+ @echo "veryclean - cleans the build and tools directories"
+ @echo "manual - builds a manual (pdf)"
+ @echo "manual-html - HTML manual"
+ @echo "manual-zip - HTML manual (zipped)"
+ @echo "manual-txt - txt manual"
+ @echo "fullzip - creates a rockbox.zip of your build with fonts"
+ @echo "zip - creates a rockbox.zip of your build (no fonts)"
+ @echo "gzip - creates a rockbox.tar.gz of your build (no fonts)"
+ @echo "bzip2 - creates a rockbox.tar.bz2 of your build (no fonts)"
+ @echo "7zip - creates a rockbox.7z of your build (no fonts)"
+ @echo "fontzip - creates rockbox-fonts.zip"
+ @echo "mapzip - creates rockbox-maps.zip with all .map files"
+ @echo "tools - builds the tools only"
+ @echo "voice - creates the voice clips (voice builds only)"
+ @echo "voicetools - builds the voice tools only"
+ @echo "install - installs your build (at PREFIX, defaults to simdisk/ for simulators (no fonts))"
+ @echo "fullinstall - installs your build (like install, but with fonts)"
+ @echo "symlinkinstall - like fullinstall, but with links instead of copying files. (Good for developing on simulator)"
+ @echo "reconf - rerun configure with the same selection"
### general compile rules: