include Makefile.inc
CPPFLAGS=-fopenmp -march=native -O3 -Wall -Werror -fpic -std=c++11
INC_DIR=-I./include
LDLIBS_APP=-L./lib -ldenoise -lgomp -lpthread -ldl
LDLIBS_LIB=-lgomp -lpthread -ldl

all: test_denoise

test_denoise: src/test_denoise.cpp lib/libdenoise.so include/denoise/denoise_opencv.h include/denoise/denoise_eigen.h include/denoise/denoise_arma.h include/benchmark.h
	@echo Compiling App Test $@
	@sleep 0.1
	@touch $@
	@g++ $(OPENCV_FLAGS) src/test_denoise.cpp $(OPENCV_LIB) -o $@ $(INC_DIR) $(LDLIBS_APP) $(CPPFLAGS)
	@rm -f denoise_*.o
	@chmod +x test

lib/libdenoise.so: lib denoise_opencv.o denoise_eigen.o denoise_arma.o
	@echo Creating shared library $@
	@sleep 0.1
	@touch $@
	@g++ -shared -o $@ denoise_opencv.o denoise_eigen.o denoise_arma.o -lc

lib:
	@mkdir lib

denoise_opencv.o: src/denoise_opencv.cpp
	@echo Compiling OpenCV Module $@
	@sleep 0.1
	@touch $@
	@g++ -g -c $(OPENCV_FLAGS) src/denoise_opencv.cpp $(OPENCV_LIB) -o $@ $(LDLIBS_LIB) $(CPPFLAGS)

denoise_eigen.o: src/denoise_eigen.cpp
	@echo Compiling Eigen Module $@
	@sleep 0.1
	@touch $@
	@g++ -g -c $(OPENCV_FLAGS) src/denoise_eigen.cpp $(OPENCV_LIB) -o $@ $(LDLIBS_LIB) $(EIGEN_INC) $(CPPFLAGS)

denoise_arma.o: src/denoise_arma.cpp
	@echo Compiling Armadillo Module $@
	@sleep 0.1
	@touch $@
	@g++ -g -c $(OPENCV_FLAGS) src/denoise_arma.cpp $(OPENCV_LIB) -o $@  $(CPPFLAGS) $(ARMA_INC) $(ARMADILLO_LIB) $(LDLIBS_LIB) $(OPENBLAS_LIB) -llapac

clean:
	@rm -f test_denoise libdenoise.so denoise_*.o
	@rm -f -r lib
	@echo Clean done
