##
## Copyright 2016 Intel Corporation.
##
##
## This software and the related documents are Intel copyrighted materials, and your use of them is governed by
## the express license under which they were provided to you ('License'). Unless the License provides otherwise,
## you may not use, modify, copy, publish, distribute, disclose or transmit this software or the related
## documents without Intel's prior written permission.
## This software and the related documents are provided as is, with no express or implied warranties, other than
## those that are expressly stated in the License.
##

ifeq ($(G_SYSTEM),)
	exit 0
endif

CFLAGS   ?= $(G_CFLAGS)
CXXFLAGS ?= $(G_CXXFLAGS)

#
# Set binary architecture
#
ifeq ($(G_ARCH),intel64)
	CFLAGS    += -m64
	CXXFLAGS  += -m64
endif

#
# Set build name and paths
#
PROJ_NAME := ipp_iw
ifeq ($(OUT_NAME),)
	OUT_NAME := lib$(PROJ_NAME).a
endif

CONF_LOC        := $(G_CONF)
BUILD_PATH      := $(G_BUILD_ROOT)/$(G_ARCH)/$(CONF_LOC)
OBJ_PATH        := $(BUILD_PATH)/obj/$(PROJ_NAME)
OUT_FULL        := $(BUILD_PATH)/$(OUT_NAME)
INCLUDES        :=  -I./include -I$(IPPROOT)/include

CFLAGS   += -DIW_BUILD
CXXFLAGS += -DIW_BUILD
ifeq ($(PREBUILT),1)
	CFLAGS   += -DIW_PREBUILT
	CXXFLAGS += -DIW_PREBUILT
endif
ifeq ($(G_ICV),1)
	CFLAGS   += -DICV_BASE
	CXXFLAGS += -DICV_BASE
endif

COBJS   := $(patsubst src/%.c,$(OBJ_PATH)/%.o,$(wildcard src/*.c))
CXXOBJS := $(patsubst src/%.cpp,$(OBJ_PATH)/%.o,$(wildcard src/*.cpp))

#
# Set variable targets
#
BUILD_TARGET := build

CLEAN_TARGET :=

all: out_path $(BUILD_TARGET)

build: obj_path out

out_path:
	mkdir -p $(BUILD_PATH)

obj_path:
	mkdir -p $(OBJ_PATH)

$(OBJ_PATH)/%.o : src/%.c
	$(CC) -c $(G_LIB_CFLAGS) $(CFLAGS) $(INCLUDES) -o $@ $<

$(OBJ_PATH)/%.o : src/%.cpp
	$(CXX) -c $(G_LIB_CFLAGS) $(CXXFLAGS) $(INCLUDES) -o $@ $<

out: $(COBJS) $(CXXOBJS)
	$(AR) $(ARFLAGS) $(OUT_FULL) $?

clean: $(CLEAN_TARGET)
	$(RM) $(OUT_FULL)
	$(RM) $(COBJS)
	$(RM) $(CXXOBJS)
