Newsgroups: comp.parallel.mpi
From: bismuti@dirac.scri.fsu.edu (Peter Bismuti)
Subject: MPI and makefiles
Organization: Florida State University
Date: 29 Sep 1997 14:57:20 GMT
Message-ID: <60ofkg$7q2$1@news.fsu.edu>

Hi, I'm new to this newsgroup.  I'm just about ready to fire up MPI but
I'm having trouble with the makefile.  I have a working makefile 
where all the source code is in one file, but my source code is spread
out between many files and directories.  

If someone could please take a glance at my makefile and give me a hint
what may be wrong, and/or send me a working makefile where source code 
is spread out in multiplice files/directories, I would really appreciate it.

			thanks in advance



Note:  only one file contains any MPI subroutines and that is driver.f
(bottom of makefile) which only makes the call MPI_init.  

________________makefile.mpi ____________________________________________

OBJS =  global_constants.o \
        complex_definition.o \
        EQUATION/equation_type.o \
        MORTAR/mortar_definition.o \
        MATRIX/matrix_list.o \
	domain_definition.o \
        INPUT/input.o \
        FEM/fem_definition.o \
        TAG/tag_definition.o \
        NODE/node_definition.o \
        NODE/node_global_data.o \
        NODE/node_library.o \
        NODE/node_tree.o \
        NODE/node_geometry.o \
        MATRIX/eigenvalues.o \
        MATRIX/eigenvalue_routines.o \
	RUNGE_KUTTA/runge_kutta.o \
        linear_euler.o \
        EQUATION/equation_interface.o \
        prolongation.o \
        ZONE/zone_definition.o \
        GRID/basic_library.o \
        GRID/geometry_library.o \
        GRID/compute_grid.o \
        set_points.o \
        MORTAR/mortar_global_data.o \
        MORTAR/mortar_operations.o \
        MORTAR/mortar_library.o \
        MORTAR/mortar_connection_routines.o \
        MORTAR/mortar_projection_routines.o \
        ZONE/zone_list.o \
        GRID/read_geometry_fem_1d.o \
        MATRIX/compute_matrices.o \
        driver.o

SRCS =  global_constants.f \
        complex_definition.f \
        EQUATION/equation_type.f \
        MORTAR/mortar_definition.f \
        MATRIX/matrix_list.f \
	domain_definition.f \
        INPUT/input.f \
        FEM/fem_definition.f \
        TAG/tag_definition.f \
        NODE/node_definition.f \
        NODE/node_global_data.f \
        NODE/node_library.f \
        NODE/node_tree.f \
        NODE/node_geometry.f \
        MATRIX/eigenvalues.f \
        MATRIX/eigenvalue_routines.f \
	RUNGE_KUTTA/runge_kutta.f \
        linear_euler.f \
        EQUATION/equation_interface.f \
        prolongation.f \
        ZONE/zone_definition.f \
        GRID/basic_library.f \
        GRID/geometry_library.f \
        GRID/compute_grid.f \
        set_points.f \
        MORTAR/mortar_global_data.f \
        MORTAR/mortar_operations.f \
        MORTAR/mortar_library.f \
        MORTAR/mortar_connection_routines.f \
        MORTAR/mortar_projection_routines.f \
        ZONE/zone_list.f \
        GRID/read_geometry_fem_1d.f \
        MATRIX/compute_matrices.f \
        MATRIX/eigenvalues.f \
        MATRIX/eigenvalue_routines.f \
        driver.f


ARCH        = rs6000
COMM        = ch_p4
BOPT        =
P4_DIR      =
TOOLS_DIR   =
MPIR_HOME   = /usr/local/mpi
CC          = xlc
CLINKER     = $(CC)
CCC         =
CCLINKER    = $(CCC)
F90         = xlf90
FLINKER     = $(F90)
AR          = ar crl
RANLIB      = ranlib
PROFILING   = $(PMPILIB)
MPE_LIBS    =
MPE_DIR     =
LIB_PATH    = -L/usr/local/mpi/lib/rs6000/ch_p4
FLIB_PATH   = -L/usr/local/mpi/lib/rs6000/ch_p4
LIB_LIST    = -lmpi -lbsd
MPE_GRAPH   =
#
INCLUDE_DIR =  -I$(MPIR_HOME)/include -I$(MPE_DIR)
DEVICE      = ch_p4

FLAGS  =  -D_ALL_SOURCE -DFORTRANNOUNDERSCORE   -DHAVE_STDLIB_H=1 -DMALLOC_RET_VOID=1 $(OPTFLAGS) $(INCLUDE_DIR) -DMPI_$(ARCH) $(MPE_GRAPH)
CCFLAGS = $(CFLAGS)
MPILIB = /usr/local/mpi/lib/rs6000/ch_p4/libmpi.a
MPIPPLIB = /usr/local/mpi/lib/rs6000/ch_p4/libmpi++.a
LIBS = $(LIB_PATH) $(LIB_LIST)
FLIBS = $(FLIB_PATH) $(LIB_LIST)
LIBSPP = $(MPIPPLIB) $(LIBS)
EXECS = 1d 
default: $(EXECS)

FFLAGS=  -C -g -gline -Nl30
F90=xlf90
F90FLAGS=  -C -g -gline -Nl100
FC=xlf90

1d : ${OBJS}
#       ${xlf90} -o $@ ${OBJS}
	xlf90 -o $@ ${OBJS}

SUFFIXES:      $(SUFFIXES) .f

f.o:
	$(F90) $(F90FLAGS) -c $<

global_constants.o: global_constants.f
	xlf90 -c -C -g -gline global_constants.f -o global_constants.o

