DEBUG ?= y
STRICT_CHECK := n

ifeq ($(PLAT_FORM),soc)
  CROSS_COMPILE ?= aarch64-linux-gnu-
  STATIC=-static
else
  CROSS_COMPILE=
  STATIC=
endif
  
CC := ${CROSS_COMPILE}gcc
CXX := ${CROSS_COMPILE}g++
AR := ${CROSS_COMPILE}ar rcs

INCDIR += -I../../include\

CFLAGS := -fPIC

ifeq ($(DEBUG), y)
	DEFINES += -DDEBUG -DPERFORMANCE_TEST -DDEBUG_MM
	CFLAGS += -O0 -g
else
	CFLAGS += -O2
endif

ifeq ($(STRICT_CHECK), y)
	CFLAGS += -Wall
	CFLAGS += -Werror
else
	CFLAGS += -Wall
endif

CFLAGS += $(INCDIR)

SOURCE_IMGPROC_API := image_proc_api.c
SOURCE_IMGPROC_API_EXT := image_proc_api_ext.c
SOURCE_IWL := iwl.c

OBJECT_IMGPROC_API:=$(SOURCE_IMGPROC_API:%.c=%.o)
OBJECT_IMGPROC_API_EXT:=$(SOURCE_IMGPROC_API_EXT:%.c=%.o)
OBJECT_IWL:=$(SOURCE_IWL:%.c=%.o)

LIBIMGPROC := libimgproc.so
LIBIMGPROC_STATIC := libimgproc.a

$(LIBIMGPROC) : $(OBJECT_IMGPROC_API) $(OBJECT_IMGPROC_API_EXT) $(OBJECT_IWL)
	$(CC) -shared $(LFLAGS) -o $@ $^

$(LIBIMGPROC_STATIC): $(OBJECT_IMGPROC_API) $(OBJECT_IMGPROC_API_EXT) $(OBJECT_IWL)
	$(AR) $(LIBIMGPROC_STATIC) $(OBJECT_IMGPROC_API) $(OBJECT_IMGPROC_API_EXT) $(OBJECT_IWL)

.PHONY : all
all: $(LIBIMGPROC) $(LIBIMGPROC_STATIC) test_imgproc

#####################################################################
#                                   test                            #
#####################################################################
test_imgproc: test/test.o $(LIBIMGPROC_STATIC)
	$(CXX) -o $@ $^ $(LFLAGS) $(STATIC)

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

%.o:%.cpp
	$(CXX) -c $(DEFINES) $(CFLAGS) -o $@ $<

.PHONY : clean
clean:
	rm -f $(shell find . -name "*.o") 
	rm -f libimgproc.so
	rm -f libimgproc.a
	rm -f test_imgproc
