1 CDIR
:= $(shell cd ..
/..
/..
/..
&& pwd
)
2 -include $(CDIR
)/include/conv-mach-opt.mak
3 CHARMC
=$(CDIR
)/bin
/charmc
$(OPTS
)
5 HEADERS
=ampi.h ampif.h mpio.h mpiof.h ampiimpl.h \
6 ampi-interoperate.h ampi.decl.h \
7 ampi_functions.h mpio_functions.h
8 HEADDEP
=$(HEADERS
) ampiimpl.h ddt.h \
9 ..
/tcharm
/tcharm.h ..
/tcharm
/tcharm_impl.h
10 COMPAT
=compat_ampius.o compat_ampifus.o compat_ampi.o \
11 compat_ampim.o compat_ampifm.o compat_ampicm.o \
13 OBJS
=ampi.o ampif.o ampiOneSided.o \
14 ampiMisc.o ddt.o mpich-alltoall.o ampi_mpix.o ampi_noimpl.o
16 AMPI_LIB
=libmoduleampi
17 AMPI_LIBDIR
=$(CDIR
)/lib
18 DEST
=$(AMPI_LIBDIR
)/$(AMPI_LIB
).a
19 DESTF
=$(AMPI_LIBDIR
)/$(AMPI_LIB
)f.a
20 COMPATLIB
=$(AMPI_LIBDIR
)/libampi-compat.a
21 ROMIOLIB
=$(AMPI_LIBDIR
)/libampiromio
23 ifeq ($(CMK_NO_BUILD_SHARED
),false
)
24 ROMIOLIBSHARED
=$(CDIR
)/lib_so
/libampiromio.
$(CMK_SHARED_SUF
)
27 ifeq ($(CMK_AMPI_WITH_ROMIO
),true
)
37 all: AMPI AMPIF
$(COMPATLIB
) $(ROMIO
)
39 # AMPI and AMPIF are order-only dependencies (|), i.e., no up-to-date check
40 # is done, in order to prevent ROMIO recompilation when AMPI changes.
41 $(ROMIO
): | AMPI AMPIF
42 @echo
"Building ROMIO"
45 CFLAGS
="$(OPTS) -ampi-romio-configure" \
46 FFLAGS
="$(OPTS) -ampi-romio-configure" \
47 F77
="$(CDIR)/bin/ampif90" \
48 CC
="$(CDIR)/bin/ampicc" \
51 --enable-f77
=`test -f $(DESTF) && echo yes || echo no` \
54 cp romio
/include/mpio.h romio
/include/mpiof.h romio
/include/mpio_functions.h
$(CDIR
)/include
56 cp romio
/lib
/libmpio.a
$@
57 if
[ -n
"$(ROMIOLIBSHARED)" ]; then \
58 echo
"Building dynamic ROMIO library: $(ROMIOLIBSHARED)"; \
59 find romio
/ -name \
*.o
-exec
$(CHARMC
) -o
$(ROMIOLIBSHARED
) {} + ; \
61 @echo
"ROMIO built successfully"
64 @echo
"AMPI built successfully"
67 @echo
"AMPIF built successfully"
69 $(DEST
): $(OBJS
) headers
70 $(CHARMC
) $(OBJS
) -o
$@
71 cp
$(AMPI_LIB
).dep
$(AMPI_LIBDIR
)/$(AMPI_LIB
).dep
73 $(DESTF
): $(OBJS
) headers
74 -$(CHARMC
) -c ampifimpl.f90
75 -$(CHARMC
) -c ampimod.f90
76 -$(CHARMC
) -cpmod ..
/..
/..
/..
/include mpi.M
77 -$(CHARMC
) $(OBJS
) ampifimpl.o ampimod.o
-o
$@
78 -cp
$(AMPI_LIB
)f.dep
$(AMPI_LIBDIR
)/$(AMPI_LIB
)f.dep
80 $(COMPATLIB
): $(COMPAT
)
81 $(CHARMC
) $(COMPAT
) -o
$@
84 cp
$(HEADERS
) $(CDIR
)/include/
86 # Put AMPI's mpi.h in a separate directory to support the MPI machine layer and MPI interop
87 mkdir
-p
$(CDIR
)/include/ampi
/
88 cp ampi.h
$(CDIR
)/include/ampi
/mpi.h
90 cp ampif.h
$(CDIR
)/include/mpif.h
91 cp ampiimpl.h
$(CDIR
)/include/ # For AMPI + Charm++ interop
92 cp ddt.h
$(CDIR
)/include/ # For AMPI + Charm++ interop
93 cp ampi-interoperate.h
$(CDIR
)/include/ # For AMPI + Charm++ interop
94 cp ampiCC
$(CDIR
)/bin
/ampicc
95 cp ampiCC
$(CDIR
)/bin
/ampiCC
96 cp ampiCC
$(CDIR
)/bin
/ampicxx
97 cp ampif77
$(CDIR
)/bin
/ampif77
98 cp ampif90
$(CDIR
)/bin
/ampif90
99 cp ampirun
$(CDIR
)/bin
/ampirun
100 cp nm_globals.sh
$(CDIR
)/bin
/nm_globals.sh
103 compat_ampius.o
: compat_ampius.C
105 compat_ampifus.o
: compat_ampifus.C
107 compat_ampim.o
: compat_ampim.C
109 compat_ampifm.o
: compat_ampifm.C
111 compat_ampicm.o
: compat_ampicm.C
113 compat_ampi.o
: compat_ampi.c
114 $(CHARMC
) -c compat_ampi.c
116 ampi_mpix.o
: ampi_mpix.C
$(HEADDEP
)
118 ampi_noimpl.o
: ampi_noimpl.C
$(HEADDEP
)
120 compat_ampicpp.o
: compat_ampicpp.C
121 $(CHARMC
) -c compat_ampicpp.C
123 ampi.o
: ampi.C
$(HEADDEP
)
126 ampif.o
: ampif.C
$(HEADDEP
)
129 ampiOneSided.o
: ampiOneSided.C ampiimpl.h
$(HEADDEP
)
130 $(CHARMC
) -c ampiOneSided.C
132 ampiMisc.o
: ampiMisc.C ampiimpl.h
$(HEADDEP
)
133 $(CHARMC
) -c ampiMisc.C
135 mpich-alltoall.o
: mpich-alltoall.C
$(HEADDEP
)
136 $(CHARMC
) -c mpich-alltoall.C
138 ampi.decl.h ampi.def.h
: ampi.ci
141 ddt.o
: ddt.C ddt.h
$(HEADDEP
)
144 rm -fr
*.o
*~
*.decl.h
*.def.h gmon.out
$(DEST
) $(DESTF
) $(COMPATLIB
) conv-host charmrun headers
*.mod
145 - cd romio
&& $(MAKE
) clean