complex_definition.o: complex_definition.f
	xlf90 -c -C -g -gline complex_definition.f -o complex_definition.o

EQUATION/equation_type.o : EQUATION/equation_type.f
	xlf90 -c -C -g -gline EQUATION/equation_type.f -o EQUATION/equation_type.o

prolongation.o : prolongation.f
	xlf90 -c -C -g -gline prolongation.f

MORTAR/mortar_definition.o: MORTAR/mortar_definition.f
	xlf90 -c -C -g -gline MORTAR/mortar_definition.f -o MORTAR/mortar_definition.o

MATRIX/matrix_list.o : MATRIX/matrix_list.f
	xlf90 -c -C -g -gline MATRIX/matrix_list.f -o MATRIX/matrix_list.o

domain_definition.o: domain_definition.f
	xlf90 -c -C -g -gline domain_definition.f

INPUT/input.o : INPUT/input.f
	xlf90 -c -C -g -gline INPUT/input.f -o INPUT/input.o

FEM/fem_definition.o : FEM/fem_definition.f
	xlf90 -c -C -g -gline FEM/fem_definition.f  -o FEM/fem_definition.o 

TAG/tag_definition.o: TAG/tag_definition.f
	xlf90 -c -C -g -gline TAG/tag_definition.f -o TAG/tag_definition.o

NODE/node_definition.o : NODE/node_definition.f
	xlf90 -c -C -g -gline NODE/node_definition.f  -o NODE/node_definition.o 

NODE/node_global_data.o : NODE/node_global_data.f
	xlf90 -c -C -g -gline NODE/node_global_data.f  -o NODE/node_global_data.o 

NODE/node_library.o : NODE/node_library.f
	xlf90 -c -C -g -gline NODE/node_library.f  -o NODE/node_library.o 

NODE/node_tree.o : NODE/node_tree.f
	xlf90 -c -C -g -gline NODE/node_tree.f  -o NODE/node_tree.o 

NODE/node_geometry.o : NODE/node_geometry.f
	xlf90 -c -C -g -gline NODE/node_geometry.f  -o NODE/node_geometry.o 

MATRIX/eigenvalues.o : MATRIX/eigenvalues.f
	xlf   -c -C -g -gline MATRIX/eigenvalues.f -o MATRIX/eigenvalues.o

MATRIX/eigenvalue_routines.o : MATRIX/eigenvalue_routines.f
	xlf90 -c -C -g -gline MATRIX/eigenvalue_routines.f -o MATRIX/eigenvalue_routines.o

RUNGE_KUTTA/runge_kutta.o : RUNGE_KUTTA/runge_kutta.f
	xlf90 -c -C -g -gline RUNGE_KUTTA/runge_kutta.f -o RUNGE_KUTTA/runge_kutta.o

linear_euler.o : linear_euler.f
	xlf90 -c -C -g -gline linear_euler.f

EQUATION/equation_interface.o : EQUATION/equation_interface.f
	xlf90 -c -C -g -gline EQUATION/equation_interface.f -o EQUATION/equation_interface.o

ZONE/zone_definition.o : ZONE/zone_definition.f
	xlf90 -c -C -g -gline ZONE/zone_definition.f  -o ZONE/zone_definition.o 

GRID/basic_library.o : GRID/basic_library.f
	xlf90 -c -C -g -gline GRID/basic_library.f  -o GRID/basic_library.o 

GRID/geometry_library.o : GRID/geometry_library.f
	xlf90 -c -C -g -gline GRID/geometry_library.f  -o GRID/geometry_library.o 

GRID/compute_grid.o : GRID/compute_grid.f
	xlf90 -c -C -g -gline GRID/compute_grid.f  -o GRID/compute_grid.o 

set_points.o: set_points.f 
	xlf90 -c -C -g -gline set_points.f 

MORTAR/mortar_global_data.o: MORTAR/mortar_global_data.f
	xlf90 -c -C -g -gline MORTAR/mortar_global_data.f -o MORTAR/mortar_global_data.o

MORTAR/mortar_operations.o: MORTAR/mortar_operations.f
	xlf90 -c -C -g -gline  MORTAR/mortar_operations.f -o MORTAR/mortar_operations.o

MORTAR/mortar_library.o: MORTAR/mortar_library.f
	xlf90 -c -C -g -gline MORTAR/mortar_library.f -o MORTAR/mortar_library.o

MORTAR/mortar_connection_routines.o: MORTAR/mortar_connection_routines.f
	xlf90 -c -C -g -gline MORTAR/mortar_connection_routines.f -o MORTAR/mortar_connection_routines.o

MORTAR/mortar_projection_routines.o: MORTAR/mortar_projection_routines.f
	xlf90 -c -C -g -gline  MORTAR/mortar_projection_routines.f -o MORTAR/mortar_projection_routines.o

ZONE/zone_list.o : ZONE/zone_list.f
	xlf90 -c -C -g -gline ZONE/zone_list.f  -o ZONE/zone_list.o 

GRID/read_geometry_fem_1d.o : GRID/read_geometry_fem_1d.f
	xlf90 -c -C -g -gline GRID/read_geometry_fem_1d.f  -o GRID/read_geometry_fem_1d.o 

MATRIX/compute_matrices.o : MATRIX/compute_matrices.f
	xlf90 -c -C -g -gline MATRIX/compute_matrices.f -o MATRIX/compute_matrices.o

driver.o: driver.f 
	xlf90 -c -C -g -gline driver.f  -o driver.o $(FLIBS)

clean:
	rm -f 1d `find . -name '*.o' -print`
	rm -f core `find . -type -name 'core' -print`
	rm -f `find . -name '*.mod' -print`
 

