Wrap all RTS functions exposed to AMPI programs in special macros
[charm.git] / src / libs / ck-libs / ampi / Makefile
blob9e840373556c2f4aa7a29ff76d3269535f6f1db7
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 \
12 compat_ampicpp.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)
25 endif
27 ifeq ($(CMK_AMPI_WITH_ROMIO),true)
28 ROMIO=$(ROMIOLIB).a
29 endif
31 .SUFFIXES:
32 .SUFFIXES: .C .o
34 .C.o:
35 $(CHARMC) -c $<
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"
43 cd romio && \
44 MPI_LIB="" \
45 CFLAGS="$(OPTS) -ampi-romio-configure" \
46 FFLAGS="$(OPTS) -ampi-romio-configure" \
47 F77="$(CDIR)/bin/ampif90" \
48 CC="$(CDIR)/bin/ampicc" \
49 ./configure \
50 --disable-aio \
51 --enable-f77=`test -f $(DESTF) && echo yes || echo no` \
52 --srcdir=`pwd`
54 cp romio/include/mpio.h romio/include/mpiof.h romio/include/mpio_functions.h $(CDIR)/include
55 $(MAKE) -C romio
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"
63 AMPI: $(DEST)
64 @echo "AMPI built successfully"
66 AMPIF: $(DESTF)
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 $@
83 headers: $(HEADERS)
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
101 touch headers
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)
124 $(CHARMC) -c ampi.C
126 ampif.o: ampif.C $(HEADDEP)
127 $(CHARMC) -c ampif.C
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
139 $(CHARMC) ampi.ci
141 ddt.o: ddt.C ddt.h $(HEADDEP)
143 clean:
144 rm -fr *.o *~ *.decl.h *.def.h gmon.out $(DEST) $(DESTF) $(COMPATLIB) conv-host charmrun headers *.mod
145 - cd romio && $(MAKE) clean