CFLAGS+=-std=c99 -pedantic -Wall -Wextra -Wconversion -ftrapv -D_POSIX_C_SOURCE=200809L `pkg-config --cflags opencv4` $(EXTRA_CFLAGS)
CXXFLAGS+=-std=c++11 -pedantic -Wall -Wextra -Wconversion -ftrapv -D_POSIX_C_SOURCE=200809L `pkg-config --cflags opencv4` $(EXTRA_CFLAGS)
LDFLAGS+=$(EXTRA_LDFLAGS)
LDLIBS+=-lm `pkg-config --libs opencv4` $(EXTRA_LDLIBS)
LINK.o=g++ $(LDFLAGS)

CONFIG_USE_FFTW=0
CONFIG_USE_OPENMP=1

-include Makefile.local

BIN=denoise

ifeq ($(BUILD),profile)
	CXXFLAGS+=-Og -g -pg
	LDFLAGS+=-rdynamic -pg
endif

ifeq ($(BUILD),debug)
	CFLAGS+=-Og -g
	LDFLAGS+=-rdynamic
endif

ifeq ($(BUILD),release)
	CFLAGS+=-march=native -O3 -DNDEBUG
	CXXFLAGS+=-march=native -O3 -DNDEBUG
endif

ifeq ($(CONFIG_USE_OPENMP),1)
	CFLAGS+=-fopenmp
	CXXFLAGS+=-fopenmp
	LDFLAGS+=-fopenmp
endif

.PHONY: all clean

all: $(BIN)

ifeq ($(CONFIG_USE_FFTW),1)
denoise: LDLIBS+=-lfftw3f
endif

denoise: denoise.o common.o plane.o dwt97.o

denoise.o: denoise.cpp common.h plane.h dwt97.h Makefile

denoise.o: CXXFLAGS+=-Wno-conversion

common.o: common.c common.h Makefile

plane.o: plane.c plane.h common.h Makefile

dwt97.o: dwt97.c dwt97.h common.h

clean:
	$(RM) -- *.o $(BIN)
