#!/bin/sh

# FreeMiNT upgrade script
# full upgrade options good for a complete/new install
# can be run on non-MiNT os (linux/cygwin/gnu32/bsd/unix)
#
# TODO: update drivers for v4e as they are added to distros
#
if [ ! -f /bin/grep -o ! /bin/cut -o ! /bin/tar ]; then SKIP="yes"; else SKIP="no" ; fi
SCRIPT_VERSION="1.0b"
SCRIPT_LAST_EDIT="2011-08-02"
SCRIPT_EDITOR="Paul Wratt"
THIS_SCRIPT=`basename $0`
if [ "./$THIS_SCRIPT" = "$0" ]; then THIS_SCRIPT="./$THIS_SCRIPT"; fi
echo -en "FreeMiNT upgrade helper"
if [ "$SKIP" = "no" ]; then



 ### set the following if you upgrade alot ###
 ### or only ever uprade one platform      ###

# 	MiNT only: auto detect: yes/no
AUTO_DETECT="yes"
# 	use defaults: yes/no
USE_DEFAULTS="yes"
# 	default system: (see MCH_TYPES below)
DEF_MCH="ara"
# 	default cpu: (see MCH_TYPES below)
DEF_CPU="040"
# the following are used in auto-detection too
# 	install only mint.prg & xaaes.km: yes/no
DEF_KERNELS_ONLY="no"
# 	install kernel drivers: yes/no
DEF_DRIVERS="no"
# 	install xaaes extras: yes/no
DEF_EXTRAS="no"

 ### build path names, change them if you feel the need (no spaces) ###

# use --quite or --verbose to override this
# 	verbose shows file messages: yes/no
BE_VERBOSE="yes"
# 	SEQ1 = 20111202  SEQ2 = 235859
SEQ1=$(date +%Y%m%d)
SEQ2=$(date +%k%M%S)
# 	change/create unique sequence here (no spaces)
#UNIQUE=$SEQ1-$SEQ2
UNIQUE=$SEQ1
#	how to build the upgrade/install: copy/move
FILE_BUILD="copy"
# 	if you do a full install (--driver --extras) BUILD_DIR=
INSTALL_DIR=mint-install-$UNIQUE
# 	extract archive to WORKING_DIR/EXTRACT_DIR
EXTRACT_DIR=mint-distro-$UNIQUE
# 	if you are just doing an upgrade (WORKING_DIR/BUILD_DIR)
BUILD_DIR=mint-upgrade-$UNIQUE
# 	use working directory: . or /tmp or ~ (no trailing slash)
WORKING_DIR="."


 ### valid _system_type_ options as well ###
 ### as _machine_  & _cpu_  combinations ###

SPC_TYPES="aranym falcon ct6x medusa t40 milan hades firetos firebee coldfire"
MCH_TYPES="st stb ste ara fal med mil had tt mega mste ct fb"
CPU_TYPES="000 020 030 040 060 v4e"
SYS_TYPES="ara040 st000 st020 st030 st040 st060 stb000 stb020 ste000 ste020 ste030 ste040 ste060 fal030 fal040 fal060 med040 med060 mil040 mil060 had040 had060 ct060 fb060 fbv4e tt030 tt040 tt060 mega000 mega020 mega030 mega040 mega060 mste000 mste020 mste030 mste040 mste060"

 ### they will look prettier if LS shows them ###
LS_TYPES="no"
if [ -d /tmp ]; then
  if ! [ -d /tmp/.mint-upgrade ];then
    mkdir /tmp/.mint-upgrade
    mkdir /tmp/.mint-upgrade/presets
    mkdir /tmp/.mint-upgrade/systems
    mkdir /tmp/.mint-upgrade/machines
    mkdir /tmp/.mint-upgrade/cpus
    for xSPC in $SPC_TYPES; do
      mkdir /tmp/.mint-upgrade/presets/$xSPC
    done;
    for xSYS in $SYS_TYPES; do
      mkdir /tmp/.mint-upgrade/systems/$xSYS
    done;
    for xCPU in $CPU_TYPES; do
      mkdir /tmp/.mint-upgrade/cpus/$xCPU
    done;
    for xMCH in $MCH_TYPES; do
      mkdir /tmp/.mint-upgrade/machines/$xMCH
    done;
  fi
  if [ -d /tmp/.mint-upgrade ];then
    LS_TYPES="yes"
  fi
fi




 ### define texts - for easy language conversion ###

INVALID_ARCHIVE="error: archive is invalid:"
NO_ARCHIVE="can not process actual files. Following paths are only estimated."
MINT_ERR="not running under MiNT kernel"
AUTO_DETECTION="auto-detect: "
USING_DEFAULTS="using defaults: "
DRIVER_NOTICE=".. limited drivers:\n\tsome drivers not added - use specific _system_type_ to get them"
V4E_DRIVER_NOTICE=".. limited drivers:\n\tsome dirvers can be manually compiled with -m5457. ie EXT2.XFS"
WITH="with"
CONFIRMED="confirmed: "
INVALID_COMBO="Invalid combination:"
INVALID_COMBO="Invalid combination, requires:"
BUILDING=".. building for:"
NETWORKING="for a list of network drivers: $THIS_SCRIPT --help _freemint_.tar.bz2 --networks"
INSTALLED="Installed Drivers"
MISSING="is missing"
REQUIREMENTS="requirements:"
EXTRACTING=".. archive: extracting: "
REUSING=".. archive: reusing unchanged: "
DRY_RUN=".. swicthing to dry run:\n\tno files being written"
COPYING=".. copying:"
MOVING=".. moving:"

 ### pre-define variables ###

HELP_DO="no";
HELP_SHOW="no";
HELP_EXIT="yes"
HELP_INFO="no"
HELP_REQUIRES="no"
HELP_SYSTEMS="no"
HELP_MACHINES="no"
HELP_CPUS="no"
HELP_PROCESS="no"
INSTALL_DRIVERS="no"
INSTALL_EXTRAS="no"
INSTALL_TOOLS="no"
LIST_ALL_DRIVERS="no"
LIST_XAAES_EXTRAS="no"
LIST_NETWORK_DRIVERS="no"
LIST_KEYBOARDS="no"
LIST_TOOLS="no"
IS_MINT=""
IS_TAR="no"
IS_BZ2="no"
IS_GZ="no"
IS_ZIP="no"
EXTRACT_TOOL=""
EXTRACT_COMMAND=""
TAR_OPTIONS="--checkpoint --checkpoint-action=dot"
ARCHIVE=""
ARGS_KNOWN=""
ARGS_UNKNOWN=""
TYPE_FOUND="no"
SYS_TYPE=""
MCH_TYPE=""
CPU_TYPE=""
WARN="no"
KERN_WARN="no"
KERN_ACT=""
XIF="dummy.xif"
XFS="dummy.xfs ext2.xfs minix.xfs nfs.xfs"
XDD="dummy.xdd inet4.xdd lp.xdd xconout2.xdd"
WARN_XDD=""
DRIVERS=""
MOOSE_W="yes"
NETWORK=""
FORCE_DETECT="no"




 ### parse aguments ###

