/[MITgcm]/MITgcm/tools/suggest_optfile_names
ViewVC logotype

Annotation of /MITgcm/tools/suggest_optfile_names

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Fri Jul 30 19:59:45 2004 UTC (16 years, 7 months ago) by edhill
Branch: MAIN
 o initial check-in of convenience script to help find/name optfiles

1 edhill 1.1 #! /usr/bin/env bash
2     #
3     #
4    
5     look_for_makedepend() {
6    
7     # The "original" makedepend is part of the Imake system that is
8     # most often distributed with XFree86 or with an XFree86 source
9     # package. As a result, many machines (eg. generic Linux) do not
10     # have a system-default "makedepend" available. For those
11     # systems, we have two fall-back options:
12     #
13     # 1) a makedepend implementation shipped with the cyrus-imapd
14     # package: ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/
15     #
16     # 2) a known-buggy xmakedpend shell script
17     #
18     # So the choices are, in order:
19     #
20     # 1) use the user-specified program
21     # 2) use a system-wide default
22     # 3) locally build and use the cyrus implementation
23     # 4) fall back to the buggy local xmakedpend script
24     #
25     if test "x${MAKEDEPEND}" = x ; then
26     which makedepend > /dev/null 2>&1
27     RV0=$?
28     cat <<EOF >> genmake_tc.f
29     program test
30     write(*,*) 'test'
31     stop
32     end
33     EOF
34     makedepend genmake_tc.f > /dev/null 2>&1
35     RV1=$?
36     if test "x${RV0}${RV1}" = x00 ; then
37     MAKEDEPEND=makedepend
38     else
39     echo " a system-default makedepend was not found."
40    
41     # Try to build the cyrus implementation
42     build_cyrus_makedepend
43     RETVAL=$?
44     if test "x$RETVAL" != x0 ; then
45     MAKEDEPEND='$(TOOLSDIR)/xmakedepend'
46     fi
47     rm -f ./genmake_cy_md
48     fi
49     else
50     # echo "MAKEDEPEND=${MAKEDEPEND}"
51     echo "${MAKEDEPEND}" | grep -i cyrus > /dev/null 2>&1
52     RETVAL=$?
53     if test x"$RETVAL" = x0 ; then
54     build_cyrus_makedepend
55     fi
56     fi
57     }
58    
59    
60     build_cyrus_makedepend() {
61     rm -f ./genmake_cy_md
62     (
63     cd $ROOTDIR/tools/cyrus-imapd-makedepend \
64     && ./configure > /dev/null 2>&1 \
65     && make > /dev/null 2>&1
66     if test -x ./makedepend.exe ; then
67     $LN ./makedepend.exe ./makedepend
68     fi
69     ./makedepend ifparser.c > /dev/null 2>&1 \
70     && echo "true"
71     ) > ./genmake_cy_md
72     grep true ./genmake_cy_md > /dev/null 2>&1
73     RETVAL=$?
74     rm -f ./genmake_cy_md
75     if test "x$RETVAL" = x0 ; then
76     MAKEDEPEND='$(TOOLSDIR)/cyrus-imapd-makedepend/makedepend'
77     return 0
78     else
79     echo "WARNING: unable to build cyrus-imapd-makedepend"
80     return 1
81     fi
82     }
83    
84    
85     find_possible_configs() {
86    
87     tmp1=`uname`"_"`uname -m`
88     tmp2=`echo $tmp1 | sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
89     tmp3=`echo $tmp2 | sed -e 's/power macintosh/ppc/'`
90     tmp1=`echo $tmp3 | sed -e 's|x86_64|amd64|'`
91     tmp2=`echo $tmp1 | sed -e 's/i[3-6]86/ia32/' | sed -e 's/athlon/ia32/'`
92     tmp3=`echo $tmp2 | sed -e 's/cray sv1/craysv1/'`
93     PLATFORM=$tmp3
94     echo $PLATFORM | grep cygwin > /dev/null 2>&1 && PLATFORM=cygwin_ia32
95     OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`
96     echo " The platform appears to be: $PLATFORM"
97    
98     echo "test" > test
99     ln -s ./test link
100     RETVAL=$?
101     if test "x${RETVAL}" = x0 ; then
102     LN="ln -s"
103     else
104     echo "Error: \"ln -s\" does not appear to work on this system!"
105     echo " For help, please contact <MITgcm-support@mitgcm.org>."
106     exit 1
107     fi
108     rm -f test link
109    
110     if test "x$CPP" = x ; then
111     CPP="cpp -traditional -P"
112     fi
113    
114     look_for_makedepend
115    
116     #================================================================
117     # look for possible C compilers
118     tmp="$MITGCM_CC $CC gcc c89 cc c99 mpicc"
119     p_CC=
120     for c in $tmp ; do
121     rm -f ./genmake_hello.c ./genmake_hello
122     cat >> genmake_hello.c << EOF
123     #include <stdio.h>
124     int main(int argc, char **argv) {
125     printf("Hello!\n");
126     return 0;
127     }
128     EOF
129     $c -o genmake_hello genmake_hello.c > /dev/null 2>&1
130     RETVAL=$?
131     if test "x${RETVAL}" = x0 ; then
132     p_CC="$p_CC $c"
133     fi
134     done
135     rm -f ./genmake_hello.c ./genmake_hello
136     if test "x${p_CC}" = x ; then
137     cat 1>&2 <<EOF
138    
139     Error: No C compilers were found in your path. Please specify one using:
140    
141     1) an "optfile" on (eg. "-optfile=path/to/OPTFILE"),
142     2) the CC or MITGCM_CC environment variables.
143    
144     EOF
145     exit 1
146     else
147     echo " The possible C compilers found in your path are:"
148     echo " "$p_CC
149     if test "x$CC" = x ; then
150     CC=`echo $p_CC | $AWK '{print $1}'`
151     echo " Setting C compiler to: "$CC
152     fi
153     fi
154    
155     #================================================================
156     # look for possible FORTRAN compilers
157     tmp="$MITGCM_FC $FC efc g77 f77 pgf77 pgf95 ifc f90 f95 mpif77 mpf77 mpxlf95"
158     p_FC=
159     for c in $tmp ; do
160     rm -f ./hello.f ./hello
161     cat >> hello.f <<EOF
162     program hello
163     do i=1,3
164     print *, 'hello world : ', i
165     enddo
166     end
167     EOF
168     $c -o hello hello.f > /dev/null 2>&1
169     RETVAL=$?
170     if test "x${RETVAL}" = x0 ; then
171     p_FC="$p_FC $c"
172     fi
173     done
174     rm -f ./hello.f ./hello
175     if test "x${p_FC}" = x ; then
176     cat 1>&2 <<EOF
177    
178     Error: No Fortran compilers were found in your path. Please specify one using:
179    
180     1) an "optfile" on (eg. "-optfile=path/to/OPTFILE"),
181     2) a command-line option (eg. "-fc NAME"), or
182     3) the FC or MITGCM_FC environment variables.
183    
184     EOF
185     exit 1
186     else
187     echo " The possible FORTRAN compilers found in your path are:"
188     echo " "$p_FC
189     if test "x$FC" = x ; then
190     FC=`echo $p_FC | $AWK '{print $1}'`
191     echo " Setting FORTRAN compiler to: "$FC
192     fi
193     fi
194    
195     if test "x$OPTFILE" = x ; then
196     OPTFILE=$ROOTDIR"/tools/build_options/"$PLATFORM"_"$FC
197     if test ! -r $OPTFILE ; then
198     echo " I looked for the file "$OPTFILE" but did not find it"
199     fi
200     fi
201     if test "x$OPTFILE" = x ; then
202     cat 1>&2 <<EOF
203    
204     Error: No options file was found in: $ROOTDIR/tools/build_options/
205     that matches this platform ("$PLATFORM") and the compilers found in
206     your path. Please specify an "optfile" using:
207    
208     1) the command line (eg. "-optfile=path/to/OPTFILE"), or
209     2) the MITGCM_OF environment variable.
210    
211     If you need help, please contact the developers at <MITgcm-support@mitgcm.org>.
212    
213     EOF
214     exit 1
215     fi
216    
217     }
218    
219    
220     AWK=awk
221    
222     if test "x${ROOTDIR}" = x ; then
223     tmp=`echo $PWD | sed -e 's/\// /g' | awk '{print $NR}'`
224     if test "x$tmp" = "xbin" -a -d ../model -a -d ../eesup -a -d ../pkg ; then
225     ROOTDIR=".."
226     else
227     for d in . .. ../.. ../../.. ../../../.. ../../../../.. ; do
228     if test -d "$d/model" -a -d "$d/eesupp" -a -d "$d/pkg" ; then
229     ROOTDIR=$d
230     printf "Warning: ROOTDIR unspecified but there appears to be"
231     echo " a copy of MITgcm at \"$ROOTDIR\""
232     break
233     fi
234     done
235     fi
236     fi
237    
238     tmp1=`uname`"_"`uname -m`
239     tmp2=`echo $tmp1 | sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
240     tmp3=`echo $tmp2 | sed -e 's/power macintosh/ppc/'`
241     tmp1=`echo $tmp3 | sed -e 's|x86_64|amd64|'`
242     tmp2=`echo $tmp1 | sed -e 's/i[3-6]86/ia32/' | sed -e 's/athlon/ia32/'`
243     tmp3=`echo $tmp2 | sed -e 's/cray sv1/craysv1/'`
244     PLATFORM=$tmp3
245     echo $PLATFORM | grep cygwin > /dev/null 2>&1 && PLATFORM=cygwin_ia32
246     echo " The platform appears to be: $PLATFORM"
247     echo " And possible optfiles are: "
248     OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`
249     for i in $OFLIST ; do
250     echo " $i"
251     done
252    
253     find_possible_configs
254    
255     echo
256     echo " The default optfile is: "$PLATFORM"_"$FC
257    

  ViewVC Help
Powered by ViewVC 1.1.22