# *************************************************************************
# *                                                                       *
# *  Copyright (c) 2002 Department of Computer Science,                   *
# *                     University College Dublin, Ireland.               *
# *                                                                       *
# *  All rights reserved. We assume no responsibility for the use         *
# *  or reliability of our software.                                      *
# *                                                                       *
# *************************************************************************
HMPI_HOME_DIR	= $(HMPI_HOME)
CC		= mpicc
CPP		= g++
CC_INCLUDES	= 	-I$(MPCHOME)/h \
			-I$(HMPI_HOME)/include
OPT		= -O2
LIBS		= $(MPCHOME)/lib/mpcrts.o $(MPCHOME)/lib/mpctopo.o -L$(HMPI_HOME)/lib -lhmpi -lm

all: homogeneous heterogeneous_non_ordered_sets_speeds_single_numbers heterogeneous_non_ordered_sets_speeds_functions_of_problem_size heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_bounds heterogeneous_non_ordered_sets_speeds_single_numbers_weighted_elements heterogeneous_ordered_sets_speeds_single_numbers heterogeneous_ordered_sets_speeds_functions_of_problem_size heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_bounds heterogeneous_ordered_sets_speeds_single_numbers_weighted_elements heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_with_bounds heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_no_processor_reordering

run: 
	./homogeneous 
	./heterogeneous_non_ordered_sets_speeds_single_numbers 
	./heterogeneous_non_ordered_sets_speeds_functions_of_problem_size 
	./heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_bounds 
	./heterogeneous_non_ordered_sets_speeds_single_numbers_weighted_elements 
	./heterogeneous_ordered_sets_speeds_single_numbers 
	./heterogeneous_ordered_sets_speeds_functions_of_problem_size 
	./heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_bounds 
	./heterogeneous_ordered_sets_speeds_single_numbers_weighted_elements 
	./heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements
	./heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_with_bounds
	./heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_no_processor_reordering
	./heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_no_processor_reordering_with_bounds
	./heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_processor_reordering
	./heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_processor_reordering_with_bounds

homogeneous:
	$(CC) $(OPT) $(CC_INCLUDES) -o homogeneous homogeneous.c $(LIBS)

heterogeneous_non_ordered_sets_speeds_single_numbers:
	$(CC) $(OPT) $(CC_INCLUDES) -o heterogeneous_non_ordered_sets_speeds_single_numbers heterogeneous_non_ordered_sets_speeds_single_numbers.c $(LIBS)

heterogeneous_non_ordered_sets_speeds_functions_of_problem_size:
	$(CC) $(OPT) $(CC_INCLUDES) -o heterogeneous_non_ordered_sets_speeds_functions_of_problem_size heterogeneous_non_ordered_sets_speeds_functions_of_problem_size.c $(LIBS)

heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_bounds:
	$(CC) $(OPT) $(CC_INCLUDES) -o heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_bounds heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_bounds.c $(LIBS)

heterogeneous_non_ordered_sets_speeds_single_numbers_weighted_elements:
	$(CC) $(OPT) $(CC_INCLUDES) -o heterogeneous_non_ordered_sets_speeds_single_numbers_weighted_elements heterogeneous_non_ordered_sets_speeds_single_numbers_weighted_elements.c $(LIBS)

heterogeneous_ordered_sets_speeds_single_numbers:
	$(CC) $(OPT) $(CC_INCLUDES) -o heterogeneous_ordered_sets_speeds_single_numbers heterogeneous_ordered_sets_speeds_single_numbers.c $(LIBS)

heterogeneous_ordered_sets_speeds_functions_of_problem_size:
	$(CC) $(OPT) $(CC_INCLUDES) -o heterogeneous_ordered_sets_speeds_functions_of_problem_size heterogeneous_ordered_sets_speeds_functions_of_problem_size.c  $(LIBS)

heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_bounds:
	$(CC) $(OPT) $(CC_INCLUDES) -o heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_bounds heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_bounds.c $(LIBS)

heterogeneous_ordered_sets_speeds_single_numbers_weighted_elements:
	$(CC) $(OPT) $(CC_INCLUDES) -o heterogeneous_ordered_sets_speeds_single_numbers_weighted_elements heterogeneous_ordered_sets_speeds_single_numbers_weighted_elements.c $(LIBS)

heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements:
	$(CC) $(OPT) $(CC_INCLUDES) -o heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements.c $(LIBS)

heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_with_bounds:
	$(CC) $(OPT) $(CC_INCLUDES) -o heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_with_bounds heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_with_bounds.c $(LIBS)

heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_no_processor_reordering:
	$(CC) $(OPT) $(CC_INCLUDES) -o heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_no_processor_reordering heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_no_processor_reordering.c $(LIBS)

heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_no_processor_reordering_with_bounds:
	$(CC) $(OPT) $(CC_INCLUDES) -o heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_no_processor_reordering_with_bounds heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_no_processor_reordering_with_bounds.c $(LIBS)

heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_processor_reordering:
	$(CC) $(OPT) $(CC_INCLUDES) -o heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_processor_reordering heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_processor_reordering.c $(LIBS)

heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_processor_reordering_with_bounds:
	$(CC) $(OPT) $(CC_INCLUDES) -o heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_processor_reordering_with_bounds heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_processor_reordering_with_bounds.c $(LIBS)

clean:
	-/bin/rm -f homogeneous heterogeneous_non_ordered_sets_speeds_single_numbers heterogeneous_non_ordered_sets_speeds_functions_of_problem_size heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_bounds heterogeneous_non_ordered_sets_speeds_single_numbers_weighted_elements heterogeneous_ordered_sets_speeds_single_numbers heterogeneous_ordered_sets_speeds_functions_of_problem_size heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_bounds heterogeneous_ordered_sets_speeds_single_numbers_weighted_elements heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements heterogeneous_non_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_with_bounds
	-/bin/rm -f ./heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_no_processor_reordering ./heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_no_processor_reordering_with_bounds ./heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_processor_reordering ./heterogeneous_ordered_sets_speeds_functions_of_problem_size_with_weighted_elements_processor_reordering_with_bounds
	-/bin/rm -f core* *.o

%.o: %.c
	$(CC) $(OPT) $(CC_INCLUDES) -c -o $@ $<