for ARG in "$@"; do
  ARG_HIT="no";
  TEST_FILE=""
  case "$ARG" in
  "--help")
    ARG_HIT="yes"
    HELP_DO="extended"
    HELP_SHOW="yes"
    HELP_EXIT="yes"
  ;;
  "--verbose")
    ARG_HIT="yes"
    BE_VERBOSE="yes"
  ;;
  "--quiet")
    ARG_HIT="yes"
    BE_VERBOSE="no"
  ;;
  "--info")
    ARG_HIT="yes"
    HELP_DO="extended"
    HELP_SHOW="no"
    HELP_EXIT="yes"
    HELP_INFO="yes"
  ;;
  "--requires")
    ARG_HIT="yes"
    HELP_DO="extended"
    HELP_SHOW="no"
    HELP_EXIT="yes"
    HELP_REQUIRES="yes"
  ;;
  "--presets")
    ARG_HIT="yes"
    HELP_DO="extended"
    HELP_SHOW="no"
    HELP_EXIT="yes"
    HELP_PRESETS="yes"
  ;;
  "--systems")
    ARG_HIT="yes"
    HELP_DO="extended"
    HELP_SHOW="no"
    HELP_EXIT="yes"
    HELP_SYSTEMS="yes"
    HELP_MACHINES="yes"
    HELP_CPUS="yes"
  ;;
  "--machines")
    ARG_HIT="yes"
    HELP_DO="extended"
    HELP_SHOW="no"
    HELP_EXIT="yes"
    HELP_MACHINES="yes"
    HELP_CPUS="yes"
  ;;
  "--cpus")
    ARG_HIT="yes"
    HELP_DO="extended"
    HELP_SHOW="no"
    HELP_EXIT="yes"
    HELP_CPUS="yes"
  ;;
  "--list-drivers")
    ARG_HIT="yes"
    LIST_ALL_DRIVERS="yes"
    HELP_EXIT="no"
  ;;
  "--list-extras")
    ARG_HIT="yes"
    LIST_XAAES_EXTRAS="yes"
    HELP_EXIT="no"
  ;;
  "--list-networks")
    ARG_HIT="yes"
    LIST_NETWORK_DRIVERS="yes"
    HELP_EXIT="no"
  ;;
  "--list-keyboards")
    ARG_HIT="yes"
    LIST_KEYBOARDS="yes"
    HELP_EXIT="no"
  ;;
  "--list-tools")
    ARG_HIT="yes"
    LIST_TOOLS="yes"
    HELP_EXIT="no"
  ;;
  "--drivers")
    ARG_HIT="yes"
    INSTALL_DRIVERS="yes"
  ;;
  "--extras")
    ARG_HIT="yes"
    INSTALL_EXTRAS="yes"
  ;;
  "--tools")
    ARG_HIT="yes"
    INSTALL_TOOLS="yes"
  ;;
  "--current")
    ARG_HIT="yes"
    HELP_DO="no"
    HELP_EXIT="no"
    AUTO_DETECT="yes"
    FORCE_DETECT="yes"
  ;;
  *)
    TEST_FILE=`echo "$ARG" | grep -Gs "\\."`
  ;;
  esac

 ### is the archive valid (discard if not) ###

  if [ "$TEST_FILE" != "" -a -f "$ARG" ]; then
    ARG_HIT="yes"
    IS_TAR=`echo "$ARG" | grep -Gs ".tar"`
    IS_BZ2=`echo "$ARG" | grep -Gs ".tar.bz2"`
    IS_GZ=`echo "$ARG" | grep -Gs ".tar.gz"`
    IS_ZIP=`echo "$ARG" | grep -Gs ".zip"`
    if [ "$IS_TAR" != "" ]; then EXTRACT_TOOL="tar"; EXTRACT_COMMAND="-xf"; ARCHIVE="$ARG"; fi
    if [ "$IS_BZ2" != "" ]; then EXTRACT_TOOL="tar"; EXTRACT_COMMAND="-jxf"; ARCHIVE="$ARG"; fi
    if [ "$IS_GZ" != "" ]; then EXTRACT_TOOL="tar"; EXTRACT_COMMAND="-zxf"; ARCHIVE="$ARG"; fi
    if [ "$IS_ZIP" != "" ]; then EXTRACT_TOOL="tar"; EXTRACT_COMMAND="-zxf"; ARCHIVE="$ARG"; fi
    if [ "$EXTRACT_COMMAND" = "" ]; then echo "$INVALID_ARCHIVE $ARG"; exit 3; fi
  fi

 ### capture unknown options (discard --something) ###

  if [ "$TEST_FILE" = "" -a "$ARG_HIT" = "no" ]; then
    IS_ILLEGAL=`echo "$ARG" | grep -Gs "\\--"`
    if [ "$IS_ILLEGAL" = "" ]; then
      if [ "$ARGS_UNKNOWN" = "" ]; then
        ARGS_UNKNOWN="$ARG"
      else
        ARGS_UNKNOWN="$ARGS_UNKNOWN $ARG"
      fi
    fi
  fi
done

 ### couple of fixups (can cause problems - you have been warned) ###

if [ "$HELP_EXIT" = "no" -a "$HELP_DO" = "no" ]; then HELP_DO="yes"; fi
if [ "$HELP_EXIT" = "no" -a "$HELP_DO" = "extended" ]; then HELP_DO="yes"; fi
if [ "$ARGS_UNKNOWN" != "" -a "$HELP_DO" = "extended" ]; then HELP_DO="yes"; fi

else




 ### if we are missing GREP or CUT ###

  HELP_DO="extended"
  HELP_REQUIRES="yes"
  HELP_EXIT="yes"

fi




 ### extended help ###

