Radix cross Linux Build System

Cross-platform build system is designed to build distributions of different operating systems for a set of target devices

39 Commits   2 Branches   2 Tags
Index: global_clean
===================================================================
--- global_clean	(nonexistent)
+++ global_clean	(revision 5)
@@ -0,0 +1,113 @@
+#!/bin/env perl
+
+use FindBin;
+use lib $FindBin::Bin;
+
+use strict;
+use warnings FATAL => 'all';
+
+use File::Find;
+use _kxLab;
+
+
+# Global variables
+my $header_printed = 0;
+
+my $top_dir;
+my @targets;
+my $verbose = $ENV{VERBOSE};
+
+my %seen;
+my ( @clean_dirs, @clean_dirs_all );
+my ( $clean_count );
+
+sub do_clean
+{
+  unlink "$top_dir/.makefile";
+
+  foreach my $d ( @clean_dirs )
+  {
+    my $printed_d;
+
+    $printed_d = $d;
+    $printed_d =~ s/^$top_dir\///;
+
+    print "\n=======\n" if ( $verbose );
+    print "======= Cleaning in $printed_d...\n" if ( $verbose );
+    print "=======\n" if ( $verbose );
+
+    _kxLab::system( "make -C $d local_clean" );
+
+    # remove requires and .makefile:
+    unlink "$d/.makefile";
+    unlink <$d/.*_requires*>;
+    # remove lists of files installed into $top_dir/dist/products and $top_dir/dist/rootfs:
+    unlink <$d/.*.rootfs>;
+    unlink <$d/.*.dist*>;
+  }
+}
+
+
+sub find_directories
+{
+  # find all directories which has Makefile and hiden build results
+  my $shell_output = <<`SHELL`;
+  dirs=`find $top_dir -name ".[a-zA-Z0-9_-+.]*"       \\
+	! -path "$top_dir/doc/*"                      \\
+	! -path "$top_dir/dist/*"                     \\
+	! -path "$top_dir/sources/*"                  \\
+	! -path "$top_dir/build-system/3pp/sources/*" \\
+	-prune -exec dirname {} \\; | sort -u`
+
+  for dir in \$dirs ; do
+    if [ -f "\$dir/Makefile" ] ; then
+      echo "\$dir"
+    fi
+  done
+SHELL
+
+  @clean_dirs = split /\n/, $shell_output;
+  @clean_dirs = grep { $_ ne $top_dir } @clean_dirs;
+}
+
+
+foreach ( @ARGV )
+{
+  push @targets, $_;
+}
+$top_dir = pop @targets;
+
+if( ! -d $top_dir )
+{
+  die "\nTop: $top_dir: is not a directory\n\n";
+}
+if( ! $top_dir =~ m/^\// )
+{
+  die "\nTop: $top_dir: is not absolute path\n\n";
+}
+
+
+find_directories();
+
+
+$clean_count = $#clean_dirs;
+
+if( $clean_count != 0 )
+{
+  if( !$header_printed )
+  {
+    print "\n======= Cleaning build tree =======\n\n" if ( $verbose );
+    $header_printed = 1;
+  }
+
+  do_clean();
+
+  # remove DEST_DIR_ABS
+  _kxLab::system( "rm -rf $top_dir/dist" );
+
+  print "\n";
+}
+else
+{
+  print "\nCleaning...   (nothing to be done).\n\n";
+}

Property changes on: global_clean
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property