AMPI: Add fsglobals (filesystem) and pipglobals (Process-in-Process) privatization...
[charm.git] / src / libs / ck-libs / ampi / Makefile
index 9e840373556c2f4aa7a29ff76d3269535f6f1db7..f3f4170075d1f9b63bce0d8ec61cc92e1c67e2bd 100644 (file)
@@ -20,6 +20,25 @@ DESTF=$(AMPI_LIBDIR)/$(AMPI_LIB)f.a
 COMPATLIB=$(AMPI_LIBDIR)/libampi-compat.a
 ROMIOLIB=$(AMPI_LIBDIR)/libampiromio
 
 COMPATLIB=$(AMPI_LIBDIR)/libampi-compat.a
 ROMIOLIB=$(AMPI_LIBDIR)/libampiromio
 
+AMPIFIMPL_OBJ=$(AMPI_LIBDIR)/ampifimpl.o
+AMPIMOD_OBJ=$(AMPI_LIBDIR)/ampimod.o
+
+FUNCPTR_SHIM_OBJ=$(AMPI_LIBDIR)/ampi_funcptr_shim.o
+FUNCPTR_FORTRAN_OBJ=$(AMPI_LIBDIR)/ampi_funcptr_fortran.o
+FUNCPTR_LOADER_OBJ=$(AMPI_LIBDIR)/ampi_funcptr_loader.o
+FUNCPTR_PIPGLOBALS_OBJ=$(AMPI_LIBDIR)/ampi_funcptr_pipglobals.o
+FUNCPTR_FSGLOBALS_OBJ=$(AMPI_LIBDIR)/ampi_funcptr_fsglobals.o
+
+AMPI_TARGET = $(DEST) $(FUNCPTR_SHIM_OBJ) $(FUNCPTR_LOADER_OBJ)
+AMPIF_TARGET = $(DESTF) $(FUNCPTR_FORTRAN_OBJ)
+
+ifeq (1,$(CMK_SUPPORTS_PIPGLOBALS))
+  AMPI_TARGET += $(FUNCPTR_PIPGLOBALS_OBJ)
+endif
+ifeq (1,$(CMK_SUPPORTS_FSGLOBALS))
+  AMPI_TARGET += $(FUNCPTR_FSGLOBALS_OBJ)
+endif
+
 ifeq ($(CMK_NO_BUILD_SHARED),false)
        ROMIOLIBSHARED=$(CDIR)/lib_so/libampiromio.$(CMK_SHARED_SUF)
 endif
 ifeq ($(CMK_NO_BUILD_SHARED),false)
        ROMIOLIBSHARED=$(CDIR)/lib_so/libampiromio.$(CMK_SHARED_SUF)
 endif
@@ -60,10 +79,10 @@ $(ROMIO): | AMPI AMPIF
        fi
        @echo "ROMIO built successfully"
 
        fi
        @echo "ROMIO built successfully"
 
-AMPI: $(DEST)
+AMPI: $(AMPI_TARGET)
        @echo "AMPI built successfully"
 
        @echo "AMPI built successfully"
 
-AMPIF: $(DESTF)
+AMPIF: $(AMPIF_TARGET)
        @echo "AMPIF built successfully"
 
 $(DEST): $(OBJS) headers
        @echo "AMPIF built successfully"
 
 $(DEST): $(OBJS) headers
@@ -71,10 +90,10 @@ $(DEST): $(OBJS) headers
        cp $(AMPI_LIB).dep $(AMPI_LIBDIR)/$(AMPI_LIB).dep
 
 $(DESTF): $(OBJS) headers
        cp $(AMPI_LIB).dep $(AMPI_LIBDIR)/$(AMPI_LIB).dep
 
 $(DESTF): $(OBJS) headers
-       -$(CHARMC) -c ampifimpl.f90
-       -$(CHARMC) -c ampimod.f90
+       -$(CHARMC) -c ampifimpl.f90 -o $(AMPIFIMPL_OBJ)
+       -$(CHARMC) -c ampimod.f90 -o $(AMPIMOD_OBJ)
        -$(CHARMC) -cpmod ../../../../include mpi.M
        -$(CHARMC) -cpmod ../../../../include mpi.M
-       -$(CHARMC) $(OBJS) ampifimpl.o ampimod.o -o $@
+       -$(CHARMC) $(OBJS) $(AMPIFIMPL_OBJ) $(AMPIMOD_OBJ) -o $@
        -cp $(AMPI_LIB)f.dep $(AMPI_LIBDIR)/$(AMPI_LIB)f.dep
 
 $(COMPATLIB): $(COMPAT)
        -cp $(AMPI_LIB)f.dep $(AMPI_LIBDIR)/$(AMPI_LIB)f.dep
 
 $(COMPATLIB): $(COMPAT)
@@ -140,6 +159,21 @@ ampi.decl.h ampi.def.h: ampi.ci
 
 ddt.o: ddt.C ddt.h $(HEADDEP)
 
 
 ddt.o: ddt.C ddt.h $(HEADDEP)
 
+$(FUNCPTR_SHIM_OBJ): ampi_funcptr_shim.C $(HEADDEP)
+       $(CHARMC) -ampi-funcptr-shim -c $< -o $@
+
+$(FUNCPTR_FORTRAN_OBJ): ampif.C $(HEADDEP)
+       -$(CHARMC) -ampi-funcptr-shim -c $< -o $@
+
+$(FUNCPTR_LOADER_OBJ): ampi_funcptr_loader.C $(HEADDEP)
+       $(CHARMC) -c $< -o $@
+
+$(FUNCPTR_FSGLOBALS_OBJ): ampi_funcptr_fsglobals.C $(HEADDEP)
+       $(CHARMC) -c $< -o $@
+
+$(FUNCPTR_PIPGLOBALS_OBJ): ampi_funcptr_pipglobals.C $(HEADDEP)
+       $(CHARMC) -c $< -o $@
+
 clean:
        rm -fr *.o *~ *.decl.h *.def.h gmon.out $(DEST) $(DESTF) $(COMPATLIB) conv-host charmrun headers *.mod
        - cd romio && $(MAKE) clean
 clean:
        rm -fr *.o *~ *.decl.h *.def.h gmon.out $(DEST) $(DESTF) $(COMPATLIB) conv-host charmrun headers *.mod
        - cd romio && $(MAKE) clean