if [ "$HELP_DO" = "extended" ]; then
  echo ": extended help"
  if [ "$HELP_SHOW" = "yes" ]; then
    echo
    echo "usage: $THIS_SCRIPT --help _freemint_.tar.bz2 [--list-drivers] [--list-extras] [--list-networks] [--list-keyboards]"
    echo "       $THIS_SCRIPT [--help] [--presets|--systems|--machines|--cpus|--info]"
    echo "       $THIS_SCRIPT --help _system_type_ [--drivers]"
    echo "       $THIS_SCRIPT --help [[_machine_]_cpu_] [--drivers]"
    echo
    echo " show:"
    echo "  --presets   : list of presets for _system_type_ (_machine_+_cpu_)"
    echo "  --systems   : list all valid _system_type_ (_machine_+_cpu_)"
    echo "  --machines  : list all valid _machine_ (+_cpu_)"
    echo "  --cpus      : list all valid _cpu_"
    echo "  --info      : show other information about this script and FreeMiNT"
    echo
    echo " with a valid _system_type_:"
    echo "  --drivers   : include drivers in dry run for specific _system_type_ (_machine_+_cpu_)"
    echo "  --extras    : include extras in dry run for specific _system_type_ (_machine_+_cpu_)"
    echo
    echo " with a valid archive:"
    echo "  --list-drivers   : list drivers packaged with FreeMiNT"
    echo "  --list-extras    : list all extras that come with XaAES"
    echo "  --list-networks  : list all network drivers (for network cards)"
    echo "  --list-keyboards : list all keyboard table (none: english)"
    echo
    echo "examples: $THIS_SCRIPT --help --cpus"
    echo "          $THIS_SCRIPT --help --presets"
    echo "          $THIS_SCRIPT --help aranym --drivers"
    echo "          $THIS_SCRIPT --help trunk-30072011.tar.bz2 --drivers"
  fi
  if [ "$HELP_INFO" = "yes" ]; then
    echo
    echo " Use this script to extract the MINT.PRG and XAAES.KM for upgrading of"
    echo " a specific platform. For a complete installtion use:"
    echo "   $THIS_SCRIPT _freemint_.bz2 [_system_type_] --drivers --extras"
    echo
    echo " This script can be safely renamed. If you supply only an archive, this"
    echo " script will auto-detect or use the default settings (default: $DEF_MCH$DEF_CPU)."
    echo " To set defaults for your system, edit near the top of this script. You"
    echo " can force auto-detection with --current. As long as USE_DEFAULTS is set"
    echo " to \"yes\", auto-detect will use default settings on non-MiNT platforms."
    echo
    echo " For daily builds of FreeMiNT archives see: http://freemint.org/"
    echo " An archive package with all required binaries is available from:"
    echo "   http://paulwratt.000space.com/pauls/atarist/scripts.php"
    echo
    echo " Ideas for this script came from an original script by Peter Slegg."
    echo " This script was created by Paul Wratt in 2011-08-02."
    echo "   current version: $SCRIPT_VERSION"
    echo "   last edited on: $SCRIPT_LAST_EDIT"
    echo "   edit done by: $SCRIPT_EDITOR"
  fi
  if [ "$HELP_REQUIRES" = "yes" ]; then
    if [ "$MISSING" = "" ]; then
      MISSING="is missing"
      REQUIREMENTS="requirements:"
    fi
    IS_MISSING=""
    echo -e "$REQUIREMENTS"
    echo
    if [ -f /bin/ls ]; then
      ls --version
    else
      IS_MISSING="$IS_MISSING ls"
    fi
    echo
    if [ -f /bin/mv ]; then
      mv --version
    else
      IS_MISSING="$IS_MISSING cp"
    fi
    echo
    if [ -f /bin/mv ]; then
      mv --version
    else
      IS_MISSING="$IS_MISSING mv"
    fi
    echo
    if [ -f /bin/mv ]; then
      mv --version
    else
      IS_MISSING="$IS_MISSING rm"
    fi
    echo
    if [ -f /bin/cat ]; then
      cat --version
    else
      IS_MISSING="$IS_MISSING cat"
    fi
    echo
    if [ -f /bin/cut ]; then
      cut --version
    else
      IS_MISSING="$IS_MISSING cut"
    fi
    echo
    if [ -f /bin/pwd ]; then
      pwd --version
    else
      IS_MISSING="$IS_MISSING pwd"
    fi
    echo
    if [ -f /bin/tar ]; then
      tar --version
    else
      IS_MISSING="$IS_MISSING tar"
    fi
    echo
    if [ -f /bin/date ]; then
      date --version
    else
      IS_MISSING="$IS_MISSING date"
    fi
    echo
    if [ -f /bin/grep ]; then
      grep --version
    else
      IS_MISSING="$IS_MISSING grep"
    fi
    echo
    if [ -f /bin/mkdir ]; then
      mkdir --version
    else
      IS_MISSING="$IS_MISSING mkdir"
    fi
    echo
    if [ -f /bin/uname ]; then
      uname --version
    else
      IS_MISSING="$IS_MISSING uname"
    fi
    echo
    if [ -f /bin/basename ]; then
      basename --version
    else
      IS_MISSING="$IS_MISSING basename"
    fi
    echo
    if [ "$IS_MISSING" != "" ]; then echo ".. $MISSING:$IS_MISSING"; echo; fi
    echo "The required binaries are part of the 'coreutils' package (except for 'grep')."
    echo "A small archive package with these required MiNT binaries is available from:"
    echo "         http://paulwratt.000space.com/pauls/atarist/scripts.php"
  fi
  if [ "$HELP_SYSTEMS" = "yes" ]; then
    echo
    echo "_system_type_:"
    if [ "$LS_TYPES" = "yes" ]; then
      ls --color=always /tmp/.mint-upgrade/systems
    else
      echo "$SYS_TYPES"
    fi
    echo " usage: $THIS_SCRIPT _freemint_.tar.bz2 _system_type_"
    echo " example: $THIS_SCRIPT freemint-1_17-30072011.tar.bz2 tt030"
  fi
  if [ "$HELP_MACHINES" = "yes" ]; then
    echo
    echo "_machine_:"
    if [ "$LS_TYPES" = "yes" ]; then
      ls --color=always /tmp/.mint-upgrade/machines
    else
      echo "$MCH_TYPES"
    fi
    echo " usage: $THIS_SCRIPT _freemint_.tar.bz2 _machine_+_cpu_"
    echo " example: $THIS_SCRIPT helmut-29072011.tar.bz2 mil040"
  fi
  if [ "$HELP_CPUS" = "yes" ]; then
    echo
    echo "_cpu_:"
    if [ "$LS_TYPES" = "yes" ]; then
      ls --color=always /tmp/.mint-upgrade/cpus
    else
      echo "$CPU_TYPES"
    fi
    echo " usage: $THIS_SCRIPT _freemint_.tar.bz2 _cpu_"
    echo " example: $THIS_SCRIPT trunk-28072011.tar.bz2 060"
  fi
  if [ "$HELP_PRESETS" = "yes" ]; then
    echo
    echo "presets: _system_type_"
    echo "usage: $THIS_SCRIPT _freemint_.tar.bz2 _preset_"
    echo
    echo "    preset   | _system_type_ | _machine_ | _cpu_ "
    echo "   ==========|===============|===========|======="
    echo "    aranym   | ara040        | ara       | 040"
    echo "    falcon   | fal030        | fal       | 030"
    echo "    ct6x     | fal060        | fal       | 060"
    echo "    medusa   | med040        | med       | 040"
    echo "    t40      | med040        | med       | 040"
    echo "    milan    | mil060        | mil       | 060"
    echo "    hades    | had060        | had       | 060"
    echo "    firetos  | fb060         | fb        | 060"
    echo "    firebee  | fbv4e         | fb        | v4e"
    echo "    coldfire |               |           | v4e"
    echo
    echo "note: regular _system_type_ values are just valid combinations"
    echo "      of _machine_ and _cpu_ (see: $THIS_SCRIPT --help --systems)."
    echo "      Combinations are validated, and confirmed if detected"
    echo
    echo "examples:"
    echo " for upgrading mint.prg & xaaes.km:"
    echo "         $THIS_SCRIPT trunk-28072011.tar.bz2 aranym"
    echo " for complete install mint & xaaes:"
    echo "         $THIS_SCRIPT helmut-29072011.tar.bz2 firetos --drivers --extras"
  fi
  exit 1
fi




 ### need to  check  for  MiNT and ###
 ### then find valid _system_type_ ###

if [ -d /kern ]; then
  IS_MINT="yes"
else
  IS_MINT="no"
fi




 ### convert only known option (discard rest) ###

if [ "$ARGS_UNKNOWN" != "" ]; then
  for ARG in $ARGS_UNKNOWN; do
    SYS_TYPE=`echo "$SPC_TYPES $SYS_TYPES $CPU_TYPES" | grep -Gs "$ARG"`
    if [ "$SYS_TYPE" != "" ]; then
      TYPE_FOUND="yes"
      if [ "$ARGS_KNOWN" = "" ]; then
        ARGS_KNOWN="$ARG"
      else
        ARGS_KNOWN="$ARGS_KNOWN $ARG"
      fi
    fi
    SYS_TYPE=""
  done
fi




 ### catch any presets ###

