]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - buildsunos
Import IP-Filter 5.1.2 into vendor branches using the existing license that
[FreeBSD/FreeBSD.git] / buildsunos
1 #! /bin/sh
2 if [ ! -f netinet/done ] ; then
3         echo "Do NOT run this script directly, do 'make solaris'!"
4         exit 1
5 fi
6 # $Id$
7 :
8 rev=`uname -r | sed -e 's/^\([^\.]*\)\..*/\1/'`
9 if [ -d /usr/ccs/bin ] ; then
10         PATH=/usr/ccs/bin:${PATH}
11         export PATH
12 fi
13
14 testcc()
15 {
16         if echo '' | $1 -E - >/dev/null 2>&1 ; then
17                 CC=$1
18                 return 0
19         fi
20         return 1
21 }
22
23 if [ -f /usr/include/sys/neti.h ] ; then
24         INST='-DINSTANCES=1'
25 fi
26
27 if [ $rev = 5 ] ; then
28         if [ ! -f /usr/include/sys/neti.h -a ! -d ../pfil ] ; then
29                 cat << __EOF__
30 pfil directory in .. missing, please download pfil package and extract that
31 into the parent directory.
32
33 See INSTALL.Sol2 for more instructions.
34 __EOF__
35                 exit 1
36         fi
37         #
38         # /usr/ucb/cc will not work
39         #
40         PATH=`echo $PATH | sed -e s:/usr/ucb::g -e s/::/:/g`
41         export PATH
42
43         cpu=`uname -p`
44         cpudir=${cpu}-`uname -r`
45         solrev=`uname -r | sh -c 'IFS=. read j n x; echo $n'`
46         if [ ! -d SunOS5/${cpudir} -a ! -h  SunOS5/${cpudir} ] ; then
47                 mkdir -p SunOS5/${cpudir}
48         fi
49         /bin/rm -f SunOS5/${cpudir}/Makefile
50         /bin/rm -f SunOS5/${cpudir}/Makefile.ipsend
51         ln -s `pwd`/SunOS5/Makefile SunOS5/${cpudir}/Makefile
52         ln -s `pwd`/SunOS5/Makefile.ipsend SunOS5/${cpudir}/Makefile.ipsend
53
54         #
55         # Default C compiler is "cc", override on make commandline
56         #
57         if [ "x$CC" = "x" ] ; then
58                 testcc cc
59                 if [ $? -ne 0 ] ; then
60                         testcc gcc
61                         if [ $? -ne 0 ] ; then
62                                 echo 'No working compiler found'
63                                 exit 1
64                         fi
65                 fi
66         else
67                 testcc $CC
68                 if [ $? -ne 0 ] ; then
69                         case $CC in
70                         *gcc*)
71                                 echo 'No working compiler found'
72                                 exit 1
73                                 ;;
74                         *)
75                                 testcc gcc
76                                 if [ $? -ne 0 ] ; then
77                                         echo 'No working compiler found'
78                                         exit 1
79                                 fi
80                                 ;;
81                         esac
82                 fi
83         fi
84         v=`echo '__GNUC__' 2>&1 | ${CC} -E - 2>&1 | sed -ne '/^[0-9]* *$/p'`
85         if [ x$v != x ] ; then
86                 CC=gcc
87         fi
88
89         case "$CC" in
90         *gcc*)  # gcc
91                 XARCH32_i386=""
92                 XARCH32_sparc=""
93                 XARCH64_sparc="-m64 -mcmodel=medlow"
94                 XARCH64_i386="-m64 -mcmodel=kernel -mno-red-zone -ffreestanding"
95                 ;;
96         *)      # Sun C
97                 XARCH32_i386="-Xa -xildoff"
98                 XARCH32_sparc="-Xa -xildoff -xarch=v8 -xmemalign=8s"
99                 if [ `cc -xarch=amd64 -xarch=v9 2>&1 | grep -c deprec` -eq 1 ] ; then
100                         XARCH64_sparc="-Xa -xildoff -m64 -xmemalign=8s"
101                         XARCH64_i386="$XARCH32 -m64"
102                 else
103                         XARCH64_sparc="-Xa -xildoff -xarch=v9 -xchip=ultra -xmemalign=8s -xcode=abs32"
104                         XARCH64_i386="$XARCH32 -xarch=amd64 -xcode=abs32"
105                 fi
106                 ;;
107         esac
108         XARCH32="`eval echo '$XARCH32_'$cpu`"
109         XARCH64="`eval echo '$XARCH64_'$cpu`"
110         OBJ32_sparc=sparcv7
111         OBJ64_sparc=sparcv9
112         OBJ32_i386=i86
113         OBJ64_i386=amd64
114
115         export CC
116
117         ISABITS=32
118
119         OBJ32=`eval echo '$OBJ32_'$cpu`
120         OBJ64=`eval echo '$OBJ64_'$cpu`
121         ARCHINC32=
122         ARCHINC64_sparc="-I/usr/include/v9"
123         ARCHINC64_i386=""
124         ARCHINC64="`eval echo '$ARCHINC_'$cpu`"
125
126         if [ $solrev -ge 10 ] && /bin/optisa sparcv8plus amd64 > /dev/null
127         then
128                 # Introducing amd64
129                 BUILDBOTH=true
130         elif [ $solrev -ge 7 ] && /bin/optisa sparcv8plus > /dev/null
131         then
132                 # We run Solaris 7+ on 64 bit capable hardware.
133                 BUILDBOTH=true
134         else
135                 BUILDBOTH=false
136                 OBJ32=.
137         fi
138
139         if $BUILDBOTH
140         then
141                 echo Testing compiler $CC for 64 bit object file generation.
142                 t=conftest$$.c
143                 trap 'rm -f $t 32.out 64.out; exit 1' 0 1 2 3 15
144                 cat > $t <<-EOF
145                 #include <stdio.h>
146                 int main(void)
147                 {
148                         printf("%ld\n", (long) sizeof(long));
149                         exit(0);
150                 }
151                 EOF
152
153                 # Is it perhaps a 64 bit only compiler?
154                 if $CC $XARCH32 $t -o 32.out >/dev/null 2>&1 &&
155                     [ "`./32.out`" = 4 ]
156                 then :; else
157                         echo $CC $XARCH32 cannot create 32 bit executables. 1>&2
158                         exit 1
159                 fi
160                 if $CC $XARCH64 $t -o 64.out >/dev/null 2>&1 &&
161                     { out64=`./64.out 2>/dev/null` ;
162                     [ "$out64" = 8 -o "`isainfo -b`" = 32 -a "$out64" = "" ]
163                     }
164                 then
165                         echo "found 32/64 bit compiler" 1>&2
166                         CC64=true
167                 else
168                         CC64=false
169                 fi
170                 rm -f $t 32.out 64.out
171                 trap 0 1 2 3 15
172         fi
173
174         # If we're running 64 bit, we *must* build 64 bit.
175         if ([ "`isainfo -b`" = 64 ]) 2>/dev/null ; then
176                 if $CC64 ; then :; else
177                         echo "No 64 bit capable compiler was found" 1>&2
178                         exit 1
179                 fi
180                 ISABITS="32 64"
181         elif $BUILDBOTH && $CC64
182         then
183                 ISABITS="32 64"
184         else
185                 OBJ32=.
186         fi
187 else
188         cpu=`uname -m`
189         cpudir=${cpu}-`uname -r`
190 fi
191
192 # Default $MAKE to make
193 : ${MAKE:=make}
194
195 if [ $cpu = i386 -a $solrev -lt 10 ] ; then
196         if [ -n "$BPFILTER" ] ; then
197                 BPF="BPFILTER=./$BPFILTER"
198         fi
199         $MAKE $MAKEFLAGS ${1+"$@"} sunos5 SOLARIS2="-DSOLARIS2=$solrev" CPU= CPUDIR=${cpudir} CC="$CC $XARCH32" XARCH="$XARCH32" ARCHINC="$ARCHINC32" BITS=32 OBJ=. $BPF
200         exit $?
201 fi
202 if [ x$solrev = x ] ; then
203         make ${1+"$@"} sunos$rev "TOP=.." "ARCH=`uname -m`"
204         exit $?
205 fi
206 for b in $ISABITS
207 do
208         echo build $b bit binaries.
209         for v in OBJ ARCHINC XARCH
210         do
211                 eval $v=\"\$$v$b\"
212         done
213         eval B=\"\$OBJ${b}_`uname -p`\"
214         if [ -n "$BPFILTER" ] ; then
215                 BPF="BPFILTER=$OBJ/$BPFILTER"
216         fi
217         $MAKE $MAKEFLAGS ${1+"$@"} sunos$rev SOLARIS2="-DSOLARIS2=$solrev" CPU= CPUDIR=${cpudir} CC="$CC $XARCH" XARCH="$XARCH" INSTANCE="$INST" ARCHINC="$ARCHINC" BITS=$b OBJ=$B $BPF || exit $?
218 done