DEBUG ?= 0
MPI ?= 1
MPI_HOME ?= 0
CC=gcc
CUDA_HOME ?= /usr/local/cuda
SHARP_HOME ?= /opt/mellanox/sharp
CFLAGS:= -I$(SHARP_HOME)/include/sharp -I./
LDFLAGS:= -L$(SHARP_HOME)/lib -lsharp -lsharp_coll

ifeq ($(CUDA), 1)
CFLAGS += -DHAVE_CUDA -I$(CUDA_HOME)/include
LDFLAGS += -L$(CUDA_HOME)/lib64 -lcudart
endif

ifeq ($(MPI), 1)
CFLAGS += -DMPI_SUPPORT
CC=mpicc
ifneq ($(MPI_HOME), 0)
CFLAGS += -I$(MPI_HOME)/include
LDFLAGS += -L$(MPI_HOME)/lib -L$(MPI_HOME)/lib64 -lmpi
endif
endif

ifeq ($(DEBUG), 0)
CFLAGS  += -O3
else
CFLAGS  += -O0 -g -ggdb3
endif


all: sharp_coll_test

sharp_coll_test: coll_test.o coll_test_ops.o coll_test.h
	$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS)

%.o: %.c
	$(CC) $(CFLAGS) $(LDFLAGS) -c $< -o $@

clean:
	rm -f *.o sharp_coll_test