if [ "$TYPE_FOUND" = "yes" ]; then
  AUTO_DETECT="no"
  for ARG in $ARGS_KNOWN; do
    IS_SPECIAL=`echo "fb $SPC_TYPES mste mega" | grep -Gs "$ARG"`
    if [ "$IS_SPECIAL" != "" ]; then SYS_TYPE="$ARG"; break; fi
  done;
  if [ "$IS_SPECIAL" != "" ]; then
    case "$SYS_TYPE" in
    "fb")
      MCH_TYPE="fb"
      CPU_TYPE="060"
    ;;
    "ara")
      MCH_TYPE="ara"
      CPU_TYPE="040"
    ;;
    "aranym")
      MCH_TYPE="ara"
      CPU_TYPE="040"
    ;;
    "coldfire")
      MCH_TYPE="v4e"
      CPU_TYPE="v4e"
    ;;
    "falcon")
      MCH_TYPE="fal"
      CPU_TYPE="030"
    ;;
    "ct6x")
      MCH_TYPE="fal"
      CPU_TYPE="060"
    ;;
    "firetos")
      MCH_TYPE="fb"
      CPU_TYPE="060"
    ;;
    "firebee")
      MCH_TYPE="fb"
      CPU_TYPE="v4e"
    ;;
    "medusa")
      MCH_TYPE="med"
      CPU_TYPE="040"
    ;;
    "t40")
      MCH_TYPE="med"
      CPU_TYPE="040"
    ;;
    "hades")
      MCH_TYPE="had"
      CPU_TYPE="060"
    ;;
    "milan")
      MCH_TYPE="mil"
      CPU_TYPE="060"
    ;;
    "st")
      MCH_TYPE="st"
      CPU_TYPE="000"
    ;;
    "ste")
      MCH_TYPE="ste"
      CPU_TYPE="000"
    ;;
    "mega")
      MCH_TYPE="mega"
      CPU_TYPE="000"
    ;;
    "mste")
      MCH_TYPE="mste"
      CPU_TYPE="000"
    ;;
    esac
    AUTO_DETECT="no"
    USE_DEFAULTS="no"
  fi
fi




 ### auto detect ###

CPU=`grep -s CPU /kern/cpuinfo | cut -d: -f2`
_CPU=`grep -s _CPU /kern/cookiejar | cut -d: -f3`
_MCH=`grep -s _MCH /kern/cookiejar | cut -d: -f3`
HADES=`grep -s hade /kern/cookiejar | cut -d: -f3`
MILAN=`grep -s _MIL /kern/cookiejar | cut -d: -f3`
CT6x=`grep -s CT60 /kern/cookiejar | cut -d: -f3`
COLDFIRE=`grep -s _CF_ /kern/cookiejar | cut -d: -f3`

if [ "$FORCE_DETECT" = "yes" -o "$AUTO_DETECT" = "yes" -a "$USE_DEFAULTS" = "no" -a "$TYPE_FOUND" = "no" ]; then
  echo -en "\n\n$AUTO_DETECTION"
  if [ "$IS_MINT" = "yes" ]; then
    if [ ! -z "$COLDFIRE" ]; then CPU_TYPE="v4e"; fi
    case "$CPU" in
      "68000")
        CPU_TYPE="000"
    ;;
      "68020")
        CPU_TYPE="020"
    ;;
      "68030")
        CPU_TYPE="030"
    ;;
      "68040")
        CPU_TYPE="040"
    ;;
      "68060")
        CPU_TYPE="060"
    ;;
      "v4e")
        CPU_TYPE="v4e"
    ;;
    esac
    case "$_MCH" in
      "0x00000000")
        MCH_TYPE="mega"
    ;;
      "0x00010000")
        MCH_TYPE="ste"
    ;;
      "0x00010001")
        MCH_TYPE="stb"
    ;;
      "0x00010010")
        MCH_TYPE="mste"
    ;;
      "0x00020000")
        MCH_TYPE="tt"
    ;;
      "0x00030000")
        MCH_TYPE="fal"
    ;;
      "0x00040000")
        MCH_TYPE="mil"
    ;;
      "0x00050000")
        MCH_TYPE="ara"
    ;;
      "0x00014D34")
        MCH_TYPE="med"
    ;;
      "0x00024D34")
        MCH_TYPE="med"
    ;;
    esac
    if [ ! -z "$HADES" ]; then MCH_TYPE="had"; fi
    if [ ! -z "$COLDFIRE" -a "$MCH_TYPE" = "fal" ]; then MCH_TYPE="fb"; fi
    SYS_TYPE=$MCH_TYPE$CPU_TYPE
    if [ "$DEF_DRIVERS" = "yes" ]; then INSTALL_DRIVERS="yes"; fi
    if [ "$DEF_EXTRAS" = "yes" ]; then INSTALL_EXTRAS="yes"; fi
  else
    echo -en " $MINT_ERR"
    AUTO_DETECT="no"
  fi
else
  AUTO_DETECT="no"
fi




 ### use defaults ###

if [ "$AUTO_DETECT" = "no" -a "$USE_DEFAULTS" = "yes" -a "$TYPE_FOUND" = "no" ]; then
  echo -en "\n\n$USING_DEFAULTS"
  MCH_TYPE=$DEF_MCH
  CPU_TYPE=$DEF_CPU
  SYS_TYPE=$MCH_TYPE$CPU_TYPE
  if [ "$DEF_DRIVERS" = "yes" ]; then INSTALL_DRIVERS="yes"; fi
  if [ "$DEF_EXTRAS" = "yes" ]; then INSTALL_EXTRAS="yes"; fi
  echo -n $SYS_TYPE
fi




 ### catch any misses ###

if [ "$CPU_TYPE" = "" -a "$MCH_TYPE" = "" -a "$ARGS_KNOWN" != "" -a "$TYPE_FOUND" = "yes" ]; then
  for ARG in $ARGS_KNOWN; do
    SYS_TYPE=`echo "$SYS_TYPES" | grep -Gs "$ARG"`
    if [ "$SYS_TYPE" != "" ]; then SYS_TYPE="$ARG"; break; fi
  done;
  if [ "$SYS_TYPE" = "" ]; then
    for ARG in $ARGS_KNOWN; do
      MCH_TYPE=`echo "$MCH_TYPES" | grep -Gs "$ARG"`
      if [ "$MCH_TYPE" != "" ]; then MCH_TYPE="$ARG"; break; fi
    done;
    for ARG in $ARGS_KNOWN; do
      CPU_TYPE=`echo "$CPU_TYPES" | grep -Gs "$ARG"`
      if [ "$CPU_TYPE" != "" ]; then CPU_TYPE="$ARG"; break; fi
    done;
    SYS_TYPE=$MCH_TYPE$CPU_TYPE
  else
    for xCPU in $CPU_TYPES ]; do
      CPU_TYPE=`echo -e "$SYS_TYPE" | grep -Gs "$xCPU"`
      if [ "$CPU_TYPE" != "" ]; then CPU_TYPE="$xCPU"; CPU="68$xCPU"; break; fi
    done;
    if [ "$CPU" = "68v4e" ]; then CPU="v4e"; fi
    for xMCH in $MCH_TYPES ]; do
      MCH_TYPE=`echo -e "$SYS_TYPE" | grep -Gs "$xMCH"`
      if [ "$MCH_TYPE" != "" ]; then MCH_TYPE="$xMCH"; break; fi
    done;
  fi
fi




 ### regular help ###

