CC=g++
NVCC=nvcc
FLAGS=-g
CUDA=/usr/local/cuda
INCLUDES=-I$(CUDA)/include
LIBRARIES=-L$(CUDA)/lib64
CUFLAGS=-arch sm_20

pbmio: pbmio.c pbmio.h
	$(CC) $(FLAGS) $(INCLUDES) $(LIBRARIES) -c pbmio.c

cupbmio: cupbmio.cu cupbmio.h
	$(NVCC) $(FLAGS) $(INCLUDES) $(LIBRARIES) -c cupbmio.cu

tcupbmio: cupbmio tcupbmio.cu pbmio
	$(CC) $(FLAGS) $(INCLUDES) $(LIBRARIES) $(CUFLAGS) -lnetpbm -lcudart  -o tcupbmio \
	pbmio.o cupbmio.o tcupbmio.c

cuicm: cupbmio cuicm.cu
	$(NVCC) $(FLAGS) $(INCLUDES) $(LIBRARIES) $(CUFLAGS)  -lnetpbm -lcudart \
	-o cuicm cupbmio.o pbmio.o cuicm.cu

invert: pbmio invert.c
	$(CC) $(FLAGS) $(INCLUDES) $(LIBRARIES) -lnetpbm -o invert pbmio.o \
	invert.c

pinvert: pbmio pinvert.c
	$(CC) $(FLAGS) $(INCLUDES) $(LIBRARIES) -lpthread -lnetpbm -o pinvert \
	pbmio.o pinvert.c

cuinvert: pbmio cupbmio cuinvert.cu
	$(NVCC) $(FLAGS) $(INCLUDES) $(LIBRARIES) $(CUFLAGS)  -lnetpbm -lcudart \
	-o cuinvert cupbmio.o pbmio.o cuinvert.cu

icm: pbmio icm.c
	$(CC) $(FLAGS) $(INCLUDES) $(LIBRARIES) -lnetpbm -o icm pbmio.o icm.c

picm: pbmio picm.c
	$(CC) $(FLAGS) $(INCLUDES) $(LIBRARIES) -lnetpbm -lpthread -o picm \
	pbmio.o picm.c

error: pbmio error.c
	$(CC) $(FLAGS) $(INCLUDES) $(LIBRARIES) -lnetpbm -o error \
	pbmio.o error.c