7 FORTRAN_COMPILER_TIMER
=""
14 while [ $# -ge 1 ]; do
15 config_line
="$config_line $1"
21 -h) print_usage
="yes" ;;
22 -help) print_usage
="yes" ;;
23 -os) shift ; WRF_OS
=$1 ;;
24 -mach) shift ; WRF_MACH
=$1 ;;
26 -time) shift ; FORTRAN_COMPILER_TIMER
=$1 ;;
30 radardfi
) WRF_DFI_RADAR
=1 ;;
31 wrfda
) wrf_core
=DA_CORE
;;
32 4dvar
) wrf_core
=4D_DA_CORE
;;
33 arw
) wrf_core
=EM_CORE
;;
34 coamps
) wrf_core
=COAMPS_CORE
;;
35 titan
) WRF_TITAN
=1 ; break ;;
36 mars
) WRF_MARS
=1 ; break ;;
37 venus
) WRF_VENUS
=1 ; break ;;
38 wrfplus
) wrf_core
=WRF_PLUS_CORE
; break ;;
39 *) echo "This option is not recognized: $1" ; exit 2 ;;
43 if [ -n "$print_usage" ] ; then
45 echo '*****************************************************************************'
46 echo usage
: $thiscmd '[-d|-D|-s|-f|-os os|-mach mach|-time timecommand] [chem] [kpp]'
47 echo '-d build with debugging information and no optimization'
48 echo '-D build with -d AND floating traps, traceback, uninitialized variables'
49 echo '-r8 build with 8 byte reals'
50 echo '-help print this message'
51 echo '*****************************************************************************'
56 if `pwd | grep ' ' > /dev/null ` ; then
57 echo '************************** W A R N I N G ************************************'
58 echo The current working directory has spaces
in some components of its path name
59 echo and this may cause problems
for your build. This can occur
, for example
, on
60 echo Windows systems. It is strongly recommended that you
install WRF and other
61 echo related software such as NetCDF
in directories whose path names contain no
62 echo white space. On Win
, for example
, create and
install in a directory under C
:.
63 echo '*****************************************************************************'
67 # lifted from the configure file for mpich; 00/03/10 jm
69 # Check for perl and perl version
72 # Extract the first word of "$p", so it can be a program name with args.
73 set dummy
$p; ac_word
=$2
74 if test -z "$ac_echo_n" ; then
76 if (echo "testing\c"; echo 1,2,3) |
grep c
>/dev
/null
; then
77 # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
78 if (echo -n testing
; echo 1,2,3) |
sed s
/-n/xn
/ |
grep xn
>/dev
/null
; then
87 ac_echo_test
=`echo foo 1>&1`
88 if test -z "$ac_echo_test" ; then
89 print_error
"Your sh shell does not handle the output redirection"
90 print_error
"1>&1 correctly. Configure will work around this problem,"
91 print_error
"but you should report the problem to your vendor."
94 if test -z "$ac_echo_test" -a 1 = 1 ; then
95 echo $ac_n "checking for $ac_word""... $ac_c"
97 echo $ac_n "checking for $ac_word""... $ac_c" 1>&1
100 if test -n "$PERL"; then
101 ac_pg_PERL
="$PERL" # Let the user override the test.
103 ac_first_char
=`expr "$p" : "\(.\)"`
104 if test "$ac_first_char" = "/" -a -x "$p" ; then
108 IFS
="${IFS= }"; ac_save_ifs
="$IFS"; IFS
="${IFS}:"
109 for ac_dir
in $PATH; do
110 test -z "$ac_dir" && ac_dir
=.
111 if test -f $ac_dir/$ac_word; then
113 ac_prog_where
=$ac_dir/$ac_word
119 fi;PERL
="$ac_pg_PERL"
120 if test -n "$ac_prog_where" ; then
121 if test -z "$ac_echo_test" -a 1 = 1 ; then
122 echo "$ac_t""found $ac_prog_where ($PERL)"
124 echo "$ac_t""found $ac_prog_where ($PERL)" 1>&1
126 PERLFULLPATH
=$ac_prog_where
128 if test -z "$ac_echo_test" -a 1 = 1 ; then
131 echo "$ac_t""no" 1>&1
134 test -n "$PERL" && break
137 if test -z "$PERL" ; then
138 # We have to set this outside of the loop lest the first failure in
139 # PROGRAM_CHECK set the value (which then terminates the effect of the
140 # loop, since autoconf macros only set values that are null, they
141 # don't override them
145 if test -n "$PERL" ; then
148 perlversion
=`$PERL -v | grep 'This is perl' | \
149 sed -e 's/^.*v[a-z ]*\([0-9]\).*$/\1/'`
151 # Should do a test first for ch_p4 etc.
152 if test "$perlversion" -lt 5 ; then
153 echo "WRF build requires perl version 5, which configure did not find."
154 echo "You can set the environment variable PERL to contain the "
155 echo "location of perl version 5."
156 echo "Configure believes that $PERL is version $perlversion ."
162 # We just need to find nc-config. First, check if NETCDF_C is set; if not, check
163 # $NETCDF/bin; otherwise, try `which nc-config`. If all that fails, warn user that WRF
164 # may fail to build beacuse of an incomplete NetCDF configuration. It could still be
165 # successfull if NetCDF was built statically because the results of `nf-config --flibs`
166 # should contain the necessary information for linking as long as NetCDF-Fortran is not
167 # version 4.5.3 (see https://github.com/Unidata/netcdf-fortran/issues/270)
169 if [ -n "$NETCDF_C" ] ; then
170 if [ -f "$NETCDF_C/bin/nc-config" ] ; then
171 export NETCDF_C
=$NETCDF_C
173 elif [ -f "${NETCDF}/bin/nc-config" ] ; then
174 export NETCDF_C
=$NETCDF
176 ans
="`which nc-config`"
178 if [ "$ans" != "nc-config:" -a "$ans" != "" -a "$status" = "0" ] ; then
179 export NETCDF_C
=`echo $ans | awk -F/ '{NF=NF-2;$NF=$NF}1' OFS=/`
181 export NETCDF_C
="NOT_FOUND"
185 if [ -e $NETCDF_C/bin
/nc-config
] ; then
186 ncversion
=`$NETCDF_C/bin/nc-config --version | awk '{print $2}'`
192 if [ -n "$NETCDFPAR" ] ; then
194 if [ ! -e $NETCDF_C/bin
/nc-config
] ; then
197 ncversion
=`$NETCDF_C/bin/nc-config --version | awk '{print $2}'`
198 ncversiona
=`echo $ncversion | cut -c 1`
199 ncversionb
=`echo $ncversion | cut -c 3`
200 ncversionc
=`echo $ncversion | cut -c 5`
201 ncversiona
=`expr $ncversiona \* 100`
202 ncversionb
=`expr $ncversionb \* 10`
203 ncversionabc
=`expr $ncversiona + $ncversionb`
204 ncversionabc
=`expr $ncversionabc + $ncversionc`
205 if [ $ncversionabc -lt 474 ] ; then
209 if [ "$PROBS" = "TRUE" ] ; then
211 echo Cannot activate NETCDFPAR with this version of NetCDF
: $ncversion
212 echo You need NetCDF version
4.7.4 or newer
213 echo Use a newer version of NetCDF
, or
unset the env variable NETCDFPAR
224 if test -z "$NETCDF" ; then
226 echo '*****************************************************************************'
227 echo 'No environment variable NETCDF set.'
229 echo '*****************************************************************************'
234 if test -z "$NETCDF_classic" ; then
242 if [ -n "$NETCDF" ] ; then
243 echo "Will use NETCDF in dir: $NETCDF"
244 # Oh UNIDATA, why make it so hard ...
245 if [ -f "$NETCDF/lib/libnetcdff.a" -o -f "$NETCDF/lib/libnetcdff.so" -o -f "$NETCDF/lib/libnetcdff.dll.a" ] ; then
246 USENETCDFF
="-lnetcdff"
250 if [ -f "$NETCDF_C/lib/libnetcdf.a" -o -f "$NETCDF_C/lib/libnetcdf.so" -o -f "$NETCDF_C/lib/libnetcdf.dll.a" ] ; then
255 export USENETCDF
=$USENETCDF
256 export USENETCDFF
=$USENETCDFF
259 echo '*****************************************************************************'
260 echo 'No environment variable NETCDF set.'
262 echo '*****************************************************************************'
267 # If the user asked for classic netcdf, acquiesce to the request.
269 if [ ! -f "$NETCDF/bin/nf-config" ] ; then
270 export NETCDF_classic
=1
273 if [ -n "$NETCDF_classic" ] ; then
274 if [ $NETCDF_classic -eq 1 ] ; then
281 if [ "`$NETCDF/bin/nf-config --has-nc4`" = "yes" ] ; then
285 export NETCDF_classic
=1
291 if [ -z "$HDF5_PATH" ] ; then HDF5_PATH
=''; fi
292 if [ -z "$ZLIB_PATH" ] ; then ZLIB_PATH
=''; fi
293 if [ -z "$GPFS_PATH" ] ; then GPFS_PATH
=''; fi
294 if [ -z "$CURL_PATH" ] ; then CURL_PATH
=''; fi
296 if [ -n "$NETCDF4" ] ; then
297 if [ $NETCDF4 -eq 1 ] ; then
299 if [ "$NETCDF_C" != "NOT_FOUND" -a -f $NETCDF_C/bin
/nc-config
] ; then
300 nx_config
="`$NETCDF_C/bin/nc-config --libs`"
301 NETCDF4_DEP_LIB
="$NETCDF4_DEP_LIB $nx_config"
304 echo '*****************************************************************************'
305 echo 'WARNING! Unable to find nc-config. Linking with NetCDF may fail.'
306 echo '*****************************************************************************'
309 nx_config
="`$NETCDF/bin/nf-config --flibs`"
310 NETCDF4_DEP_LIB
="$NETCDF4_DEP_LIB $nx_config"
314 if [ -n "$PNETCDF" ] ; then
315 echo "Will use PNETCDF in dir: $PNETCDF"
316 # experimental, so don't tease the user if it is not there
318 # echo "Will configure for use without NetCDF"
321 if [ -n "$ADIOS2" ] ; then
322 echo "Will use ADIOS2 in dir: $ADIOS2"
324 echo "ADIOS2 not set in environment. Will configure WRF for use without."
327 if [ -n "$HDF5" ] ; then
328 echo "Will use HDF5 in dir: $HDF5"
330 echo "HDF5 not set in environment. Will configure WRF for use without."
333 if [ -n "$PHDF5" ] ; then
334 echo "Will use PHDF5 in dir: $PHDF5"
336 echo "PHDF5 not set in environment. Will configure WRF for use without."
339 if [ "$wrf_core" = "DA_CORE" -o "$wrf_core" = "4D_DA_CORE" ] ; then
340 if [ -n "$RTTOV" ] ; then
341 echo "Will use RTTOV in dir: $RTTOV"
343 echo "RTTOV not set in environment. Will configure WRFDA for use without."
347 # Set the "traditional" flag and the "cpp" flags
349 TFL
="-traditional-cpp"
352 if [ "$wrf_core" = "4D_DA_CORE" ]; then
353 if [ -n "$WRFPLUS_DIR" ] ; then
354 echo "Will use WRFPLUS in dir: $WRFPLUS_DIR"
356 echo "WRFPLUS_DIR not set in environment. Please compile WRFPLUS and set WRFPLUS_DIR."
360 if [ -n "$WRFPLUS_DIR" ] ; then
361 echo 'Unsetting "$WRFPLUS_DIR" environment variable. Use "configure 4dvar" to configure for 4dvar compilation.'
365 # Users who are cross-compiling can set environment variable
366 # $WRF_OS to override the value normally obtained from `uname`.
367 # If $WRF_OS is set, then $WRF_MACH can also be set to override
368 # the value normally obtained from `uname -m`. If $WRF_OS is
369 # set and $WRF_MACH is not set, then $WRF_MACH defaults to "ARCH".
370 # If $WRF_OS is not set then $WRF_MACH is ignored.
371 if [ -n "$WRF_OS" ] ; then
372 echo "${0}: WRF operating system set to \"${WRF_OS}\" via environment variable \$WRF_OS"
375 if [ -n "$WRF_MACH" ] ; then
376 echo "${0}: WRF machine set to \"${WRF_MACH}\" via environment variable \$WRF_MACH"
380 # if the uname command exists, give it a shot and see if
381 # we can narrow the choices; otherwise, spam 'em
384 type uname
> /dev
/null
385 if [ $?
-eq 0 ] ; then
387 if [ "$os" = "AIX" -o "$os" = "IRIX" -o "$os" = "IRIX64" -o "$os" = "SunOS" -o "$os" = "HP-UX" -o "$os" = "Darwin" -o "$os" = "Interix" ] ; then
390 xxx
=`expr "$os" : '\(.........\).*'`
391 if [ "$xxx" = "CYGWIN_NT" ] ; then
394 if [ "$os" = "OSF1" -o "$os" = "Linux" -o "$os" = "UNICOS/mp" -o "$os" = "UNIX_System_V" -o "$os" = "CYGWIN_NT" ] ; then
396 if [ "$mach" = "ia64" -a -f /etc
/sgi-release
] ; then
407 # an IBM specific hack to adjust the bmaxstack and bmaxdata options if addressing is 32-bit
408 if [ "$os" = "AIX" ] ; then
409 if [ -z "$OBJECT_MODE" ] ; then
413 if [ "$OBJECT_MODE" = "32" ] ; then
414 # the bang means nothing to sh in this context; use to represent spaces (perl will unbang)
415 ldflags
=-bmaxstack:256000000!-bmaxdata:2048000000
419 # compile options that come from the environment, such as chemistry
420 # the "!" is removed by Config.pl
421 if [ -n "$WRF_HYDRO" ] ; then
422 if [ $WRF_HYDRO = 1 ] ; then
423 echo building WRF-HYDRO
424 compileflags
="${compileflags}!-DWRF_HYDRO"
429 # compile options that come from the environment, such as chemistry
430 # the "!" is removed by Config.pl
431 if [ -n "$WRF_MARS" ] ; then
432 if [ $WRF_MARS = 1 ] ; then
433 echo building WRF
for Mars
434 compileflags
="${compileflags}!-DPLANET!-DMARS"
439 if [ -n "$WRF_TITAN" ] ; then
440 if [ $WRF_TITAN = 1 ] ; then
441 echo building WRF
for Titan
442 compileflags
="${compileflags}!-DPLANET!-DTITAN"
446 if [ -n "$WRF_VENUS" ] ; then
447 if [ $WRF_VENUS = 1 ] ; then
448 echo building WRF
for Venus
449 compileflags
="${compileflags}!-DPLANET!-DVENUS"
452 if [ -n "$WRF_QUIETLY" ]; then
453 echo WRF_QUIETLY is now a synonym
for WRF_LOG_BUFFERING
454 echo setting WRF_LOG_BUFFERING to
1...
455 export WRF_LOG_BUFFERING
=1
457 if [ -n "$WRF_LOG_BUFFERING" ]; then
458 if [ $WRF_LOG_BUFFERING = 1 ]; then
459 echo building WRF with support
for buffering of log messages
460 compileflags
="${compileflags}!-DWRF_LOG_BUFFERING=1"
463 if [ -n "$PNETCDF_QUILT" ]; then
464 echo Enabling quilt_pnc I
/O server implementation.
465 compileflags
="${compileflags}!-DPNETCDF_QUILT=1"
467 if [ -n "$WRF_DFI_RADAR" ] ; then
468 if [ $WRF_DFI_RADAR = 1 ] ; then
469 echo building WRF with radar dfi option
470 compileflags
="${compileflags}!-DWRF_DFI_RADAR=1"
474 if [ -n "$WRF_CMAQ" ] ; then
475 echo building WRF with CMAQ option
476 compileflags
="${compileflags}!-DWRF_CMAQ"
479 if [ -n "$WRF_CHEM" ] ; then
480 if [ $WRF_CHEM = 1 ] ; then
481 echo building WRF with chemistry option
482 compileflags
="${compileflags}!-DWRF_CHEM!-DBUILD_CHEM=1"
483 if [ -n "$WRF_KPP" ] ; then
484 if [ $WRF_KPP = 1 ] ; then
485 echo building WRF with KPP chemistry option
486 compileflags
="${compileflags}!-DWRF_KPP"
490 compileflags
="${compileflags} "
493 compileflags
="${compileflags} "
496 if [ -n "$WRFPLUS" ] ; then
497 if [ $WRFPLUS = 1 ] ; then
498 echo building WRF
for TL and AD
499 compileflags
="!-DWRFPLUS"
505 if [ $?
-ne 0 ] ; then
507 echo "ERROR ERROR ERROR ERROR ERROR ERROR ERROR"
508 echo "'m4' utility not found! Can not configure."
510 echo "If on an Ubuntu machine, use the command"
511 echo " sudo apt-get install m4 "
512 echo "To download and install the 'm4' utility"
516 if command -v timex
> /dev
/null
2>&1; then
517 FORTRAN_COMPILER_TIMER
=timex
518 echo "Will use 'timex' to report timing information"
519 elif command -v time > /dev
/null
2>&1; then
520 FORTRAN_COMPILER_TIMER
=time
521 echo "Will use 'time' to report timing information"
524 # Is this some type of WRF DA build? If so, it is real*8.
525 # Let's go ahead and set a flag internally.
526 if test -n "$wrf_core" ; then
527 if [ "$wrf_core" = "DA_CORE" -o \
528 "$wrf_core" = "4D_DA_CORE" -o \
529 "$wrf_core" = "WRF_PLUS_CORE" ] ; then
534 # Found perl, so proceed with configuration
535 if test -n "$PERL" ; then
536 srch
=`grep -i "^#ARCH.*$os" arch/configure.defaults | grep -i "$mach"`
537 if [ -n "$srch" ] ; then
538 $PERL arch
/Config.pl
-dmparallel=$COMMLIB -ompparallel=$OMP -perl=$PERL \
539 -netcdf=$NETCDF -pnetcdf=$PNETCDF -netcdfpar=$NETCDFPAR -adios2=$ADIOS2 -hdf5=$HDF5 -phdf5=$PHDF5 -os=$os -mach=$mach -ldflags=$ldflags \
540 -compileflags=$compileflags -opt_level=$opt_level -USENETCDFF=$USENETCDFF -USENETCDF=$USENETCDF \
541 -time=$FORTRAN_COMPILER_TIMER -tfl="$TFL" -cfl="$CFL" -config_line="$config_line" \
542 -wrf_core=$wrf_core -gpfs=$GPFS_PATH -curl=$CURL_PATH -netcdf4_dep_lib="$NETCDF4_DEP_LIB"
543 if test ! -f configure.wrf
; then
544 echo "configure.wrf not created! Exiting configure script..."
547 if [ "$opt_level" = "-d" ] ; then
548 sed -e 's/FCOPTIM[ ]*=/& # /' -e '/FCDEBUG[ ]*=/s/#//' configure.wrf
> configure.wrf.edit
549 /bin
/mv configure.wrf.edit configure.wrf
551 if [ "$opt_level" = "-D" ] ; then
552 sed -e 's/FCOPTIM[ ]*=/& # /' -e '/FCDEBUG[ ]*=/s/#//g' configure.wrf
> configure.wrf.edit
553 /bin
/mv configure.wrf.edit configure.wrf
556 # GNU has a funny way of doing promotion to real*8
557 if [ "$rword" = "-r8" ] ; then
558 srch
=`grep -i "^SFC" configure.wrf | grep -i "gfortran"`
559 if [ -n "$srch" ] ; then
560 sed -e '/^PROMOTION/s/#//' \
561 -e '/^RWORDSIZE/s/$(NATIVE_RWORDSIZE)/8/' configure.wrf
> configure.wrf.edit
563 sed -e '/^RWORDSIZE/s/$(NATIVE_RWORDSIZE)/8/' configure.wrf
> configure.wrf.edit
565 /bin
/mv configure.wrf.edit configure.wrf
566 sed -e 's/-DBUILD_SBM_FAST=1/-DBUILD_SBM_FAST=0/' configure.wrf
> configure.wrf.edit
567 /bin
/mv configure.wrf.edit configure.wrf
570 echo '*********************************************************'
571 echo '*** ERROR ERROR ERROR ERROR ***'
573 echo '*** Configuration not found in configure.defaults ***'
574 echo '*********************************************************'
579 if test -f configure.wrf
; then
580 # new dec 2005. test what fseek is supported (needed for share/landread.c to work correctly)
581 echo testing
for fseeko and fseeko64
582 /bin
/rm -f tools
/fseeko_test tools
/fseeko64_test
583 ( make fseek_test
2> /dev
/null
) 1> /dev
/null
584 if [ "$os" = "Darwin" ] ; then
585 # fseeko64 does not exist under Darwin fseeko does. Remove the 0 length executable
586 # file that might get generated anyway, even though the compiler complains about missing reference.
587 /bin
/rm -f tools
/fseeko64_test
589 if test -x tools
/fseeko64_test
; then
590 ( tools
/fseeko64_test
2> /dev
/null
) 1> /dev
/null
592 echo fseeko64 is supported
593 sed '/^CC .*=/s/$/ -DFSEEKO64_OK /' configure.wrf
> xx$$
; /bin
/mv xx$$ configure.wrf
596 if test -x tools
/fseeko_test
; then
597 ( tools
/fseeko_test
2> /dev
/null
) 1> /dev
/null
599 echo fseeko is supported and handles
64 bit offsets
600 sed '/^CC .*=/s/$/ -DFSEEKO_OK /' configure.wrf
> xx$$
; /bin
/mv xx$$ configure.wrf
602 echo neither fseeko64 nor fseeko with
64 bit offsets works
, landread will be compiled with fseek
603 echo but may not work correctly
for very high resolution terrain datasets
606 echo neither fseeko64 nor fseeko with
64 bit offsets works
, landread will be compiled with fseek
607 echo but may not work correctly
for very high resolution terrain datasets
612 echo "------------------------------------------------------------------------"
613 sed -e '1,/#### Architecture specific settings ####/d' -e '/^externals/,$d' configure.wrf
615 echo "------------------------------------------------------------------------"
616 echo "Settings listed above are written to configure.wrf."
617 echo "If you wish to change settings, please edit that file."
618 echo "If you wish to change the default options, edit the file:"
619 echo " arch/configure.defaults"
621 if test -n "$NETCDF" ; then
622 if [ ! -f $NETCDF/include
/netcdf.inc
] ; then
624 echo "Error : Not found $NETCDF/include/netcdf.inc"
625 echo " Please check this installation of NetCDF and re-run this configure script"
628 grep nf_format_64bit
$NETCDF/include
/netcdf.inc
> /dev
/null
629 configure_aaaa
=$?
; export configure_aaaa
630 if [ $configure_aaaa -a -z "$WRFIO_NCD_NO_LARGE_FILE_SUPPORT" ] ; then
631 echo "NetCDF users note:"
632 echo " This installation of NetCDF supports large file support. To DISABLE large file"
633 echo " support in NetCDF, set the environment variable WRFIO_NCD_NO_LARGE_FILE_SUPPORT"
634 echo " to 1 and run configure again. Set to any other value to avoid this message."
639 if [ "$wrf_core" = "DA_CORE" -o "$wrf_core" = "WRF_PLUS_CORE" -o "$wrf_core" = "4D_DA_CORE" ]; then
640 if [ "`grep '^SFC' configure.wrf | grep -i 'gfortran'`" != "" -o "`grep '^SFC' configure.wrf | grep -i 'frtpx'`" != "" ]; then
641 echo "WRFDA/WRFPLUS using gfortran/frtpx needs realsize=8"
642 sed -e '/^PROMOTION.*=/s/#//' configure.wrf
> configure.wrf.edit
643 /bin
/mv configure.wrf.edit configure.wrf
647 if [ -n "$WRFPLUS" ] ; then
648 if [ $WRFPLUS = 1 ] ; then
649 if [ `grep '^SFC' configure.wrf | cut -d= -f2` = "gfortran" ]; then
650 echo "WRFPLUS using gfortran needs realsize=8"
651 sed -e '/^PROMOTION.*=/s/#//' configure.wrf
> configure.wrf.edit
652 /bin
/mv configure.wrf.edit configure.wrf
657 #Checking cross-compiling capability for some particular environment
658 #on Linux and Mac box
660 if [ $os = "Linux" -o $os = "Darwin" ]; then
662 SFC
=`grep '^SFC' configure.wrf | awk '{print $3}'`
663 SCC
=`grep '^SCC' configure.wrf | awk '{print $3}'`
664 CCOMP
=`grep '^CCOMP' configure.wrf | awk '{print $3}'`
666 SFC
="`type $SFC 2>/dev/null | awk '{print $NF}' | sed -e 's/(//g;s/)//g'`"
667 SCC
="`type $SCC 2>/dev/null | awk '{print $NF}' | sed -e 's/(//g;s/)//g'`"
668 CCOMP
="`type $CCOMP 2>/dev/null | awk '{print $NF}' | sed -e 's/(//g;s/)//g'`"
672 grep '^SFC' configure.wrf |
grep -i 'gfortran' > /dev
/null
676 cat > ${foo}.F
<< EOF
677 PROGRAM GFORTRAN_VERSION_CHECK
678 IF (__GNUC__ .GT. 9) CALL EXIT(1)
682 gfortran
-o ${foo} ${foo}.F > /dev/null 2>&1 && ./${foo}
685 sed '/^FCCOMPAT/ s/$/ -fallow-argument-mismatch -fallow-invalid-boz/' configure.wrf
> configure.wrf.edit
686 mv configure.wrf.edit configure.wrf
688 rm ${foo} ${foo}.F
2> /dev
/null
692 int main(int argc, char ** argv)
700 integer :: STATUS = 0
702 end program test_exit
705 # do not do this test for MIC, which cross compiles
706 if [ -z "`grep 'SCC.*mmic' configure.wrf`" ] ; then
707 # Detecting whether if mpi compiler wrapper supports -cc/-f90 options
708 if [ -z "`grep -i -E '^DMPARALLEL[ \t]*=.*#' configure.wrf`" ] ; then
709 mpicc
-cc=$SCC -o ${foo} ${foo}.c
> /dev
/null
2>&1
711 sed 's/-cc=$(SCC)//' configure.wrf
> configure.wrf.edit
712 mv configure.wrf.edit configure.wrf
714 rm ${foo} ${foo}.o
2> /dev
/null
715 mpif90
-f90=$SFC -o ${foo} ${foo}.f
> /dev
/null
2>&1
717 sed 's/-f90=$(SFC)//' configure.wrf
> configure.wrf.edit
718 mv configure.wrf.edit configure.wrf
720 rm ${foo} ${foo}.o
2> /dev
/null
724 if [ -e $NETCDF_C/lib
/libnetcdf.a
-a "$SFC" != "" -a "$SCC" != "" -a "$CCOMP" != "" ]; then
732 echo Testing
for NetCDF
, C and Fortran compiler
735 ar p
$NETCDF_C/lib
/libnetcdf.a
`ar t $NETCDF_C/lib/libnetcdf.a | grep -E '\.o' | head -n 1 | sed 's/://'` > ${foo}.o
736 netcdf_arch
="`file ${foo}.o | grep -o -E '[0-9]{2}-bit|i386'`"
739 $SFC -o ${foo} ${foo}.f
> /dev
/null
2>&1
740 SFC_arch
="`file ${foo} | grep -o -E '[0-9]{2}-bit|i386'`"
741 rm ${foo} ${foo}.o
2> /dev
/null
743 $SCC -o ${foo} ${foo}.c
> /dev
/null
2>&1
744 SCC_arch
="`file ${foo} | grep -o -E '[0-9]{2}-bit|i386'`"
746 rm ${foo} ${foo}.o
2> /dev
/null
748 if [ "$SCC" != "$CCOMP" ]; then
749 $CCOMP -o ${foo} ${foo}.c
> /dev
/null
2>&1
750 CCOMP_arch
="`file ${foo} | grep -o -E '[0-9]{2}-bit|i386'`"
751 rm ${foo} ${foo}.o
2> /dev
/null
754 if [ "$SFC_arch" = "" -o "$SCC_arch" = "" -o "$CCOMP_arch" = "" ]; then
755 echo " One of compilers testing failed!"
756 echo " Please check your compiler"
758 rm -f ${foo} ${foo}.
[cfo
] 2> /dev
/null
761 cp configure.wrf configure.wrf.edit
768 if [ "$SFC_arch" = "64-bit" ] ; then
770 $SFC -m32 -o ${foo} ${foo}.f
> /dev
/null
2>&1
773 sed '/^SFC.*=/s/$/ -m32/' configure.wrf.edit
> configure.wrf.tmp
774 mv configure.wrf.tmp configure.wrf.edit
777 if [ "$SCC_arch" = "64-bit" ] ; then
779 $SCC -m32 -o ${foo} ${foo}.c
> /dev
/null
2>&1
782 sed '/^SCC.*=/s/$/ -m32/' configure.wrf.edit
> configure.wrf.tmp
783 mv configure.wrf.tmp configure.wrf.edit
787 if [ "$CCOMP_arch" = "64-bit" ] ; then
789 if [ "$CCOMP" != "$SCC" ]; then
790 $CCOMP -m32 -o ${foo} ${foo}.c
> /dev
/null
2>&1
793 sed '/^CCOMP/ s/$/ -m32/' configure.wrf.edit
> configure.wrf.tmp
794 mv configure.wrf.tmp configure.wrf.edit
798 sed '/^CCOMP/ s/$/ -m32/' configure.wrf.edit
> configure.wrf.tmp
799 mv configure.wrf.tmp configure.wrf.edit
803 if [ $CROSS_COMPILING -eq 1 ] ; then
805 echo This installation of NetCDF is
32-bit
806 if [ \
( $SFC_MULTI_ABI -ne 1 -a "$SFC_arch" = "64-bit" \
) \
807 -o \
( $SCC_MULTI_ABI -ne 1 -a "$SCC_arch" = "64-bit" \
) \
808 -o \
( $CCOMP_MULTI_ABI -ne 1 -a "$CCOMP_arch" = "64-bit" \
) ] ; then
809 rm configure.wrf.edit
810 echo One of compilers is
64-bit and doesn
\'t support cross-compiling.
811 echo Please check your NETCDF lib and compiler
813 echo -m32 is appended to configure.wrf
814 echo It will be forced to build
in 32-bit.
815 echo If you don
\'t want
32-bit binaries
, please use
64-bit NetCDF
, and re-run the configure
script.
822 if [ "$SFC_arch" = "32-bit" -o "$SFC_arch" = "i386" ] ; then
824 $SFC -m64 -o ${foo} ${foo}.f
> /dev
/null
2>&1
827 sed '/^SFC.*=/s/$/ -m64/' configure.wrf.edit
> configure.wrf.tmp
828 mv configure.wrf.tmp configure.wrf.edit
831 if [ "$SCC_arch" = "32-bit" -o "$SCC_arch" = "i386" ] ; then
833 $SCC -m64 -o ${foo} ${foo}.c
> /dev
/null
2>&1
836 sed '/^SCC.*=/s/$/ -m64/' configure.wrf.edit
> configure.wrf.tmp
837 mv configure.wrf.tmp configure.wrf.edit
841 if [ "$CCOMP_arch" = "32-bit" -o "$CCOMP_arch" = "i386" ] ; then
843 if [ "$CCOMP" != "$SCC" ]; then
844 $CCOMP -m64 -o ${foo} ${foo}.c
> /dev
/null
2>&1
847 sed '/^CCOMP/ s/$/ -m64/' configure.wrf.edit
> configure.wrf.tmp
848 mv configure.wrf.tmp configure.wrf.edit
852 sed '/^CCOMP/ s/$/ -m64/' configure.wrf.edit
> configure.wrf.tmp
853 mv configure.wrf.tmp configure.wrf.edit
857 if [ $CROSS_COMPILING -eq 1 ] ; then
859 echo This installation of NetCDF is
64-bit
860 if [ \
( $SFC_MULTI_ABI -ne 1 -a "$SFC_arch" != "64-bit" \
) \
861 -o \
( $SCC_MULTI_ABI -ne 1 -a "$SCC_arch" != "64-bit" \
) \
862 -o \
( $CCOMP_MULTI_ABI -ne 1 -a "$CCOMP_arch" != "64-bit" \
) ]; then
863 rm configure.wrf.edit
864 echo One of Compilers is
32-bit and doesn
\'t support cross-compiling.
865 echo Please check your NetCDF lib and compiler
867 echo -m64 is appended to configure.wrf
868 echo It will be forced to build
in 64-bit.
869 echo If you don
\'t want
64-bit binaries
, please use
32-bit NetCDF
, and re-run the configure
script.
875 if [ -e configure.wrf.edit
]; then
876 mv configure.wrf.edit configure.wrf
879 if [ $CROSS_COMPILING -eq 0 ] ; then
880 echo "This installation of NetCDF is $netcdf_arch"
881 echo " C compiler is $SCC_arch"
882 echo " Fortran compiler is $SFC_arch"
883 echo " It will build in $netcdf_arch"
885 if [ -e $NETCDF_C/bin
/nc-config
] ; then
886 echo "NetCDF version: ${ncversion}"
887 echo "Enabled NetCDF-4/HDF-5: `$NETCDF_C/bin/nc-config --has-nc4`"
888 echo "NetCDF built with PnetCDF: `$NETCDF_C/bin/nc-config --has-pnetcdf`"
889 if [ "$USENETCDFPAR" = "1" ] ; then
890 echo "Using parallel NetCDF via NETCDFPAR option"
897 rm -f ${foo} ${foo}.
[cfo
] 2> /dev
/null
900 # testing for Fortran 2003 IEEE features
901 make fortran_2003_ieee_test
> tools
/fortran_2003_ieee_test.log
2>&1
902 rm -f tools
/fortran_2003_ieee_test.log
904 if [ -f tools
/fortran_2003_ieee_test.exe
] ; then
907 if [ $retval -ne 0 ] ; then
908 sed -e '/^ARCH_LOCAL/s/$/ -DNO_IEEE_MODULE/' configure.wrf
> configure.wrf.edit
909 mv configure.wrf.edit configure.wrf
912 echo "************************** W A R N I N G ************************************"
914 echo "There are some IEEE Fortran 2003 features in WRF that your compiler does not"
915 echo "recognize. The IEEE function calls have been removed."
917 echo "*****************************************************************************"
920 # testing for Fortran 2003 ISO_C features
921 make fortran_2003_iso_c_test
> tools
/fortran_2003_iso_c_test.log
2>&1
922 rm -f tools
/fortran_2003_iso_c_test.log
924 if [ -f tools
/fortran_2003_iso_c_test.exe
] ; then
927 if [ $retval -ne 0 ] ; then
928 sed -e '/^ARCH_LOCAL/s/$/ -DNO_ISO_C_SUPPORT/' configure.wrf
> configure.wrf.edit
929 mv configure.wrf.edit configure.wrf
932 echo "************************** W A R N I N G ************************************"
934 echo "There are some Fortran 2003 features in WRF that your compiler does not recognize"
935 echo "The routines that utilize ISO_C support have been stubbed out. "
936 echo "That may not be enough."
938 echo "*****************************************************************************"
941 # testing for Fortran 2003 FLUSH features
942 make fortran_2003_flush_test
> tools
/fortran_2003_flush_test.log
2>&1
943 rm -f tools
/fortran_2003_flush_test.log
945 if [ -f tools
/fortran_2003_flush_test.exe
] ; then
948 if [ $retval -ne 0 ] ; then
949 make fortran_2003_fflush_test
> tools
/fortran_2003_fflush_test.log
2>&1
950 rm -f tools
/fortran_2003_fflush_test.log
952 if [ -f tools
/fortran_2003_fflush_test.exe
] ; then
955 if [ $retval -eq 0 ] ; then
956 sed -e '/^ARCH_LOCAL/s/$/ -DUSE_FFLUSH/' configure.wrf
> configure.wrf.edit
957 mv configure.wrf.edit configure.wrf
960 echo "************************** W A R N I N G ************************************"
962 echo "There are some Fortran 2003 features in WRF that your compiler does not recognize"
963 echo "The standard FLUSH routine has been replaced by FFLUSH."
964 echo "That may not be enough."
966 echo "*****************************************************************************"
968 if [ $retval -ne 0 ] ; then
969 sed -e '/^ARCH_LOCAL/s/$/ -DNO_FLUSH_SUPPORT/' configure.wrf
> configure.wrf.edit
970 mv configure.wrf.edit configure.wrf
973 echo "************************** W A R N I N G ************************************"
975 echo "There are some Fortran 2003 features in WRF that your compiler does not recognize"
976 echo "The standard FLUSH routine has been stubbed out."
977 echo "That may not be enough."
979 echo "*****************************************************************************"
983 # testing for Fortran 2008 intrinsic gamma function
984 make fortran_2008_gamma_test
> tools
/fortran_2008_gamma.log
2>&1
985 rm -f tools
/fortran_2008_gamma.log
987 if [ -f tools
/fortran_2008_gamma_test.exe
] ; then
990 if [ $retval -ne 0 ] ; then
991 sed -e '/^ARCH_LOCAL/s/$/ -DNO_GAMMA_SUPPORT/' configure.wrf
> configure.wrf.edit
992 mv configure.wrf.edit configure.wrf
995 echo "************************** W A R N I N G ************************************"
997 echo "There are some Fortran 2008 features in WRF that your compiler does not recognize"
998 echo "The intrinsic gamma function is not available, required by some schemes."
999 echo "That code is stubbbed out, and those schemes are unavailable at run-time."
1001 echo "*****************************************************************************"
1004 # testing for location of rpc/types.h file, used in landuse
1005 make rpc_test
> tools
/rpc_test.log
2>&1
1006 rm -f tools
/rpc_test.log
1008 if [ -f tools
/rpc_test.exe
] ; then
1009 rpc_type
=`tools/rpc_test.exe`
1010 if [ $rpc_type = "rpc" ]; then
1011 sed -e '/^CFLAGS_LOCAL/s/#/-DRPC_TYPES=1 &/' configure.wrf
> configure.wrf.edit
1013 sed -e '/^CFLAGS_LOCAL/s/#/-DRPC_TYPES=2 &/' configure.wrf
> configure.wrf.edit
1015 mv configure.wrf.edit configure.wrf
1017 echo "************************** W A R N I N G ************************************"
1019 echo "The moving nest option is not available due to missing rpc/types.h file."
1020 echo "Copy landread.c.dist to landread.c in share directory to bypass compile error."
1022 echo "*****************************************************************************"
1025 # testing for netcdf4 IO features
1026 if [ -n "$NETCDF4" ] ; then
1027 if [ $NETCDF4 -eq 1 ] ; then
1028 make nc4_test
> tools
/nc4_test.log
2>&1
1030 if [ -f tools
/nc4_test.exe
] ; then
1032 rm -f tools
/nc4_test.log
1034 if [ $retval -ne 0 ] ; then
1035 echo "************************** W A R N I N G ************************************"
1036 echo "NETCDF4 IO features are requested, but this installation of NetCDF "
1038 echo "DOES NOT support these IO features. "
1040 echo "Please make sure NETCDF version is 4.1.3 or later and was built with "
1041 echo "--enable-netcdf4 "
1043 echo "OR set NETCDF_classic variable "
1044 echo " bash/ksh : export NETCDF_classic=1 "
1045 echo " csh : setenv NETCDF_classic 1 "
1047 echo "Then re-run this configure script "
1049 echo "!!! configure.wrf has been REMOVED !!!"
1051 echo "*****************************************************************************"
1054 echo "*****************************************************************************"
1055 echo "This build of WRF will use NETCDF4 with HDF5 compression"
1056 echo "*****************************************************************************"
1061 echo "*****************************************************************************"
1062 echo "This build of WRF will use classic (non-compressed) NETCDF format"
1063 echo "*****************************************************************************"