if [ "$HELP_DO" != "yes" ]; then
if [ $# -lt 1 -o -z "$SYS_TYPE" ]; then
  echo
  echo
  echo "usage: $THIS_SCRIPT --help"
  echo "       $THIS_SCRIPT _freemint_.tar.bz2 [--current] [--drivers] [--extras]"
  echo "       $THIS_SCRIPT _freemint_.tar.bz2 _system_type_ [--drivers] [--extras]"
  echo "       $THIS_SCRIPT _freemint_.tar.bz2 [[_machine_]_cpu_] [--drivers] [--extras]"
  echo
  echo "  _freemint_   : as available from http://freemint.org/freemint/"
  echo "  --current    : under MiNT, force auto-detect of _machine_ & _cpu_"
  echo "  _system_type_: 020, 030, 040, 060, ara, mil040, mil060, v4e, mega"
  echo "                 had040, had060, ct6x, fal030, fal040, fal060, mste"
  echo "                 fb060, fbv4e"
  echo "  --drivers    : optional, adds device drivers (platform specific)"
  echo "  --extras     : optional, adds XaAES extras (IMG, RSC, GRD, etc)"
  echo "  --help       : show extended help options (not this page)"
  echo
  echo "  for a possible _system_type_ see extended help: ($THIS_SCRIPT --help)"
  echo "    ($THIS_SCRIPT --help --presets) or ($THIS_SCRIPT --help --machines)"
  echo "    ($THIS_SCRIPT --help --systems) or ($THIS_SCRIPT --help --cpus)"
  echo "  automatic    : edit this script to set default _machine_ and _cpu_ ($DEF_MCH$DEF_CPU)"
  echo
  echo "examples:"
  echo "  to upgrade only mint.prg & xaaes.km for Milan 68040:"
  echo "         $THIS_SCRIPT helmut-27072011.tar.bz2 mil040"
  echo "  to upgrade kernels and drivers for FireBee native v4e:"
  echo "         $THIS_SCRIPT trunk-28072011.tar.bz2 fbv4e --drivers"
  echo "  to prepare a complete install for:"
  echo "         $THIS_SCRIPT freemint-1.17.0.tar.bz2 aranym --drivers --extras"
  echo
  exit 1
fi
fi




 ### lets get going.. ###

echo
echo
echo -en "current platform: "
uname
if [ "$IS_MINT" = "yes" ]; then
  echo `grep -s CPU /kern/cpuinfo`
fi
echo -en "$BUILDING"





 ### parse presets first ###

if [ "$IS_SPECIAL" != "" ]; then
 echo -en "\n\t"
case "$SYS_TYPE" in
 "aranym")
   if [ "$_MCH" = "0x00050000" -a "$_CPU" = "0x00000028" ]; then echo -en $CONFIRMED; fi
   echo "Aranym (68040)"
   KERNEL=mintara.prg
   XAAES=xaaes040.km
   XFS="$XFS aranym.xfs hostfs.xfs"
   XDD="$XDD dsp56k.xdd nfstderr.xdd"
   XIF="$XIF nfeth.xif"
   WARN_XDD="skip"
 ;;
 "coldfire")
   if [ "$COLDFIRE" != "" ]; then echo -en $CONFIRMED; fi
   echo "Coldfire v4e"
   KERNEL=mintv4e.prg
   XAAES=xaaesv4e.km
   XIF="dummy.xif"
   XDD="dummy.xdd"
   XFS=""
   echo -e $V4E_DRIVER_NOTICE
   WARN_XDD="skip"
 ;;
 "firebee")
   if [ "$_MCH" = "0x00030000" -a "$COLDFIRE" != "" -a "$_CPU" != "0x0000003C" ]; then echo -en $CONFIRMED; fi
   echo "Firebee native v4e"
   KERNEL=mintv4e.prg
   XAAES=xaaesv4e.km
   XIF="dummy.xif"
   XDD="dummy.xdd"
   XFS=""
   echo -e $V4E_DRIVER_NOTICE
   WARN_XDD="skip"
 ;;
 "firetos")
   if [ "$_MCH" = "0x00030000" -a "$COLDFIRE" != "" -a "$_CPU" = "0x0000003C" ]; then echo -en $CONFIRMED; fi
   echo "Firebee emulating 68060"
   KERNEL=mint060.prg
   XAAES=xaaes060.km
   XDD="$XDD audio.xdd"
   WARN_XDD="skip"
 ;;
 "falcon")
   if [ "$_MCH" = "0x00030000" -a "$_CPU" = "0x0000001E" ]; then echo -en $CONFIRMED; fi
   echo "Falcon 68030"
   KERNEL=mint030.prg
   XAAES=xaaes030.km
   XDD="$XDD audio.xdd dsp56k.xdd flop_raw.xdd"
   WARN_XDD="skip"
 ;;
 "ct6x")
   if [ "$CT6x" != "" -a "$_CPU" = "0x0000003C" ]; then echo -en $CONFIRMED; fi
   echo "CT6x/Falcon $CPU"
   KERNEL=mint060.prg
   XAAES=xaaes060.km
   XDD="$XDD audio.xdd dsp56k.xdd flop_raw.xdd"
   WARN_XDD="skip"
 ;;
 "hades")
   if [ "$_MCH" = "0x00020000" -a "$HADES" != "" -a "$_CPU" = "0x0000003C" ]; then echo -en $CONFIRMED; fi
   echo "Hades 68060"
   KERNEL=mint060.prg
   XAAES=xaaes060.km
   XDD="$XDD audio.xdd dsp56k.xdd flop_raw.xdd"
   WARN_XDD="skip"
 ;;
 "milan")
   if [ "$_MCH" = "0x00040000" -a "$_CPU" = "0x0000003C" ]; then echo -en $CONFIRMED; fi
   echo "Milan 68060"
   KERNEL=mintmil.prg
   XAAES=xaaes060.km
   XDD="$XDD dsp56k.xdd mfp_mil.xdd uart.xdd flop_raw.xdd"
   WARN_XDD="skip"
 ;;
 "medusa")
   if [ "$_MCH" = "0x00024D34" -o "$_MCH" = "0x00014D34" -a "$_CPU" = "0x00000028" ]; then echo -en $CONFIRMED; fi
   echo "Medusa T40 68040"
   KERNEL=mint040.prg
   XAAES=xaaes040.km
   XDD="$XDD audio.xdd scc.xdd flop_raw.xdd"
   WARN_XDD="skip"
 ;;
 "t40")
   if [ "$_MCH" = "0x00024D34" -o "$_MCH" = "0x00014D34" -a "$_CPU" = "0x00000028" ]; then echo -en $CONFIRMED; fi
   echo "Medusa T40 68040"
   KERNEL=mint040.prg
   XAAES=xaaes040.km
   XDD="$XDD audio.xdd scc.xdd flop_raw.xdd"
   WARN_XDD="skip"
 ;;
esac
fi




 ### if no preset  was used ###
 ### do (generic) cpu first ###

if ! [ "$WARN_XDD" = "skip" ]; then
 echo -en "\n\tcpu: "
case "$CPU_TYPE" in
 "000")
#   if [ "$CPU" = "68000" ]; then echo -en $CONFIRMED; fi
   if [ "$_CPU" = "0x00000000" ]; then echo -en $CONFIRMED; fi
   if [ "$_MCH" = "0x00010000" ]; then echo -en "STE $WITH"; fi
   if [ "$_MCH" = "0x00010001" ]; then echo -en "ST Book $WITH"; fi
   if [ "$_MCH" = "0x00010010" ]; then echo -en "Mega STE $WITH"; fi
   echo -n "68000 "
   KERNEL=mint000.prg
   XAAES=xaaes000.km
   MOOSE_W="no"
   WARN_XDD="audio.xdd"
 ;;
 "020")
