#!/bin/sh -p
# $Id: configure,v 1.10 2004/01/25 05:25:45 stephmo Exp $
#
# Generator for brickOS host-OS-dependend Makefile variables
#
# 15.10.02	-	Version 1.0		M. Obenland
#						obenland@t-online.de
#
# 21.10.02	-	Version 1.0	Updates	  S. Moraco
#						stephen@debian.org
#
# 31.10.02  -  Version 1.0a Changed name separation routine
#                           to use dirname / basename to handle
#                           'gcc' in pathname    M. Obenland
#                           obenland@t-online.de
#
# 01.06.03  -  Version 1.10 Changed array of search paths to a list
#                           for compatibility with POSIX /bin/sh
#                           F. Gifford fgiff@users.sourceforge.net
#

echo ""
echo "Welcome to the brickOS Makefile configurator."
echo "Attempting to find the Hitachi gcc compiler. (This may take some time.)"
echo ""

#
#  check for known files in known locations, first,
#    so can avoid expensive search
#
#   known PATHs in which h8*gcc may be found
TOOL_PATH="/usr/local/bin
           /usr/bin
           /usr/h8300-hitachi-hms/bin
           /usr/local/crossgcc/h8300-hitachi-hms/bin"

#   known PREFIXs of h8*gcc
TOOL_PREFIX="h8300-hms-
             h8300hms-
             h8300-hitachi-hms-"

HMSFULL=""
#  for each path, do...
for TOOL_PATH_CANDIDATE in $TOOL_PATH
do
  #  for each basename prefix. do...
  for TOOL_PREFIX_CANDIDATE in $TOOL_PREFIX
  do
    GCCBASE="$TOOL_PATH_CANDIDATE/${TOOL_PREFIX_CANDIDATE}gcc"
    #echo "(DBG)Testing GCCBASE=[$GCCBASE]"
    #  for each suffix (.exe and empty str), do...
    for EXT in ".exe" ""
    do
      GCCFSPEC="${GCCBASE}$EXT"
      if test -f "$GCCFSPEC"
      then
        HMSFULL="$GCCFSPEC"
        break  #  have answer, exit inner loop
      fi
    done
    if test -n "$HMSFULL"
    then
      break  #  have answer, exit middle
    fi
  done
  if test -n "$HMSFULL"
  then
    break  #  have answer, exit outer loop
  fi
done

#
#  if didn't find in expected location...
#   search filesystem for full name of hitachi gcc compiler and path
#
if test -z "$HMSFULL"
then
  HMSFULL=`find / -type f \( -name 'h8*gcc' -o -name 'h8*gcc.exe' \) -print`
fi

#
# if no compiler is found, exit
#
if test -z "$HMSFULL"
then
   echo "No hitachi gcc compiler found, please install compiler and try again."
   exit 1
fi

#
# Toolprefix is full path and compiler name without 'gcc'
#
DIRNAME=`dirname $HMSFULL`
BASENAME=`basename $HMSFULL`

TOOLPREFIX=$DIRNAME/$(echo $BASENAME | sed "s/gcc.*//")

echo " - Toolprefix = "$TOOLPREFIX

#
#  look for .exe in the compiler name. This indicates Windows environment
#   which means that CYGWIN or DJGPP toolset is being used
#
case "$HMSFULL" in
*.exe)
	   echo " - Found Cygwin/DJGPP system"
	   SED_SFLAG=1
	   EXT=.exe
	   CC=gcc
	   CFLAGS=-D_WIN32
	   CFLG_PE='+'
	   ;;

*)
	   echo " - Found Linux/Unix system"
	   SED_SFLAG=""
	   EXT=""
	   CC=cc
	   CFLAGS="-O2 -Wall"
	   CFLG_PE=""
	   ;;
esac
echo ""

MAKEDEPEND="\$(CC) -M"
BRICKOS_ROOT=`pwd`

CURR_MAKEFILE=Makefile.common
NEW_MAKEFILE=${CURR_MAKEFILE}.new
PRIOR_MAKEFILE=${CURR_MAKEFILE}.bak

cat $CURR_MAKEFILE | awk -v sedFlag=$SED_FLAG \
                          -v ext=$EXT \
						  -v cc=$CC \
						  -v cflags="$CFLAGS" \
						  -v toolPrefix="$TOOLPREFIX" \
						  -v mkdep="$MAKEDEPEND" \
						  -v brickosRoot=$BRICKOS_ROOT \
						  -v cflgPleq=$CFLG_PE \
						  '
						  BEGIN {
						    inInsert=0
							sep="# -------------------------------------------------------"
						  }
						  ($2 == "END-configuration") {
						    inInsert=0
							print sep
							print "TOOLPREFIX=" toolPrefix
							print "SED_SFLAG=" sedFlag
							print "EXT=" ext
							print "CC=" cc
							print "CFLAGS" cflgPleq "=" cflags
							print "MAKEDEPEND=" mkdep
							print "BRICKOS_ROOT=" brickosRoot
							print sep
						  }
						  (inInsert) {
						  	next
						  }
						  ($2 == "BEGIN-configuration") {
						    inInsert=1
						  }
						  {
						  	print $0
						  }
						  END {
						  }' >$NEW_MAKEFILE

cmp -s $CURR_MAKEFILE $NEW_MAKEFILE
RET_CODE=$?
if test $RET_CODE -eq 1
then
	rm -f $PRIOR_MAKEFILE
	mv $CURR_MAKEFILE $PRIOR_MAKEFILE
	mv $NEW_MAKEFILE $CURR_MAKEFILE
else
	rm -f $NEW_MAKEFILE
	echo "configure: no configuration changes needed, nothing done."
	echo ""
fi

touch .configured.flg	#  tell Make system we are now configured

exit 0

