build: fix travis MPI/SMP build
[charm.git] / src / libs / ck-libs / ampi / Makefile
blobf3f4170075d1f9b63bce0d8ec61cc92e1c67e2bd
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 AMPIFIMPL_OBJ=$(AMPI_LIBDIR)/ampifimpl.o
24 AMPIMOD_OBJ=$(AMPI_LIBDIR)/ampimod.o
26 FUNCPTR_SHIM_OBJ=$(AMPI_LIBDIR)/ampi_funcptr_shim.o
27 FUNCPTR_FORTRAN_OBJ=$(AMPI_LIBDIR)/ampi_funcptr_fortran.o
28 FUNCPTR_LOADER_OBJ=$(AMPI_LIBDIR)/ampi_funcptr_loader.o
29 FUNCPTR_PIPGLOBALS_OBJ=$(AMPI_LIBDIR)/ampi_funcptr_pipglobals.o
30 FUNCPTR_FSGLOBALS_OBJ=$(AMPI_LIBDIR)/ampi_funcptr_fsglobals.o
32 AMPI_TARGET = $(DEST) $(FUNCPTR_SHIM_OBJ) $(FUNCPTR_LOADER_OBJ)
33 AMPIF_TARGET = $(DESTF) $(FUNCPTR_FORTRAN_OBJ)
35 ifeq (1,$(CMK_SUPPORTS_PIPGLOBALS))
36 AMPI_TARGET += $(FUNCPTR_PIPGLOBALS_OBJ)
37 endif
38 ifeq (1,$(CMK_SUPPORTS_FSGLOBALS))
39 AMPI_TARGET += $(FUNCPTR_FSGLOBALS_OBJ)
40 endif
42 ifeq ($(CMK_NO_BUILD_SHARED),false)
43 ROMIOLIBSHARED=$(CDIR)/lib_so/libampiromio.$(CMK_SHARED_SUF)
44 endif
46 ifeq ($(CMK_AMPI_WITH_ROMIO),true)
47 ROMIO=$(ROMIOLIB).a
48 endif
50 .SUFFIXES:
51 .SUFFIXES: .C .o
53 .C.o:
54 $(CHARMC) -c $<
56 all: AMPI AMPIF $(COMPATLIB) $(ROMIO)
58 # AMPI and AMPIF are order-only dependencies (|), i.e., no up-to-date check
59 # is done, in order to prevent ROMIO recompilation when AMPI changes.
60 $(ROMIO): | AMPI AMPIF
61 @echo "Building ROMIO"
62 cd romio && \
63 MPI_LIB="" \
64 CFLAGS="$(OPTS) -ampi-romio-configure" \
65 FFLAGS="$(OPTS) -ampi-romio-configure" \
66 F77="$(CDIR)/bin/ampif90" \
67 CC="$(CDIR)/bin/ampicc" \
68 ./configure \
69 --disable-aio \
70 --enable-f77=`test -f $(DESTF) && echo yes || echo no` \
71 --srcdir=`pwd`
73 cp romio/include/mpio.h romio/include/mpiof.h romio/include/mpio_functions.h $(CDIR)/include
74 $(MAKE) -C romio
75 cp romio/lib/libmpio.a $@
76 if [ -n "$(ROMIOLIBSHARED)" ]; then \
77 echo "Building dynamic ROMIO library: $(ROMIOLIBSHARED)"; \
78 find romio/ -name \*.o -exec $(CHARMC) -o $(ROMIOLIBSHARED) {} + ; \
80 @echo "ROMIO built successfully"
82 AMPI: $(AMPI_TARGET)
83 @echo "AMPI built successfully"
85 AMPIF: $(AMPIF_TARGET)
86 @echo "AMPIF built successfully"
88 $(DEST): $(OBJS) headers
89 $(CHARMC) $(OBJS) -o $@
90 cp $(AMPI_LIB).dep $(AMPI_LIBDIR)/$(AMPI_LIB).dep
92 $(DESTF): $(OBJS) headers
93 -$(CHARMC) -c ampifimpl.f90 -o $(AMPIFIMPL_OBJ)
94 -$(CHARMC) -c ampimod.f90 -o $(AMPIMOD_OBJ)
95 -$(CHARMC) -cpmod ../../../../include mpi.M
96 -$(CHARMC) $(OBJS) $(AMPIFIMPL_OBJ) $(AMPIMOD_OBJ) -o $@
97 -cp $(AMPI_LIB)f.dep $(AMPI_LIBDIR)/$(AMPI_LIB)f.dep
99 $(COMPATLIB): $(COMPAT)
100 $(CHARMC) $(COMPAT) -o $@
102 headers: $(HEADERS)
103 cp $(HEADERS) $(CDIR)/include/
105 # Put AMPI's mpi.h in a separate directory to support the MPI machine layer and MPI interop
106 mkdir -p $(CDIR)/include/ampi/
107 cp ampi.h $(CDIR)/include/ampi/mpi.h
109 cp ampif.h $(CDIR)/include/mpif.h
110 cp ampiimpl.h $(CDIR)/include/ # For AMPI + Charm++ interop
111 cp ddt.h $(CDIR)/include/ # For AMPI + Charm++ interop
112 cp ampi-interoperate.h $(CDIR)/include/ # For AMPI + Charm++ interop
113 cp ampiCC $(CDIR)/bin/ampicc
114 cp ampiCC $(CDIR)/bin/ampiCC
115 cp ampiCC $(CDIR)/bin/ampicxx
116 cp ampif77 $(CDIR)/bin/ampif77
117 cp ampif90 $(CDIR)/bin/ampif90
118 cp ampirun $(CDIR)/bin/ampirun
119 cp nm_globals.sh $(CDIR)/bin/nm_globals.sh
120 touch headers
122 compat_ampius.o: compat_ampius.C
124 compat_ampifus.o: compat_ampifus.C
126 compat_ampim.o: compat_ampim.C
128 compat_ampifm.o: compat_ampifm.C
130 compat_ampicm.o: compat_ampicm.C
132 compat_ampi.o: compat_ampi.c
133 $(CHARMC) -c compat_ampi.c
135 ampi_mpix.o: ampi_mpix.C $(HEADDEP)
137 ampi_noimpl.o: ampi_noimpl.C $(HEADDEP)
139 compat_ampicpp.o: compat_ampicpp.C
140 $(CHARMC) -c compat_ampicpp.C
142 ampi.o: ampi.C $(HEADDEP)
143 $(CHARMC) -c ampi.C
145 ampif.o: ampif.C $(HEADDEP)
146 $(CHARMC) -c ampif.C
148 ampiOneSided.o: ampiOneSided.C ampiimpl.h $(HEADDEP)
149 $(CHARMC) -c ampiOneSided.C
151 ampiMisc.o: ampiMisc.C ampiimpl.h $(HEADDEP)
152 $(CHARMC) -c ampiMisc.C
154 mpich-alltoall.o: mpich-alltoall.C $(HEADDEP)
155 $(CHARMC) -c mpich-alltoall.C
157 ampi.decl.h ampi.def.h: ampi.ci
158 $(CHARMC) ampi.ci
160 ddt.o: ddt.C ddt.h $(HEADDEP)
162 $(FUNCPTR_SHIM_OBJ): ampi_funcptr_shim.C $(HEADDEP)
163 $(CHARMC) -ampi-funcptr-shim -c $< -o $@
165 $(FUNCPTR_FORTRAN_OBJ): ampif.C $(HEADDEP)
166 -$(CHARMC) -ampi-funcptr-shim -c $< -o $@
168 $(FUNCPTR_LOADER_OBJ): ampi_funcptr_loader.C $(HEADDEP)
169 $(CHARMC) -c $< -o $@
171 $(FUNCPTR_FSGLOBALS_OBJ): ampi_funcptr_fsglobals.C $(HEADDEP)
172 $(CHARMC) -c $< -o $@
174 $(FUNCPTR_PIPGLOBALS_OBJ): ampi_funcptr_pipglobals.C $(HEADDEP)
175 $(CHARMC) -c $< -o $@
177 clean:
178 rm -fr *.o *~ *.decl.h *.def.h gmon.out $(DEST) $(DESTF) $(COMPATLIB) conv-host charmrun headers *.mod
179 - cd romio && $(MAKE) clean