ROMIO: Fix configure step portably
[charm.git] / src / libs / ck-libs / ampi / ampiCC
1 #!/bin/sh
2 CHARMBIN=`dirname $0`
3
4 [ -z "$AMPICC_MODE" ] && AMPICC_MODE='ampi'
5 STANDALONE=''
6 ROMIO_CONFIGURE=''
7 MPITEST=''
8
9 ARGS=''
10
11 processArgs() {
12 while [ ! $# -eq 0 ]
13 do
14   arg="$1"
15   case "$arg" in
16   -show)
17      echo "charmc"
18      exit 0
19      ;;
20   -standalone)
21      STANDALONE='true'
22      ;;
23
24   # These arguments manage compilation of ROMIO's configure tests.
25   # Simple environment tests will be compiled as standalone binaries,
26   # while MPI tests will be compiled with AMPI.
27   -ampi-romio-configure) # Strictly for internal use.
28      ROMIO_CONFIGURE='true'
29      ;;
30   mpitest*) # mpitest.c, mpitest1.c, mpitest.f, etc
31      ARGS="$ARGS \"$arg\""
32      MPITEST='true'
33      ;;
34
35   *)
36      ARGS="$ARGS \"$arg\""
37      ;;
38   esac
39   shift
40 done
41 }
42
43 eval processArgs "$@"
44
45 AMPICC_EXTRA_OPTS=''
46
47 if test "$AMPICC_MODE" = 'ampi'
48 then
49   charmarch=$(cat $CHARMBIN/../tmp/.gdir)
50
51   if test "$charmarch" = "mpi"
52   then
53     dirName=ampicc.inc.$$
54     mkdir $dirName
55     cp -n $CHARMBIN/../include/mpi.h $dirName/mpi.h   2>/dev/null
56     AMPICC_EXTRA_OPTS="$AMPICC_EXTRA_OPTS -I./$dirName"
57   fi
58 fi
59
60 [ -n "$ROMIO_CONFIGURE" -a -z "$MPITEST" ] && STANDALONE='true'
61
62 [ -n "$STANDALONE" ] && ARGS="$ARGS -standalone"
63
64 [ -f $CHARMBIN/../lib/libampiromio.a -a -z "$STANDALONE" -a -z "$ROMIO_CONFIGURE" ] && ROMIO='-lampiromio'
65
66 $CHARMBIN/charmc -language $AMPICC_MODE -default-to-aout $AMPICC_EXTRA_OPTS $ARGS $ROMIO
67 status=$?
68
69 if test "$AMPICC_MODE" = 'ampi'
70 then
71   if test "$charmarch" = "mpi"
72   then
73     /bin/rm -f $dirName/mpi.h 2>/dev/null
74     rmdir $dirName
75   fi
76 fi
77
78 # Copy ampirun, but do not overwrite it if it already exists.
79 [ $status -eq 0 ] && cp -n $CHARMBIN/ampirun .
80
81 exit $status