# SlickEdit generated file.  Do not edit this file except in designated areas.
# -----Begin user-editable area-----
# -----End user-editable area-----

# Make command to use for dependencies

export CHIP

ifndef CHIP
CHIP = ss524v100
endif

OSDRV_CROSS ?= arm-mix410-linux

TOOL_BIN := bin
TARGET=ARM
CPU_TiYPE=ARM
CROSS=$(OSDRV_CROSS)
OSDRV_CROSS_CFLAGS := -mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4 -fstack-protector-strong -fPIE
OSDRV_CROSS_LDFLAGS ?= -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -fPIE -pie

USER_CFLAGS:=$(OSDRV_CROSS_CFLAGS)

PRODUCT=BSP
#CONFIG_GPIO_I2C =Y

CC  = $(CROSS)-gcc
STRIP=$(CROSS)-strip
#
# Configuration: Debug
#

INCDIR=include
SRCDIR=source
OUTDIR=$(SRCDIR)
DRIVERDIR=driver
OUTFILE=btools

ifndef SRC_ROOT
export SRC_ROOT := $(PWD)/../../..
endif

CFG_INC=

CFG_INC +=-I$(INCDIR)  \
	-I$(INCDIR)/api\
        -I$(INCDIR)/common \
        -I$(INCDIR)/driver \
        -I$(INCDIR)/message\
        -I$(INCDIR)/mmf\
        -I$(INCDIR)/os/linux \
        -I$(INCDIR)/tools/zsptools \
        -I$(INCDIR)/utils \
        -I$(DRIVERDIR)/include \

CFG_LIB = -lpthread -lrt
CFG_LIB_X86=
CFG_LIB_ARM=$(OSDRV_CROSS_LDFLAGS)
CFG_OBJ=

COMMON_SRC=$(wildcard $(SRCDIR)/common/*.c)
COMMON_OBJ=$(patsubst %.c,$(SRCDIR)/%.o, $(notdir $(COMMON_SRC)))

SECURE_LIB = $(wildcard $(SRCDIR)/common/*.a)

BASE_OBJ=$(OUTDIR)/strfunc.o \
         $(OUTDIR)/memmap.o \
		 $(OUTDIR)/argparser.o \
		 $(OUTDIR)/cmdshell.o

OBJ=$(CFG_OBJ) \
    $(COMMON_OBJ) \
    $(BASE_OBJ)

# below not add to lib
TOOLS_OBJ=

TOOLS_OBJ+=$(OUTDIR)/bspmd.o \
          $(OUTDIR)/bspmm.o \
          $(OUTDIR)/bspddrs.o \
          $(OUTDIR)/i2c_ops.o \
          $(OUTDIR)/ssp_rw.o

BTOOLS_OBJ = $(OUTDIR)/btools.o $(TOOLS_OBJ)

ALL_OBJ = $(OBJ) \
  $(TOOLS_OBJ) \
  $(BTOOLS_OBJ) \
  $(BSPMD_OBJ) \
  $(BSPMM_OBJ) \
  $(BSPMC_OBJ) \
  $(BSPVD_OBJ)

CFG_DEFS=-D$(CPU_TYPE)_CPU

CFG_DEFS +=-D$(CPU_TYPE)_CPU

ifeq ($(CONFIG_GPIO_I2C),Y)
CFG_DEFS +=-DGPIO_I2C
endif

COMPIER_FLAGS= -c  -W
CFG_DEBUG = -g3
CFG_CFLAGS=-Wall -Wunused

ifeq ($(TARGET),X86)
CFG_LIB +=$(CFG_LIB_X86)
CFG_DEFS += -DTARGET_X86
else
CFG_LIB  +=$(CFG_LIB_ARM)
CFG_LIB  +=$(USER_CFLAGS)
CFG_DEFS +=-D__LINUX_ARM_ARCH__=7
#CFG_DEFS +=-mtune=arm9tdmi
CFG_DEFS += -DTARGET_ARM
CFG_CFLAGS +=-mlittle-endian
endif

CFG_DEFS += -D$(CHIP)

CFG_CFLAGS += $(USER_CFLAGS)

CFG_FLAGS = $(CFG_CFLAGS) $(CFG_DEBUG) $(CFG_INC) $(CFG_DEFS)
LINK_FLAGS = $(CFG_DEFS) $(CFG_DEBUG)

COMPILE=@$(CC) $(CFG_FLAGS) $(COMPIER_FLAGS) -o "$(OUTDIR)/$(*F).o" "$<"
LINK=$(CC) -o "$@" $(OBJ) $(CFG_LIB)

LINK_A=$(CC)   -o "$@" $(OBJ) $(CFG_LIB) $(CFG_FLAGS)

# Pattern rules
$(OUTDIR)/%.o : $(SRCDIR)/utils/%.c
	$(COMPILE)

$(OUTDIR)/%.o : $(SRCDIR)/common/%.c
	$(COMPILE)

$(OUTDIR)/%.o :  $(DRIVERDIR)/%.c
	$(COMPILE)

$(OUTDIR)/%.o :  $(DRIVERDIR)/memmap/%.c
	$(COMPILE)

$(OUTDIR)/%.o : $(SRCDIR)/tools/%.c
	$(COMPILE)

all: $(OUTDIR)  $(ALL_OBJ)  $(OUTFILE)

btools:$(OUTDIR) $(OBJ) $(BTOOLS_OBJ)
ifneq ($(SECURE_LIB), $(SRCDIR)/common/libsecurec-board.a)
ifneq ($(wildcard $(SRC_ROOT)/components/secure_c/lib/*.a),)
	cp $(SRC_ROOT)/components/secure_c/lib/libsecurec-board.a ./source/common
else
	$(warning you need to build libsecurec-board.a and copy it to ./source/common first!!! You can see readme)
	$(error )
endif
endif
	$(LINK)   $(BTOOLS_OBJ) -lsecurec-board -L./source/common
	$(STRIP) btools
	ln -sf btools bspmd
	ln -sf btools bspmd.l
	ln -sf btools bspmm
	ln -sf btools bspddrs
	ln -sf btools i2c_read
	ln -sf btools i2c_write
	ln -sf btools ssp_read
	ln -sf btools ssp_write
	mkdir -p $(TOOL_BIN)/
	mv bsp* $(TOOL_BIN)
	mv i2c* $(TOOL_BIN)
	mv ssp* $(TOOL_BIN)
	mv btools $(TOOL_BIN)

# Clean this project
clean:
	rm -rf $(TOOL_BIN)
	rm -f $(OBJ)
	rm -f $(OUTDIR)/*.o

# Clean this project and all dependencies
distclean: clean
	rm -f $(SRCDIR)/common/libsecurec-board.a

