summaryrefslogblamecommitdiffstats
path: root/bootstrap
blob: b3da39383bbe77d8c1790ec907595177113c5c51 (plain) (tree)
1
2
3
4
5
6
7
8
9
         
 

                                                
 
                                                          
 
                                            
 



                                                 

                       


             
          
             
                 
       


       
      
                                               

                 
                                                                                  
                                                    
                                                  

                                                       
      
        

 
                                                 
                     
                                                                         
        

  

                       

                     
                             
              

                                                
              
         
                             
              
         


                             

                
         
                                      
                   
         
                                                           
                 
         
                            
          
                              



          
             





                                                                                     













































                                                                                                       
                            
                                                            



                                                                  

























                                                                                                                         
                                                                               







                                                           
                                                               




                                                                           
      
              

    
         
                               

                                                           
          
    
 



                                                           
    
 
                               

                                                           
          
    
 





                                                           
                     
                              
      
                                  


      
                                                                          
                     



                                         

                                                             
                                                       
                                                             
                            
                                                                  
                                                       
                                                                        


                                                       

                                                                       


      
 








                                                             



                                         
                                            





                                                                       

                                                                                

                                                                    

                       

                                         
      

                                                           

                                         


                                         
      
      
 













                                     


                                      
                         


                                             
          



          
                                                            


                                                             

                       

                                         
      

                                        
                                                  



                                                   
                                                  
                                                                                                     
                                            

                                            
                                               

    

      
#!/bin/sh
#
# helps bootstrapping, when checked out from CVS
# requires GNU autoconf and GNU automake
#
# this is not meant to be exported outside the source tree
#
# NOTE: Inspired by libtool's autogen script
#
# to be run from the toplevel directory of RTEMS'
# source tree

progname=`basename $0`
top_srcdir=`dirname $0`

LC_ALL=C
export LC_ALL

verbose=""
quiet="false"
mode="autoreconf"
force=0

usage()
{
  echo
  echo "usage: ${progname} [-c|-h|-H] [-q][-v]"
  echo
  echo "options:"
  echo "	-c .. clean, remove all aclocal/autoconf/automake generated files"
  echo "	-h .. display this message and exit"
  echo "	-H .. regenerate headers.am files"
  echo "	-q .. quiet, don't display directories"
  echo "	-v .. verbose, pass -v to autotools"
  echo
  exit 1
}

if test ! -f $top_srcdir/aclocal/version.m4; then
  echo "${progname}:"
  echo "	Installation problem: Can't find file aclocal/version.m4"
  exit 1
fi

while test $# -gt 0; do
case $1 in
-h|--he|--hel|--help)
  usage ;;
-q|--qu|--qui|--quie|--quiet)
  quiet="true"
  shift;;
-v|--ve|--ver|--verb|--verbo|--verbos|--verbose)
  verbose="-v"
  shift;;
-c|--cl|--cle|--clea|--clean)
  mode="clean"
  shift;;
-f|--fo|--for|--forc|--force)
  force=`expr $force + 1`
  shift;;
-H|--headers)
  mode="headers"
  shift;;
-r|--re|--rec|--reco|--recon|--reconf)
  mode="autoreconf"
  shift;;
-g|--ge|--gen|--gene|--gener|--genera|--generat|--generate)
  mode="generate"
  shift;;
-*) echo "unknown option $1"
  usage ;;
*) echo "invalid parameter $1"
  usage ;;
esac
done

