summaryrefslogtreecommitdiff
path: root/lib/make/extras/MPI/MPICH
blob: 87f722823c4c616606124c6531f8e3d964bc45b1 (plain)
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
#! /bin/sh
# /*@@
#   @file      CUSTOM
#   @date      Wed Jul 21 13:27:07 1999
#   @author    Tom Goodale
#   @desc 
#   
#   @enddesc
#   @version $Header: /mnt/data2/cvs2svn/cvs-repositories/Cactus/lib/make/extras/MPI/MPICH,v 1.9 2000-06-15 13:57:22 tradke Exp $
# @@*/


echo "MPICH selected"

# MPICH is pretty configerable itself

# Find the directory.
if test -z "$MPICH_DIR" ; then
   echo "MPICH selected but no MPICH_DIR set... Checking some places"
   CCTK_Search MPICH_DIR "/usr /usr/local /usr/local/mpich /usr/local/packages/mpich /usr/local/apps/mpich" include/mpe.h
   if test -z "$MPICH_DIR" ; then
     if test -n "$MPICH_ARCH" ; then
       CCTK_Search MPICH_DIR "/usr/local/mpich/$MPICH_ARCH /usr/local/packages/mpich/$MPICH_ARCH /usr/local/apps/mpich/$MPICH_ARCH" include/mpe.h
       if test -z "$MPICH_DIR" ; then
         if test -n "$MPICH_DEVICE" ; then
           CCTK_Search MPICH_DIR "/usr/local/mpich/$MPICH_ARCH/$MPICH_DEVICE /usr/local/packages/mpich/$MPICH_ARCH/$MPICH_DEVICE /usr/local/apps/mpich/$MPICH_ARCH/$MPICH_DEVICE" include/mpe.h
           if test -z "$MPICH_DIR" ; then
             CCTK_Search MPICH_DIR "/usr/local/mpich/$MPICH_DEVICE /usr/local/packages/mpich/$MPICH_DEVICE /usr/local/apps/mpich/$MPICH_DEVICE" include/mpe.h
           fi
         fi
       fi
     else
       CCTK_Search MPICH_DIR "/usr/local/mpich/$MPICH_DEVICE /usr/local/packages/mpich/$MPICH_DEVICE /usr/local/apps/mpich/$MPICH_DEVICE" include/mpe.h

     fi
   fi 
   if test -z "$MPICH_DIR" ; then
       echo "Unable to locate the MPICH directory - please set MPICH_DIR"
       exit 2
   fi
fi

# Find the MPICH architecture

if test -z "$MPICH_ARCH" ; then 
  if test -x "$MPICH_DIR/bin/tarch" ; then
    MPICH_ARCH=`$MPICH_DIR/bin/tarch`
    echo "MPICH architecture is $MPICH_ARCH"
  else
    echo "Cannot execute $MPICH_DIR/bin/tarch"
    exit 2
  fi
fi

# Find the MPICH device - this isn't necessary for mpich-1.2.0

if test -d "$MPICH_DIR/build/$MPICH_ARCH" ; then
  if test -z "$MPICH_DEVICE" ; then
     echo "MPICH selected but no MPICH_DEVICE set... Checking for one"
     CCTK_Search MPICH_DEVICE "ch_p4 ch_shmem globus ch_gm" lib $MPICH_DIR/build/$MPICH_ARCH/$MPICH_DEVICE
      if test -z "$MPICH_DEVICE" ; then
         echo "Unable to determine the MPICH device - please set MPICH_DEVICE"
         exit 2
     fi
  fi
fi

# Work out MPICH version

if test -d "$MPICH_DIR/build/$MPICH_ARCH" ; then
  MPICH_LIB_DIR="$MPICH_DIR/build/$MPICH_ARCH/$MPICH_DEVICE/lib"
  MPICH_INC_DIRS="$MPICH_DIR/include $MPICH_DIR/build/$MPICH_ARCH/$MPICH_DEVICE/include"
else
  MPICH_LIB_DIR="$MPICH_DIR/lib"
  MPICH_INC_DIRS="$MPICH_DIR/include"
fi

# Select the device and any special options for it.

case "$MPICH_DEVICE" in
  globus)
   if test -z "$GLOBUS_LIB_DIR" ; then
      echo "GLOBUS selected, but GLOBUS_LIB_DIR not set !"
     exit 2
   fi
   MPICH_DEVICE_LIB_DIR="$GLOBUS_LIB_DIR"
   MPICH_DEVICE_LIBS="globus_duroc_bootstrap globus_duroc_control \
                      globus_duroc_runtime globus_duct_control \
                      globus_duct_runtime globus_gass_cache globus_gass_client \
                      globus_gass_file globus_gass_server \
                      globus_gass_server_ez globus_gram_client \
                      globus_gram_myjob globus_gss globus_gss_assist \
                      globus_hbm_client globus_hbm_datacollector globus_mp \
                      globus_nexus globus_rsl globus_utp globus_dc \
                      globus_common lber ldap ldif netperf"
   if test -n "`echo $GLOBUS_LIB_DIR | grep -i pthreads`" ; then
      MPICH_DEVICE_LIBS="$MPICH_DEVICE_LIBS pthread"
   fi
   ;;
 ch_gm)
   if test -z "$MYRINET_DIR" ; then
      echo "Myrinet device selected but no MYRINET_DIR set... Checking some places"
      CCTK_Search MYRINET_DIR "/usr /usr/local /usr/local/myrinet /usr/local/packages/myrinet /usr/local/apps/myrinet" lib/libgm.a
      if test -z "$MYRINET_DIR" ; then
         echo "Unable to locate the Myrinet directory - please set MYRINET_DIR"
         exit 2
      fi
   fi
   MPICH_DEVICE_LIB_DIR="$MYRINET_DIR/lib"
   MPICH_DEVICE_LIBS="gm"
   ;;
 *)
   MPICH_DEVICE_LIB_DIR=""
   MPICH_DEVICE_LIBS=""
   ;;
esac

# Work out what the MPICH library is called

if test -r "$MPICH_LIB_DIRS/libmpi.a" ; then
   MPICH_LIB=mpi
else
   MPICH_LIB=mpich
fi

# Finally set the library lines.

MPI_LIBS="$MPICH_LIB $MPICH_DEVICE_LIBS" 
MPI_LIB_DIRS="$MPICH_DEVICE_LIB_DIR $MPICH_LIB_DIR"
MPI_INC_DIRS="$MPICH_INC_DIRS"