#   if [ "$CPU" = "68020" ]; then echo -en $CONFIRMED; fi
   if [ "$_CPU" = "0x00000014" ]; then echo -en $CONFIRMED; fi
   if [ "$_MCH" = "0x00010000" ]; then echo -en "STE $WITH"; fi
   if [ "$_MCH" = "0x00010001" ]; then echo -en "ST Book $WITH"; fi
   if [ "$_MCH" = "0x00010010" ]; then echo -en "Mega STE $WITH"; fi
   echo -n "68020 "
   KERNEL=mint020.prg
   XAAES=xaaes020.km
   MOOSE_W="no"
   WARN_XDD="audio.xdd"
 ;;
 "030")
#   if [ "$CPU" = "68030" ]; then echo -en $CONFIRMED; fi
   if [ "$_CPU" = "0x0000001E" ]; then echo -en $CONFIRMED; fi
   if [ "$_MCH" = "0x00020000" ]; then WARN="yes"; echo -en "TT030 $WITH"; fi
   if [ "$_MCH" = "0x00030000" ]; then WARN="yes"; echo -en "Falcon $WITH"; fi
   echo -n "68030 "
   KERNEL=mint030.prg
   XAAES=xaaes030.km
   MOOSE_W="no"
   WARN_XDD="audio.xdd"
 ;;
 "040")
#   if [ "$CPU" = "68040" ]; then echo -en $CONFIRMED; fi
   if [ "$_CPU" = "0x00000028" ]; then echo -en $CONFIRMED; fi
   if [ "$_MCH" = "0x00024D34" -o "$_MCH" = "0x00014D34" ]; then WARN="yes"; echo -en " Medusa T40 $WITH"; fi
   if [ "$_MCH" = "0x00020000" -a "$HADES" = "" ]; then WARN="yes"; echo -en " TT030 $WITH"; fi
   if [ "$_MCH" = "0x00020000" -a "$HADES" != "" ]; then echo -en " Hades $WITH"; fi
   if [ "$_MCH" = "0x00030000" ]; then WARN="yes"; echo -en " Falcon $WITH"; fi
   if [ "$_MCH" = "0x00040000" ]; then KERN_WARN="yes"; KERN_ACT="mintmil.prg"; echo -en "Milan $WITH"; fi
   if [ "$_MCH" = "0x00050000" ]; then KERN_WARN="yes"; KERN_ACT="mintara.prg"; echo -en "ARAnyM $WITH"; fi
   echo -n "68040 "
   KERNEL=mint040.prg
   XAAES=xaaes040.km
   WARN_XDD="audio.xdd"
 ;;
 "060")
#   if [ "$CPU" = "68060" ]; then echo -en $CONFIRMED; fi
   if [ "$_CPU" = "0x0000003C" ]; then echo -en $CONFIRMED; fi
   if [ "$_MCH" = "0x00024D34" -o "$_MCH" = "0x00014D34" ]; then WARN="yes"; echo -en " Medusa T40 $WITH"; fi
   if [ "$_MCH" = "0x00020000" -a "$HADES" = "" ]; then KERN_WARN="yes"; echo -en " TT030 $WITH"; fi
   if [ "$_MCH" = "0x00020000" -a "$HADES" != "" ]; then KERN_WARN="yes"; echo -en " Hades $WITH"; fi
   if [ "$_MCH" = "0x00030000" -a "$COLDFIRE" = "" -a "$CT6x" = "" ]; then WARN="yes"; echo -en "Falcon $WITH"; fi
   if [ "$_MCH" = "0x00030000" -a "$COLDFIRE" = "" -a "$CT6x" != "" ]; then WARN="yes"; echo -en "CT6x/Falcon $WITH"; fi
   if [ "$_MCH" = "0x00030000" -a "$COLDFIRE" != "" -a "$CT6x" = "" ]; then WARN="yes"; echo -en "FireBee emulating "; fi
   if [ "$_MCH" = "0x00040000" ]; then KERN_WARN="yes"; KERN_ACT="mintmil.prg"; echo -en "Milan $WITH"; fi
   echo -n "68060 "
   KERNEL=mint060.prg
   XAAES=xaaes060.km
   WARN_XDD="audio.xdd"
 ;;
 "v4e")
   if [ "$COLDFIRE" != "" ]; then echo -en $CONFIRMED; fi
   echo "ColdFire v4e "
   KERNEL=mintv4e.prg
   XAAES=xaaesv4e.km
   XIF="dummy.xif"
   XDD="dummy.xdd"
   XFS=""
   echo -e $V4E_DRIVER_NOTICE
 ;;
esac



 ### do generic machine second ###

