File: configure

package info (click to toggle)
brickos 0.9.0.dfsg-8
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 1,756 kB
  • ctags: 1,826
  • sloc: ansic: 9,144; cpp: 860; asm: 693; makefile: 648; sh: 124; perl: 61
file content (186 lines) | stat: -rwxr-xr-x 4,417 bytes parent folder | download | duplicates (5)
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