srcdir = .

HYPRE_DIRS =\ utilities\ struct_matrix_vector\ struct_linear_solvers\ test

all:

@ \

for i in ${HYPRE_DIRS}; \ do \

if [ -d $$i ]; \ then \

echo "Making $$i ..."; \ (cd $$i; make); \

echo ""; \ fi; \

done

clean:

@ \

for i in ${HYPRE_DIRS}; \ do \

if [ -d $$i ]; \ then \

echo "Cleaning $$i ..."; \ (cd $$i; make clean); \

fi; \ done

veryclean: @ \

for i in ${HYPRE_DIRS}; \ do \

if [ -d $$i ]; \ then \

echo "Very-cleaning $$i ..."; \ (cd $$i; make veryclean); \

fi; \ done

3.9.1.1 Example Procedure 1

Go through the directories serially and have the make procedure within each directory be parallel.

For the purpose of this exercise we are only parallelizing the “make all” component. The “clean” and “veryclean” components can be parallelized in a similar fashion.

Modified makefile:

all:

@ \

for i ${HYPRE_DIRS}; \ do \

if [ -d $$i ]; \ then \

echo "Making $$i ..."; \

echo $(PREFIX) $(MAKE) $(MAKE_J) -C $$i; \ $(PREFIX) $(MAKE) $(MAKE_J) -C $$i; \

fi; \ done

3-12Developing Applications