Using the -o|--only <arch> option, it is now possible to limit the
bootstrapping operation of arch-specific libbsp, libcpu and cpukit paths
to a single arch, for example:

  $ bootstrap -p -o or1k

and

  $ bootstrap -o or1k

This is a somewhat ugly implementation, but may be sufficient for the
intended usage.

* The cleaning operation is not currently able to selectively clean
  archs
* It is currently not possible to specify more than one arch at a time

This reduces bootstrap time to around a third compared to a full run.
---
 bootstrap | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)

diff --git a/bootstrap b/bootstrap
index e9cb851..3434e51 100755
--- a/bootstrap
+++ b/bootstrap
@@ -17,6 +17,7 @@ verbose=""
 quiet="false"
 mode="autoreconf"
 force=0
+bsp_to_build=
 
 usage()
 {
@@ -27,6 +28,7 @@ usage()
   echo "       -c .. clean, remove all aclocal/autoconf/automake generated 
files"
   echo "       -h .. display this message and exit"
   echo "       -p .. regenerate preinstall.am files"
+  echo "       -o <arch> .. only generate for given <arch>"
   echo "       -q .. quiet, don't display directories"
   echo "       -v .. verbose, pass -v to autotools"
   echo
@@ -94,6 +96,11 @@ case $1 in
 -g|--ge|--gen|--gene|--gener|--genera|--generat|--generate)
   mode="generate"
   shift;;
+-o|--on|--onl|--only)
+  test $# -gt 1 || usage
+  bsp_to_build=$2
+  shift
+  shift;;
 -*) echo "unknown option $1"
   usage ;;
 *) echo "invalid parameter $1"
@@ -105,6 +112,27 @@ case $mode in
 preinstall)
   confs=`find . -name Makefile.am -exec grep -l 'include .*/preinstall\.am' {} 
\;`
   for i in $confs; do
+    if test -n "$bsp_to_build"; then
+      case $i in
+       ./c/src/lib/libbsp/$bsp_to_build/*)
+         ;;
+       ./c/src/lib/libbsp/*)
+         continue; # skip this file
+         ;;
+       ./c/src/lib/libcpu/$bsp_to_build/*)
+         ;;
+       ./c/src/lib/libcpu/*)
+         continue #skip this file
+         ;;
+       ./cpukit/score/cpu/$bsp_to_build/*)
+         ;;
+       ./cpukit/score/cpu/*)
+         continue #skip this file
+         ;;
+       *)
+         ;;
+      esac
+    fi
     dir=$(dirname $i)
     test "$quite" = "true" || echo "Generating $dir/preinstall.am"
     ${top_srcdir}/ampolish3 "$dir/Makefile.am" > "$dir/preinstall.am"
@@ -145,6 +173,22 @@ generate)
 
   confs=`find . \( -name 'configure.in' -o -name 'configure.ac' \) -print`
   for i in $confs; do
+  if test -n "$bsp_to_build"; then
+    case $i in
+      ./c/src/lib/libbsp/$bsp_to_build/*)
+       ;;
+      ./c/src/lib/libbsp/*)
+       continue # skip this file
+       ;;
+      ./c/src/lib/libcpu/$bsp_to_build/*)
+       ;;
+      ./c/src/lib/libcpu/*)
+       continue #skip this file
+       ;;
+      *)
+       ;;
+    esac
+  fi
   dir=`dirname $i`
   configure=`basename $i`
   ( test "$quiet" = "true" || echo "$dir"
@@ -177,6 +221,22 @@ autoreconf)
 
   confs=`find . -name 'configure.ac' -print`
   for i in $confs; do
+  if test -n "$bsp_to_build"; then
+    case $i in
+      ./c/src/lib/libbsp/$bsp_to_build/*)
+       ;;
+      ./c/src/lib/libbsp/*)
+       continue # skip this file
+       ;;
+      ./c/src/lib/libcpu/$bsp_to_build/*)
+       ;;
+      ./c/src/lib/libcpu/*)
+       continue #skip this file
+       ;;
+      *)
+       ;;
+    esac
+  fi
   dir=`dirname $i`
   configure=`basename $i`
   ( test "$quiet" = "true" || echo "$dir"
-- 
1.9.1

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to