case $mode in
headers)
  if test "." != "$top_srcdir"; then
    echo "To generate the headers.am you must call the script via \"./$progname -H\""
    exit 1
  fi
  base="$PWD"

  # Generate cpukit/header-dirs.am
  tmp="$base/cpukit/header-dirs.am.new"
  hdr_dirs=`for i in cpukit/include cpukit/libnetworking cpukit/score/cpu/*/include ; do
    cd "$i"
    find -mindepth 1 -type d
    cd "$base"
  done | sort -u | sed 's%^\./%%'`
  echo '## This file was generated by "./boostrap -H".' > "$tmp"
  echo 'include_HEADERS =' >> "$tmp"
  for dir in $hdr_dirs ; do
    am_dir=`echo $dir | sed 's%[/-]%_%g'`
    echo "include_${am_dir}dir = \$(includedir)/$dir" >> "$tmp"
    echo "include_${am_dir}_HEADERS =" >> "$tmp"
  done
  diff -q "$tmp" "cpukit/header-dirs.am" || mv "$tmp" "cpukit/header-dirs.am"
  rm -f "$tmp"

  # Generate cpukit/*/headers.am
  tmp="$base/headers.am.new"
  cpukit="$base/cpukit"
  cd "$cpukit"
  for inc in include score/cpu/*/include ; do
    echo '## This file was generated by "./boostrap -H".' > "$tmp"
    hdr=`dirname $inc`
    am_dir=""
    cd $inc
    for b in `find -type d | sort` ; do
      for j in `find $b -mindepth 1 -maxdepth 1 -name '*.h' | sed 's%^\.%%' | sed 's%^/%%' | sort` ; do
        dir=`dirname $j`
        if test x$dir != x. ; then
          am_dir=`echo $dir | sed 's%[/-]%_%g'`
          am_dir="_$am_dir"
        else
          am_dir=""
        fi
        echo "include${am_dir}_HEADERS += $inc/$j" >> "$tmp"
      done
    done
    cd "$cpukit"
    diff -q "$tmp" "${hdr}/headers.am" || mv "$tmp" "${hdr}/headers.am"
  done
  rm -f "$tmp"
  cd "$base"

  # Generate bsps/*/headers.am
  tmp="$base/headers.am.new"
  for i in bsps/include bsps/*/include bsps/*/*/include ; do
    dir=""
    am_dir=""
    echo '## This file was generated by "./boostrap -H".' > "$tmp"
    case $i in
      bsps/*/*/include)
        hdr="../"
        inc="../../../../../../$i/"
        ;;
      bsps/*/include)
        hdr="../"
        inc="../../../../../$i/"
        ;;
      bsps/include)
        hdr="../"
        inc="../../$i/"
        ;;
      *)
        hdr=""
        inc=""
        ;;
    esac
    cd $i
    for b in `find -type d | sort` ; do
      for j in `find $b -mindepth 1 -maxdepth 1 -name '*.h' -or -name '*.inc' | sed 's%^\.%%' | sed 's%^/%%' | sort` ; do
        d=`dirname $j`
        if test x$d != x$dir ; then
          dir=$d
          if test x$d != x. ; then
            am_dir=`echo $dir | sed 's%[/-]%_%g'`
            am_dir="_$am_dir"
            printf "\ninclude%sdir = \$(includedir)/$dir\n" "$am_dir" >> "$tmp"
          else
            am_dir=""
            echo "" >> "$tmp"
          fi
          echo "include${am_dir}_HEADERS =" >> "$tmp"
        fi
        echo "include${am_dir}_HEADERS += $inc$j" >> "$tmp"
        if test $j = bsp.h ; then
          echo "include_HEADERS += include/bspopts.h" >> "$tmp"
        fi
      done
    done
    cd "$base"
    diff -q "$tmp" "$i/${hdr}headers.am" || mv "$tmp" "$i/${hdr}headers.am"
  done
  rm -f "$tmp"
  ;;

generate)
  AUTOCONF=${AUTOCONF-autoconf}
  if test -z "$AUTOCONF"; then
    echo "You must have autoconf installed to run $program"
    exit 1
  fi

  AUTOHEADER=${AUTOHEADER-autoheader}
  if test -z "$AUTOHEADER"; then
    echo "You must have autoconf installed to run $program"
    exit 1
  fi

  AUTOMAKE=${AUTOMAKE-automake}
  if test -z "$AUTOMAKE"; then
    echo "You must have automake installed to run $program"
    exit 1
  fi

  ACLOCAL=${ACLOCAL-aclocal}
  if test -z "$ACLOCAL"; then
    echo "You must have automake installed to run $program"
    exit 1
  fi

  case $top_srcdir in
  /* ) aclocal_dir=$top_srcdir
    ;;
  *) aclocal_dir=`pwd`/$top_srcdir
    ;;
  esac

  confs=`find . \( -name 'configure.in' -o -name 'configure.ac' \) -print`
  for i in $confs; do
  dir=`dirname $i`
  configure=`basename $i`
  ( test "$quiet" = "true" || echo "$dir"
    cd $dir
    pat="s,\$(RTEMS_TOPdir),${aclocal_dir},g"
    aclocal_args=`grep '^[ ]*ACLOCAL_AMFLAGS' Makefile.am | \
      sed -e 's%.*ACLOCAL_AMFLAGS.*\=[ ]*%%g' -e $pat `
    test "$verbose" = "-v" && echo "${ACLOCAL} $aclocal_args"
    ${ACLOCAL} $aclocal_args
    test -n "`grep CONFIG_HEADER ${configure}`" && ${AUTOHEADER} \
      && test "$verbose" = "-v" && echo "${AUTOHEADER}"
    test -n "`grep RTEMS_BSP_CONFIGURE ${configure}`" && ${AUTOHEADER} \
      && test "$verbose" = "-v" && echo "${AUTOHEADER}"
    test -f Makefile.am && ${AUTOMAKE} -a -c $verbose
    ${AUTOCONF}
    test -f Makefile.am && test -n "`grep 'stamp-h\.in' Makefile.in`" \
      && echo timestamp > stamp-h.in
  )
  done
  ;;

autoreconf)
  AUTORECONF=${AUTORECONF-autoreconf}
  if test -z "$AUTORECONF"; then
    echo "You must have autoreconf installed to run $program"
    exit 1
  fi

  confs=`find . -name 'configure.ac' -print`
  for i in $confs; do
  dir=`dirname $i`
  configure=`basename $i`
  ( test "$quiet" = "true" || echo "$dir"
    cd $dir
    ${AUTORECONF} -i --no-recursive $verbose
    test -f Makefile.am && test -n "`grep 'stamp-h\.in' Makefile.in`" \
      && echo timestamp > stamp-h.in
  )
  done
  ;;

clean)
  test "$quiet" = "true" || echo "removing automake generated Makefile.in files"
  files=`find . -name 'Makefile.am' -print | sed -e 's%\.am%\.in%g'`
  for i in $files; do
    if test -f $i; then
      rm -f $i
      test "$verbose" = "-v" && echo "$i"
    fi
  done

  test "$quiet" = "true" || echo "removing configure files"
  files=`find . -name 'configure' -print`
  for i in $files; do
    if test -f $i; then
      rm -f $i
      test "$verbose" = "-v" && echo "$i"
    fi
  done

  if test $force -gt 0; then
    needles=""
    if test $force -gt 1; then
      # Manually maintained
      needles="$needles config.sub"
      needles="$needles config.guess"
    fi
    if test $force -gt 0; then
      # Inherited from automake
      needles="$needles compile"
      needles="$needles depcomp"
      needles="$needles install-sh"
      needles="$needles missing"
      needles="$needles mdate-sh"
    fi
    for j in $needles; do
      files=`find . -name "$j" -print`
      for i in $files; do
        if test -f $i; then
          rm -f $i
          test "$verbose" = "-v" && echo "$i"
        fi
      done
    done
  fi

  test "$quiet" = "true" || echo "removing aclocal.m4 files"
  files=`find . -name 'aclocal.m4' -print`
  test "$verbose" = "-v" && test -n "$files" && echo "$files"
  for i in $files; do
    if test -f $i; then
      rm -f $i
      test "$verbose" = "-v" && echo "$i"
    fi
  done

  find . -name '*~' -print | xargs rm -f
  find . -name 'bspopts.h.in' -print | xargs rm -f
  find . -name '*.orig' -print | xargs rm -f
  find . -name '*.rej' -print | xargs rm -f
  find . -name 'config.status' -print | xargs rm -f
  find . -name 'config.log' -print | xargs rm -f
  find . -name 'config.cache' -print | xargs rm -f
  find . -name 'Makefile' -and -not -path ./testsuites/ada/sptests/sp19/Makefile -print | xargs rm -f
  find . -name '.deps' -print | xargs rm -rf
  find . -name '.libs' -print | xargs rm -rf
  find . -name 'stamp-h.in' | xargs rm -rf
  find . -name 'autom4te*.cache' | xargs rm -rf
  ;;
esac

exit 0