CC=gcc CC_OMP=gcc -fopenmp CC_MPI=mpicc CC_CUDA=nvcc CFLAGS=-Wall -lm -std=c99 SRC=src BUILD=build BUILD_CUDA=build_cuda BIN=bin all: sequential mpi omp sse cuda sequential: config utils main ${CC} ${CFLAGS} \ ${BUILD}/config.o \ ${BUILD}/utils.o \ ${BUILD}/main.o \ ${SRC}/impl/sequential.c \ -o ${BIN}/jacobi_sequential cuda: config_cuda utils_cuda main_cuda ${CC_CUDA} \ ${BUILD_CUDA}/config.o \ ${BUILD_CUDA}/utils.o \ ${BUILD_CUDA}/main.o \ ${SRC}/impl/cuda.cu \ -o ${BIN}/jacobi_cuda sse: config utils main ${CC} ${CFLAGS} \ ${BUILD}/config.o \ ${BUILD}/utils.o \ ${BUILD}/main.o \ ${SRC}/impl/sse.c \ -o ${BIN}/jacobi_sse omp: config utils main ${CC_OMP} ${CFLAGS} \ ${BUILD}/config.o \ ${BUILD}/utils.o \ ${BUILD}/main.o \ ${SRC}/impl/omp.c \ -o ${BIN}/jacobi_omp mpi: config utils main_mpi ${CC_MPI} ${CFLAGS} \ ${BUILD}/config.o \ ${BUILD}/utils.o \ ${BUILD}/main_mpi.o \ ${SRC}/impl/mpi.c \ -o ${BIN}/jacobi_mpi main: ${SRC}/main/main.c ${CC_MPI} -c ${CFLAGS} \ ${SRC}/main/main.c \ -o ${BUILD}/main.o main_mpi: ${SRC}/main/main_mpi.c ${CC_MPI} -c ${CFLAGS} \ ${SRC}/main/main_mpi.c \ -o ${BUILD}/main_mpi.o main_cuda: ${SRC}/main/main.cu ${CC_CUDA} -c \ ${SRC}/main/main.cu \ -o ${BUILD_CUDA}/main.o config: ${SRC}/config.c ${CC_MPI} -c ${CFLAGS} \ ${SRC}/config.c \ -o ${BUILD}/config.o config_cuda: ${SRC}/config.cu ${CC_CUDA} -c \ ${SRC}/config.cu \ -o ${BUILD_CUDA}/config.o utils: ${SRC}/utils.c ${CC_MPI} -c ${CFLAGS} \ ${SRC}/utils.c \ -o ${BUILD}/utils.o utils_cuda: ${SRC}/utils.cu ${CC_CUDA} -c \ ${SRC}/utils.cu \ -o ${BUILD_CUDA}/utils.o .PHONY: clean clean: rm build/[^.]* build_cuda/[^.]* bin/[^.]*