#if [ "$MCH_TYPE" != "" ]; then echo -en "\n\t"; fi
echo -en "\n\tmch: "
case "$MCH_TYPE" in
 "st")
   if [ "$CPU_TYPE" = "v4e" ]; then echo -en "$INVALID_COMBO v4e"; exit 2; fi
   if [ "$_MCH" = "0x00000000" ]; then echo -en $CONFIRMED; fi
   echo "ST ($CPU)"
   MOOSE_W="no"
   WARN_XDD=""; WARN="no"
   XDD="$XDD audio.xdd scc.xdd flop_raw.xdd"
 ;;
 "ste")
   if [ "$CPU_TYPE" = "v4e" ]; then echo -en "$INVALID_COMBO v4e"; exit 2; fi
   if [ "$_MCH" = "0x00010000" ]; then echo -en $CONFIRMED; fi
   echo "STE ($CPU)"
   MOOSE_W="no"
   WARN_XDD=""; WARN="no"
   XDD="$XDD audio.xdd scc.xdd flop_raw.xdd"
 ;;
 "mste")
   if [ "$CPU_TYPE" = "v4e" ]; then echo -en "$INVALID_COMBO v4e"; exit 2; fi
   if [ "$_MCH" = "0x00010010" ]; then echo -en $CONFIRMED; fi
   echo "MegaSTE ($CPU)"
   MOOSE_W="no"
   WARN_XDD=""; WARN="no"
   XDD="$XDD audio.xdd scc.xdd flop_raw.xdd"
 ;;
 "tt")
   if [ "$CPU_TYPE" != "030" -a "$CPU_TYPE" != "040" -a "$CPU_TYPE" != "060" -o "$CPU_TYPE" = "v4e" ]; then echo -en "$INVALID_COMBO_REQUIRES tt030 or tt040 or tt060"; exit 2; fi
   if [ "$_MCH" = "0x00020000" -a "$HADES" = "" ]; then echo -en $CONFIRMED; fi
   echo "TT030 $CPU"
   MOOSE_W="no"
   WARN_XDD=""; WARN="no"
   XDD="$XDD audio.xdd scc.xdd flop_raw.xdd"
 ;;
 "fal")
   if [ "$CPU_TYPE" != "030" -a "$CPU_TYPE" != "040" -a "$CPU_TYPE" != "060" -o "$CPU_TYPE" = "v4e" ]; then echo -en "$INVALID_COMBO_REQUIRES fal030 or fal040 or fal060"; exit 2; fi
   if [ "$_MCH" = "0x00030000" ]; then echo -en $CONFIRMED; fi
   echo "Falcon $CPU"
   MOOSE_W="no"
   WARN_XDD=""; WARN="no"
   XDD="$XDD audio dsp56k.xdd flop_raw.xdd"
 ;;
 "mil")
   if [ "$CPU_TYPE" != "040" -a "$CPU_TYPE" != "060" -o "$CPU_TYPE" = "v4e" ]; then echo -en "$INVALID_COMBO_REQUIRES mil040 or mil060"; exit 2; fi
   if [ "$_MCH" = "0x00040000" ]; then echo -en $CONFIRMED; fi
   echo "Milan $CPU"
   KERNEL=mintmil.prg
   WARN_XDD=""; WARN="no"
   XDD="$XDD dsp56k.xdd mfp_mil.xdd uart.xdd flop_raw.xdd"
 ;;
 "had")
   if [ "$CPU_TYPE" != "040" -a "$CPU_TYPE" != "060" -o "$CPU_TYPE" = "v4e" ]; then echo -en "$INVALID_COMBO_REQUIRES had040 or had060"; exit 2; fi
   if [ "$_MCH" = "0x00020000" -a "$HADES" != "" ]; then echo -en $CONFIRMED; fi
   echo "Hades $CPU"
   KERNEL=mintmil.prg
   XAAES=xaaes040.km
   WARN_XDD=""; WARN="no"
   XDD="$XDD audio.xdd dsp56k.xdd flop_raw.xdd"
 ;;
 "fb")
   if [ "$CPU_TYPE" != "060" -a "$CPU_TYPE" != "v4e" ]; then echo -en "$INVALID_COMBO_REQUIRES fb040 or fbv4e"; exit 2; fi
   if [ "$_MCH" = "0x00030000" -a "$COLDFIRE" != "" -a "$CPU_TYPE" = "060" -a "$_CPU" = "0x0000003C" ]; then echo -en $CONFIRMED; fi
   if [ "$_MCH" = "0x00030000" -a "$COLDFIRE" != "" -a "$CPU_TYPE" = "v4e" -a "$_CPU" = "" ]; then echo -en $CONFIRMED; fi
   if [ "$CPU_TYPE" = "060" ]; then V4E="emulating 68060"; fi
   if [ "$CPU_TYPE" = "v4e" ]; then V4E="native v4e"; fi
   echo FireBee $V4E
   WARN_XDD=""; WARN="no"
   XDD="$XDD audio.xdd"
 ;;
 "ara")
   if [ "$CPU_TYPE" != "040" -o "$CPU_TYPE" = "v4e" ]; then echo -en "$INVALID_COMBO_REQUIRES ara040 or aranym"; exit 2; fi
   if [ "$_MCH" = "0x00050000" -a "$_CPU" = "0x00000028" ]; then echo -en $CONFIRMED; fi
   echo "Aranym (68040)"
   KERNEL=mintara.prg
   XFS="$XFS aranym.xfs hostfs.xfs"
   XDD="$XDD dsp56k.xdd nfstderr.xdd"
   XIF="$XIF nfeth.xif"
   WARN_XDD=""; WARN="no"
 ;;
 *)
   if [ "$CPU_TYPE" != "v4e" ]; then
     echo "(generic) ($CPU)"
     MOOSE_W="no"
     WARN_XDD="$WARN_XDD flop_raw.xdd"
   fi
 ;;
esac
 ### presets skip ends here ###
fi



 ### start doing actual file stuff here ###

if [ "$FILE_BUILD" = "move" ]; then
  DO_FILE="mv"
  DO_FOLDER="mv"
  EXECUTION=".. moving:"
else
  DO_FILE="cp"
  DO_FOLDER="cp -r"
  EXECUTION=".. copying:"
fi
if [ "$BE_VERBOSE" = "yes" ]; then
  DO_FILE="$DO_FILE -v"
  DO_FOLDER="$DO_FOLDER -v"
fi

SRC_DIR=`pwd`
if [ -f "$SRC_DIR/$ARCHIVE" -a -f "$ARCHIVE" ]; then
  SRC_ARC="$SRC_DIR/$ARCHIVE"
else
  SRC_ARC="$ARCHIVE"
fi
if [ "$INSTALL_DRIVERS" = "yes" -a "$INSTALL_EXTRAS" = "yes" ]; then
  BUILD_DIR=$INSTALL_DIR
fi
WORKING_PATH=$WORKING_DIR
if [ "$WORKING_DIR" = "." ]; then WORKING_PATH=$SRC_DIR; fi

DISTRO="no-archive"
if [ -f "$SRC_ARC" ]; then
  REUSE="no"
  if [ -f "$WORKING_PATH/$EXTRACT_DIR/archive.txt" ]; then
    OLD_ARC=`cat $WORKING_PATH/$EXTRACT_DIR/archive.txt`
    if [ "$OLD_ARC" = "$ARCHIVE" ]; then REUSE="yes"; fi
    if [ -f $WORKING_PATH/$EXTRACT_DIR/moved.txt ]; then
      rm -f $WORKING_PATH/$EXTRACT_DIR/moved.txt
      REUSE="no"
    fi
  fi
  if [ "$REUSE" = "no" ]; then
    mkdir -p "$WORKING_PATH/$EXTRACT_DIR"
    cd "$WORKING_PATH/$EXTRACT_DIR"
    echo -e "$ARCHIVE" > archive.txt
    echo -e "$EXTRACTING $ARCHIVE"
    if [ "$EXTRACT_TOOL" = "tar" ]; then
      $EXTRACT_TOOL $TAR_OPTIONS $EXTRACT_COMMAND $SRC_ARC
    else
      $EXTRACT_TOOL $EXTRACT_COMMAND $SRC_ARC
    fi
    echo
  else
    cd "$WORKING_PATH/$EXTRACT_DIR"
    echo -e "$REUSING\n\t$ARCHIVE"
  fi
  if [ ! -d mint ]; then echo ".. archive:\n\tno \"mint\" folder: quit"; exit 4; fi
  cd mint
  for xDISTRO in *; do
    if [ "$xDISTRO" != "." -a "$xDISTRO" != ".." -a -d "$xDISTRO" ]; then
      DISTRO=$xDISTRO
      break
    fi
  done
  cd "$WORKING_PATH"
else
  echo -e ".. $DISTRO:\n\t$NO_ARCHIVE"
  HELP_DO="yes"
fi




 ### only display what would be copied ###

