1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
|
#!/bin/sh
# $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-
h8300-hitachi-coff-"
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
|