123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585 |
- # -*- Autoconf -*-
- # Process this file with autoconf to produce a configure script.
- AC_INIT(MCT, 2.8)
- # PROCESS THE FOLLOWING MAKEFILES
- AC_CONFIG_MACRO_DIR([m4])
- AC_CONFIG_FILES(Makefile.conf)
- AC_CONFIG_HEADER(config.h)
- # DECLARE PACKAGE OPTIONS
- AC_ARG_ENABLE(mpiserial,
- AC_HELP_STRING([--enable-mpiserial],
- [Use the included MPI replacement library for single processor]),
- [DONOTCHECKMPI="DONOTCHECKMPI"]
- )
- AC_ARG_ENABLE(debugging,
- AC_HELP_STRING([--enable-debugging],
- [Use the debugging flag and disable the optimization flag]),
- [DEBUGGING="ENABLED"]
- )
- AC_ARG_ENABLE(selectedrealkind,
- AC_HELP_STRING([--enable-selectedrealkind],
- [define single precision and double precision numbers using the selected_real_kind function. Default uses the kind inquiry function.]),
- [SRKDEF="SELECTEDREALKIND"]
- )
- AC_ARG_ENABLE(sequence,
- AC_HELP_STRING([--enable-sequence],[Modify MCT types to make them contiguous in memory.]),
- [SRKDEF="SEQUENCE"],)
- AC_ARG_ENABLE(babel,
- AC_HELP_STRING([--enable-babel],[Supply this option if you plan on building the Babel bindings to MCT]),
- [SRKDEF="SEQUENCE"],)
- # DECLARE THE FOLLOWING PRECIOUS VARIABLES
- AC_ARG_VAR(MPILIBS,[MPI library command line invocation])
- AC_ARG_VAR(MPIHEADER,[MPI header include path with INCLUDEFLAG])
- AC_ARG_VAR(FPP,C-preprocessor for Fortran source code)
- AC_ARG_VAR(FPPFLAGS,C-preprocessing flags for Fortran source code)
- AC_ARG_VAR(FC,The Fortran compiler)
- AC_ARG_VAR(FCFLAGS,User-defined Fortran compiler flags)
- AC_ARG_VAR(PROGFCFLAGS,User-defined Fortran compiler flags for example programs)
- AC_ARG_VAR(CFLAGS,Customized C source compilation flags)
- AC_ARG_VAR(DEBUG,Fortran compiler flag for generating symbolic debugging information)
- AC_ARG_VAR(OPT,Fortran compiler flag for optimization level)
- AC_ARG_VAR(REAL8,[Fortran compiler flag for setting the default REAL size to REAL(KIND=8)])
- AC_ARG_VAR(BIT64,Fortran compiler flag for generating 64-bit objects)
- AC_ARG_VAR(ENDIAN,Fortran compiler flag for converting big-endian to little-endian)
- AC_ARG_VAR(INCLUDEFLAG,Fortran compiler flag for specifying module search path)
- AC_ARG_VAR(INCLUDEPATH,Additional library and module paths with INCLUDEFLAG)
- AC_ARG_VAR(AR,Archive command)
- AC_ARG_VAR(BABELROOT,Root directory of your Babel installation. i.e.: $BABELROOT/bin/babel $BABELROOT/lib/libsidl.so)
- AC_ARG_VAR(COMPILER_ROOT,Root directory of your FORTRAN compiler)
- AC_ARG_VAR(FORT_SIZE, Number of bits in Fortran real and double kind)
- # INCLUDE BABELROOT and COMPILER_ROOT in Makefile.conf(autoconf output)
- AC_SUBST(BABELROOT)
- AC_SUBST(COMPILER_ROOT)
- AC_SUBST(PYTHON)
- AC_SUBST(PYTHONOPTS)
- # SET TEMPORARY VARIABLES
- # OS AND PLATFORM NAME
- test "$osname"=NONE && osname=`uname -s`
- test "$machinename"=NONE && machinename=`uname -m`
- fullhostname=`hostname -f`
- # HARDCODE SPECIFIC MACHINES FOR EXTRAORDINARY CIRCUMSTANCES
- # CHECK IF WE ARE ON THE EARTH SIMULATOR
- ES="NO"
- if echo $osname | grep -i esos >/dev/null 2>&1; then
- ES="YES"
- fi
- if echo $osname | grep -i hp-ux >/dev/null 2>&1; then
- if test "$ac_hostname" = "moon"; then
- ES="YES"
- # TELLS CONFIGURE NOT TO RUN ANY TESTS THAT REQUIRE EXECUTION
- cross_compiling="yes"
- fi
- fi
- if test "$ES" = "YES"; then
- echo "Using preset configuration values for the Earth Simulator"
- if test -z "$CC"; then
- CC="escc"
- fi
- if test -z "$FC"; then
- FC="esf90"
- fi
- if test -z "$MPIFC"; then
- MPIFC="esmpif90"
- fi
- if test -z "$AR"; then
- AR="esar cqs"
- fi
- if test -z "FPP"; then
- FPPFLAGS=" "
- fi
- if test -z "$FCFLAGS"; then
- FCFLAGS="-EP -Wf'-pvctl fullmsg -L fmtlist transform map'"
- fi
- if test -z "$OPT"; then
- OPT="-C vopt"
- fi
- if test -z "$CPPDEFS"; then
- CPPDEFS="-DESVEC"
- fi
- fi
- # Check if we are on the ANL BG/P
- if echo $fullhostname | egrep -q '.\.(challenger|intrepid)\.alcf\.anl\.gov'
- then if test -z "$FC"; then
- FC=bgxlf90_r
- fi
- if test -z "$MPIFC"; then
- MPIFC=mpixlf90_r
- fi
- if test -z "$CC"; then
- CC=mpixlc_r
- fi
- fi
- # START TESTS
- # CHECK FOR THE C COMPILER
- AC_PROG_CC([cc])
- # CHECK FOR BYTE ORDERING
- AC_C_BIGENDIAN
- # CHECK FOR THE FORTRAN COMPILER
- # RLJ- specify the order, include PathScale and do not search for F77
- AC_PROG_FC([xlf95 pgf95 ifort gfortran pathf95 ftn lf95 f95 fort ifc efc g95 xlf90 pgf90 pathf90 epcf90 pghpf])
- # CHECK FOR MPI LIBRARIES
- AC_LANG_PUSH(Fortran)
- AC_FC_SRCEXT(F90)
- OLDFCFLAGS="$FCFLAGS"
- if test -n "$MPIHEADER"; then
- FCFLAGS="$FCFLAGS $MPIHEADER"
- fi
- # CHECK MPI BY DEFAULT
- if test -z "$DONOTCHECKMPI"; then
- ACX_MPI
- fi
- # DONT CHECK MPI IF SERIALMPI OPTION IS ENABLED
- if test -n "$DONOTCHECKMPI"; then
- echo "MPISERIAL ENABLED: BYPASSING MPI CHECK"
- if test -z "$MPIFC"; then
- MPIFC=$FC
- fi
- if test -z "$FORT_SIZE"; then
- FORT_SIZE="real4double8"
- echo "FORT_SIZE IS PRESET TO $FORT_SIZE"
- fi
- abs_top_builddir=`pwd`
- MPISERPATH=$abs_top_builddir/mpi-serial
- AC_SUBST(MPISERPATH)
- MPIHEADER=-I$MPISERPATH
- MPILIBS="-L$MPISERPATH -lmpi-serial"
- fi
- FCFLAGS="$OLDFCFLAGS"
- # A HACK TO FIX ACX_MPI TO GET MPILIBS TO BE AN EMPTY STRING
- if test "$MPILIBS" = " "; then
- MPILIBS=""
- fi
- # SET FC TO MPIFC. IF MPILIBS IS PRESENT, SET FC TO FC.
- if test -z "$FC"; then
- FC=$MPIFC
- if test "$FC" != "$MPIFC"; then
- if test -n "$MPILIBS"; then
- FC=$FC
- fi
- fi
- fi
- # FOR SANITY, CHECK THAT FILENAME EXTENSION FOR FC IS CONSISTENT WITH FC
- OLDFC="$FC"
- FC="$FC"
- AC_COMPILE_IFELSE(
- [ subroutine oof()
- return
- end], [],
- [AC_MSG_WARN([$FC FAILED TO COMPILE FILENAME EXTENSION $ac_ext])
- ])
- FC="$OLDFC"
- # CHECK HOW TO GET THE COMPILER VERSION.
- echo "Checking Compiler Version"
- AX_FC_VERSION()
- AC_LANG_POP(Fortran)
- # Check how to use the cpp with fortran
- AC_FC_PP_DEFINE()
- # CHECK HOW TO NAME MANGLE C FUNCTIONS SO THAT IT CAN BE CALLED FROM FORTRAN
- OLDFC="$FC"
- AC_FC_WRAPPERS()
- FC="$OLDFC"
- # CHECK THAT THE FORTRAN COMPILER CAN CORRECTLY PROCESS THESE DIRECTIVES
- # IF NOT, USE THE EXTERNAL C PREPROCESSOR
- OLDFC="$FC"
- defineflag="-Daardvark"
- if test "$OLDFC" = "xlf90"; then
- defineflag="-WF,-Daardvark"
- fi
- if test "$OLDFC" = "frt"; then
- defineflag="-Wp,-Daardvark"
- fi
- FC="$OLDFC"
- # DEFINE VARIABLES ACCORDING TO OS AND COMPILER
- echo "Hostname=$ac_hostname"
- echo "Machine=$machinename"
- echo "OS=$osname"
- # CHECK OS NAME
- if echo $osname | grep -i aix >/dev/null 2>&1; then
- SYSDEF="AIX"
- fi
- if echo $osname | grep -i darwin >/dev/null 2>&1; then
- SYSDEF="DARWIN"
- fi
- if echo $osname | grep -i unix_system_v >/dev/null 2>&1; then
- SYSDEF="UNIXSYSTEMV"
- fi
- if echo $osname | grep -i irix >/dev/null 2>&1; then
- SYSDEF="IRIX"
- fi
- if echo $osname | grep -i irix64 >/dev/null 2>&1; then
- SYSDEF="IRIX64"
- fi
- if echo $osname | grep -i linux >/dev/null 2>&1; then
- SYSDEF="LINUX"
- fi
- if echo $osname | grep -i osf1 >/dev/null 2>&1; then
- SYSDEF="OSF1"
- fi
- if echo $osname | grep -i super >/dev/null 2>&1; then
- SYSDEF="SUPERUX"
- fi
- if echo $osname | grep -i sun >/dev/null 2>&1; then
- SYSDEF="SUNOS"
- fi
- if echo $osname | grep -i t3e >/dev/null 2>&1; then
- SYSDEF="T3E"
- fi
- if echo $osname | grep -i unicos >/dev/null 2>&1; then
- SYSDEF="UNICOS"
- fi
- if test -z "$SYSDEF"; then
- AC_MSG_WARN([OPERATING SYSTEM UNKNOWN])
- SYSDEF="UNKNOWNOS"
- fi
- # Set the default FCFLAGS for non-gfortran compilers.
- # NOTE: This may change with a new version of autoconf.
- DEFFCFLAGS="-g"
- #####################################################
- # CHECK COMPILER NAME and add specific flags
- if echo $FC | grep xlf >/dev/null 2>&1; then
- echo "Fortran Compiler is XLF"
- CPRDEF="XLF"
- if test -z "$REAL8"; then
- REAL8="-qrealsize=8"
- fi
- if test -z "$OPT"; then
- OPT="-O2 -qarch=auto"
- fi
- if test -z "$DEBUG"; then
- DEBUG="-qdbg"
- fi
- if test "$FCFLAGS" = "$DEFFCFLAGS"; then
- FCFLAGS=""
- fi
- elif echo $FC | grep pgf >/dev/null 2>&1; then
- echo "Fortran Compiler is Portland Group"
- CPRDEF="PGI"
- if test -z "$REAL8"; then
- REAL8="-r8"
- fi
- if test -z "$BIT64"; then
- BIT64="-pc 64"
- fi
- if test "$FCFLAGS" = "$DEFFCFLAGS"; then
- FCFLAGS=""
- fi
- if test -z "$ENDIAN"; then
- ENDIAN="-byteswapio"
- fi
- if test -z "$OPT"; then
- OPT="-O2"
- fi
- if test -z "$DEBUG"; then
- DEBUG="-g"
- fi
- elif echo $FC | grep ftn >/dev/null 2>&1; then
- if echo $ac_fc_version_output | grep -i Portland >/dev/null 2>&1; then
- echo "Fortran Compiler is Portland Group, Cray"
- CPRDEF="PGI"
- SYSDEF="CNLINUX"
- if test -z "$REAL8"; then
- REAL8="-r8"
- fi
- if test -z "$BIT64"; then
- BIT64="-pc 64"
- fi
- if test "$FCFLAGS" = "$DEFFCFLAGS"; then
- FCFLAGS=""
- fi
- if test -z "$ENDIAN"; then
- ENDIAN="-byteswapio"
- fi
- if test -z "$OPT"; then
- OPT="-O2"
- fi
- if test -z "$DEBUG"; then
- DEBUG="-g"
- fi
- fi
- elif echo $FC | grep ifort >/dev/null 2>&1; then
- echo "Fortran Compiler is Intel ifort"
- CPRDEF="INTEL"
- if test -z "$REAL8"; then
- REAL8="-r8"
- fi
- if test "$FCFLAGS" = "$DEFFCFLAGS"; then
- FCFLAGS="-w -ftz"
- fi
- if test -z "$PROGFCFLAGS"; then
- PROGFCFLAGS="-assume byterecl"
- fi
- if test -z "$ENDIAN"; then
- ENDIAN="-convert big_endian"
- fi
- if test -z "$OPT"; then
- OPT="-O2"
- fi
- if test -z "$DEBUG"; then
- DEBUG="-g"
- fi
- elif echo $FC | grep g95 >/dev/null 2>&1; then
- echo "Fortran Compiler is GNU"
- CPRDEF="GNU"
- elif echo $FC | grep gfortran >/dev/null 2>&1; then
- echo "Fortran Compiler is GNU"
- CPRDEF="GNU"
- # For gfortran, default flags are different
- if test "$FCFLAGS" = "-g -O2"; then
- FCFLAGS=""
- fi
- if test -z "$DEBUG"; then
- DEBUG="-g"
- fi
- if test -z "$OPT"; then
- OPT="-O2"
- fi
- ###########################################################
- # the compiler flags below have not been verified recently
- ###########################################################
- elif echo $FC | grep frt >/dev/null 2>&1; then
- echo "Fortran Compiler is UXP/V"
- echo "Suggested additional vectorization flags: -Wv,-s5,-t3,-noalias,-ilfunc,-md"
- CPRDEF="FUJITSU"
- if test -z "$F90FLAGS"; then
- F90FLAGS="-Am -X9"
- fi
- if test -z "$BIT64"; then
- BIT64="-KA64"
- fi
- if test -z "$REAL8"; then
- REAL8="-Ad"
- fi
- elif echo $ac_fc_version_output | grep Lahey >/dev/null 2>&1; then
- echo "Fortran Compiler is Lahey"
- CPRDEF="LAHEY"
- elif echo $FC | grep ifc >/dev/null 2>&1; then
- echo "Fortran Compiler is Intel 7.x or earlier"
- echo "Intel ifc compiler must set the environment variable F_UFMTENDIAN=big to do endian conversion"
- CPRDEF="INTEL"
- if test -z "$REAL8"; then
- REAL8="-r8"
- fi
- if test -z "$F90FLAGS"; then
- F90FLAGS="-w"
- fi
- if test -z "$OPT"; then
- OPT="-O2"
- fi
- elif echo $FC | grep efc >/dev/null 2>&1; then
- echo "Fortran Compiler is Intel 7.x or earlier for IA-64"
- echo "Intel efc compiler must set the environment variable F_UFMTENDIAN=big to do endian conversion"
- CPRDEF="INTEL"
- if test -z "$REAL8"; then
- REAL8="-r8"
- fi
- if test -z "$F90FLAGS"; then
- F90FLAGS="-w -ftz"
- fi
- if test -z "$OPT"; then
- OPT="-O2"
- fi
- elif echo $FC | grep pathf90 >/dev/null 2>&1; then
- echo "Fortran Compiler is PathScale"
- CPRDEF="PATHSC"
- if test -z "$REAL8"; then
- REAL8="-r8"
- fi
- if test -z "$BIT64"; then
- BIT64="-m64"
- fi
- if test -z "$OPT"; then
- OPT="-O2"
- fi
- elif echo $ac_fc_version_output | grep -i nag >/dev/null 2>&1; then
- echo "Fortran Compiler is NAG"
- CPRDEF="NAG"
- if test -z "$F90FLAGS"; then
- F90FLAGS="-dusty -kind=byte"
- fi
- if test -z "$OPT"; then
- OPT="-O2"
- fi
- elif echo $ac_fc_version_output | grep -i absoft >/dev/null 2>&1; then
- echo "Fortran Compiler is Absoft"
- CPRDEF="ABSOFT"
- if test -z "$REAL8"; then
- REAL8="-N113"
- fi
- if test -z "$INCLUDEFLAG"; then
- INCLUDEFLAG="-p"
- fi
- if test -z "$OPT"; then
- OPT="-O2"
- fi
- elif echo $ac_fc_version_output | grep -i workshop >/dev/null 2>&1; then
- echo "Fortran Compiler is Workshop"
- CPRDEF="WORKSHOP"
- if test -z "$INCLUDEFLAG"; then
- INCLUDEFLAG="-M"
- fi
- elif echo $ac_fc_version_output | grep -i mipspro >/dev/null 2>&1; then
- echo "Fortran Compiler is MIPSPro"
- CPRDEF="MIPSPRO"
- EXTRACFLAGS="-64"
- if test -z "$OPT"; then
- OPT="-O3"
- fi
- if test -z "$REAL8"; then
- REAL8="-r8"
- fi
- if test -z "$BIT64"; then
- BIT64="-64"
- fi
- elif echo $ac_fc_version_output | grep -i compaq >/dev/null 2>&1; then
- echo "Fortran Compiler is Compaq"
- CPRDEF="COMPAQ"
- MPILIBS="$MPILIBS -lelan"
- if test -z "$OPT"; then
- OPT="-fast"
- fi
- if test -z "$REAL8"; then
- REAL8="-real_size 64"
- fi
- if test -z "$ENDIAN"; then
- ENDIAN="-convert big_endian"
- fi
- # Compaq Fortran changed its name to HP Fortran.
- # Lets support both versions for now.
- elif echo $ac_fc_version_output | grep HP >/dev/null 2>&1; then
- echo "Fortran Compiler is HP"
- CPRDEF="COMPAQ"
- MPILIBS="$MPILIBS -lelan"
- if test -z "$OPT"; then
- OPT="-fast"
- fi
- if test -z "$REAL8"; then
- REAL8="-real_size 64"
- fi
- if test -z "$ENDIAN"; then
- ENDIAN="-convert big_endian"
- fi
- elif echo $ac_fc_version_output | grep -i sx >/dev/null 2>&1; then
- echo "Fortran Compiler is SX"
- CPRDEF="SX"
- if test -z "$F90FLAGS"; then
- F90FLAGS="-EP -Wf'-pvctl noassoc'"
- fi
- if test -z "$OPT"; then
- OPT="-Chopt"
- fi
- fi
- ###########################################################
- # END of compiler-specific flag setting
- ###########################################################
- CPPDEFS="$CPPDEFS -DSYS$SYSDEF -DCPR$CPRDEF"
- if test -n "$SRKDEF"; then
- CPPDEFS="$CPPDEFS -D$SRKDEF"
- fi
- # IF DEBUGGING ENABLED, DISABLE OPTIMIZATION FLAG
- if test "$DEBUGGING" = "ENABLED"; then
- OPT=""
- else
- DEBUG=""
- fi
- # SET HARDCODED VARIABLES AS A LAST RESORT
- # ALWAYS ENABLE CRULE IN MAKEFILE
- AC_SUBST(CRULE,[.c.o])
- AC_SUBST(CPPDEFS)
- # INCLUDE FLAG IF NOT ALREADY SET IS MOST LIKELY -I
- if test -z "$INCLUDEFLAG"; then
- INCLUDEFLAG="-I"
- fi
- # ARCHIVE COMMAND SIMILAR ACROSS ALL PLATFORMS
- if test -z "$AR"; then
- AR="ar cq"
- fi
- echo
- echo Output Variables: {CC=$CC} {CFLAGS=$CFLAGS} \
- {FC=$FC} {FCFLAGS=$FCFLAGS} {PROGFCFLAGS=$PROGFCFLAGS}\
- {CPPDEFS=$CPPDEFS} {OPT=$OPT} {DEBUG=$DEBUG} {REAL8=$REAL8} \
- {BIT64=$BIT64} {ENDIAN=$ENDIAN} {MPIFC=$MPIFC} \
- {MPILIBS=$MPILIBS} {MPIHEADER=$MPIHEADER} \
- {INCLUDEFLAG=$INCLUDEFLAG} {INCLUDEPATH=$INCLUDEPATH} \
- {AR=$AR} {BABELROOT=$BABELROOT} {COMPILER_ROOT=$COMPILER_ROOT} \
- {PYTHON=$PYTHON} {PYTHONOPTS=$PYTHONOPTS} {FORT_SIZE=$FORT_SIZE} {prefix=$prefix} \
- {SRCDIR=$SRCDIR} {FC_DEFINE=$FC_DEFINE}
- echo
- AC_OUTPUT
- echo Please check the Makefile.conf
- echo Have a nice day!
- # test -z is true for empty strings
- # test -n is true for non-empty strings
|