if [ "$HELP_DO" = "yes" ]; then
  echo -e "$DRY_RUN"
  echo
  echo "Kernels: $DISTRO"
  echo -en "FreeMiNT: "
  echo $WORKING_DIR/$EXTRACT_DIR/auto/$KERNEL
  echo -en "XaAES: "
  echo $WORKING_DIR/$EXTRACT_DIR/mint/$DISTRO/xaaes/$XAAES

  if [ "$MOOSE_W" = "yes" ]; then
    echo "mouse wheel driver: $WORKING_DIR/$EXTRACT_DIR/mint/$DISTRO/xaaes/moose_w.adi"
  fi

  if [ "$INSTALL_EXTRAS" = "yes" ]; then
    echo "color gradients folder: $WORKING_DIR/$EXTRACT_DIR/mint/$DISTRO/xaaes/gradient"
    echo "image texture folder: $WORKING_DIR/$EXTRACT_DIR/mint/$DISTRO/xaaes/img"
    echo "window widgets folder: $WORKING_DIR/$EXTRACT_DIR/mint/$DISTRO/xaaes/widgets"
    echo "checkbox widgets folder: $WORKING_DIR/$EXTRACT_DIR/mint/$DISTRO/xaaes/xobj"
    echo "dialog resource files: $WORKING_DIR/$EXTRACT_DIR/mint/$DISTRO/xaaes/xaaes*.rsc"
    echo "kernel module loader: $WORKING_DIR/$EXTRACT_DIR/mint/$DISTRO/xaaes/xaloader.prg"
    echo "other resource files: $WORKING_DIR/$EXTRACT_DIR/mint/$DISTRO/xaaes/xa_*.*"
  fi

  if [ "$INSTALL_DRIVERS" = "yes" ]; then
    if [ "$KERN_WARN" = "yes" -o "$WARN" = "yes" ]; then
      echo $DRIVER_NOTICE
    fi
    if [ "$KERN_WARN" = "no" -a "$WARN" = "yes" ]; then
      XDD="$XDD $WARN_XDD"
    fi

    DRIVERS="filesystems: $XFS\nfrom: $WORKING_DIR/$EXTRACT_DIR/drivers/xf\ndevices: $XDD\nfrom: $WORKING_DIR/$EXTRACT_DIR/drivers/xdd\nnetwork interfaces: $XIF\nfrom:$WORKING_DIR/$EXTRACT_DIR/drivers/xif"
    if ! [ -z "$NETWORK" ]; then
      DRIVERS="$DRIVERS\n network connection requires: $NETWORK"
    fi
  fi

 if [ -d "$WORKING_PATH/$EXTRACT_DIR/mint" ]; then
  if [ "$LIST_ALL_DRIVERS" = "yes" ]; then
    echo "All Drivers (interfaces):"
    ls --color=always $WORKING_DIR/$EXTRACT_DIR/driver/*
  fi

  if [ "$LIST_XAAES_EXTRAS" = "yes" ]; then
    echo "XaAES Extras (IMG,RSC,GRD):"
    echo
    echo "image textures:"
    ls --color=always $WORKING_DIR/$EXTRACT_DIR/mint/$DISTRO/xaaes/img
    echo "gradients:"
    ls --color=always $WORKING_DIR/$EXTRACT_DIR/mint/$DISTRO/xaaes/gradient
    echo "window widgets:"
    ls --color=always $WORKING_DIR/$EXTRACT_DIR/mint/$DISTRO/xaaes/widgets
    echo "checkbox widgets:"
    ls --color=always $WORKING_DIR/$EXTRACT_DIR/mint/$DISTRO/xaaes/xobj
    echo "resources:"
    ls --color=always $WORKING_DIR/$EXTRACT_DIR/mint/$DISTRO/xaaes/*.rs?
    ls --color=always $WORKING_DIR/$EXTRACT_DIR/mint/$DISTRO/xaaes/*.txt
  fi

  if [ "$LIST_NETWORK_DRIVERS" = "yes" ]; then
    echo "Network Drivers (interfaces):"
    ls --color=always $WORKING_DIR/$EXTRACT_DIR/driver/xif
  fi

  if [ "$LIST_KEYBOARDS" = "yes" ]; then
    echo "Keyboard Tables (layouts):"
    ls --color=always $WORKING_DIR/$EXTRACT_DIR/keyboard
  fi

  if [ "$LIST_TOOLS" = "yes" ]; then
    echo "Package Tools (filesystem creation, gateway, etc):"
    ls --color=always $WORKING_DIR/$EXTRACT_DIR/tools
  fi
 fi
  if [ "$INSTALL_DRIVERS" = "yes" ]; then
    echo
    echo -e $DRIVERS
  fi
  echo
  echo "output:"
  echo "  mint.prg and dirvers: $WORKING_DIR/$BUILD_DIR"
  echo "  XaAES: $WORKING_DIR/$BUILD_DIR/xaaes"
  echo
else




 ### do actual file copy ###

echo -e "$EXECUTION"
cd "$WORKING_PATH"
mkdir -p "$BUILD_DIR/xaaes"
echo -e "archive: $ARCHIVE\n"installed: $DAT $TIM"" > "$BUILD_DIR/archive.txt"

cd "$WORKING_PATH"
$DO_FILE "$EXTRACT_DIR/auto/$KERNEL" "$BUILD_DIR"
$DO_FILE "$EXTRACT_DIR/mint/$DISTRO/xaaes/$XAAES"  "$BUILD_DIR/xaaes/"

if [ "$DEF_KERNELS_ONLY" = "no" ]; then
  if [ "$MOOSE_W" = "yes" ]; then
    $DO_FILE $EXTRACT_DIR/mint/$DISTRO/xaaes/moose_w.adi "$BUILD_DIR/xaaes/"
  fi

  if [ "$INSTALL_EXTRAS" = "yes" ]; then
    $DO_FOLDER $EXTRACT_DIR/mint/$DISTRO/xaaes/img          "$BUILD_DIR/xaaes/"
    $DO_FOLDER $EXTRACT_DIR/mint/$DISTRO/xaaes/widgets      "$BUILD_DIR/xaaes/"
    $DO_FOLDER $EXTRACT_DIR/mint/$DISTRO/xaaes/xobj         "$BUILD_DIR/xaaes/"
    $DO_FILE $EXTRACT_DIR/mint/$DISTRO/xaaes/xaloader.prg "$BUILD_DIR/xaaes/"
    $DO_FILE $EXTRACT_DIR/mint/$DISTRO/xaaes/xa_*.*       "$BUILD_DIR/xaaes/"
    $DO_FILE $EXTRACT_DIR/mint/$DISTRO/xaaes/xaaes*.rsc   "$BUILD_DIR/xaaes/"
    $DO_FOLDER $EXTRACT_DIR/mint/$DISTRO/xaaes/gradient     "$BUILD_DIR/xaaes/"
  fi

  if [ "$INSTALL_DRIVERS" = "yes" ]; then
    if [ "$KERN_WARN" = "yes" -o "$WARN" = "yes" ]; then
      echo -en "$DRIVER_NOTICE"
    fi
    if [ "$KERN_WARN" = "no" -a "$WARN" = "yes" ]; then
      XDD="$XDD $WARN_XDD"
    fi
    DRIVERS="filesystems: $XFS \ndevices: $XDD \nnetwork interfaces: $XIF "
    if ! [ -z "$NETWORK" ]; then
      DRIVERS="$DRIVERS\n\t$NETWORKING"
    fi

    cd "$WORKING_PATH"
    for DRIVER in $XFS; do
      $DO_FILE $EXTRACT_DIR/driver/xfs/$DRIVER $BUILD_DIR/
    done
    for DRIVER in $XDD; do
      $DO_FILE $EXTRACT_DIR/driver/xdd/$DRIVER $BUILD_DIR/
    done
    for DRIVER in $XIF; do
      $DO_FILE $EXTRACT_DIR/driver/xif/$DRIVER $BUILD_DIR/
    done

    echo
    echo -e "$INSTALLED:\n$DRIVERS"
  fi
fi
if [ "$FILE_BUILD" = "move" ]; then
  echo moved > $WORKING_PATH/$EXTRACT_DIR/moved.txt
  echo "$EXTRACT_DIR should be removed"
fi
cd $WORKING_PATH
echo
echo -e ".. done:\n\t$WORKING_DIR/$BUILD_DIR"
fi

exit 0