CC=gcc

# If no MODEL macro is defined when calling make it defaults to G354
MODEL ?= G354
DEFINES= $(MODEL)
INCLUDES= .
CFLAGS= -I$(INCLUDES) -D$(DEFINES)
LIBS=
DEPS= hcl.h hcl_gpio.h sensor_epsonCommon.h
DEPS_IMUMODEL= sensor_epsonG350.h sensor_epsonG352.h sensor_epsonG354.h sensor_epsonG34DC0.h sensor_epsonG34DCA.h sensor_epsonV340.h sensor_epsonG320.h
DEPS_UART= hcl_uart.h

_OBJ= hcl_gpio.o hcl_linux.o hcl_uart.o sensor_epsonCommon.o sensor_epsonUart.o 

ifeq ($(MODEL), G350)
	_OBJ+= sensor_epsonG350.o
endif

ifeq ($(MODEL), G352)
	_OBJ+= sensor_epsonG352.o
endif

ifeq ($(MODEL), G362)
	_OBJ+= sensor_epsonG362.o
endif

ifeq ($(MODEL), G354)
	_OBJ+= sensor_epsonG354.o
endif

ifeq ($(MODEL), G364DC0)
	_OBJ+= sensor_epsonG364.o
endif

ifeq ($(MODEL), G364DCA)
	_OBJ+= sensor_epsonG364.o
endif

ifeq ($(MODEL), V340)
	_OBJ+= sensor_epsonV340.o
endif

ifeq ($(MODEL), G320)
	_OBJ+= sensor_epsonG320.o
endif

OBJ_SCREEN= main_screen.o $(_OBJ)
OBJ_CSV= main_csvlogger.o $(_OBJ)
OBJ_REG= main_regdump.o $(_OBJ)

%.o: %.c $(DEPS) $(DEPS_UART) $(DEPS_IMUMODEL)
	$(CC) -c -o $@ $< $(CFLAGS) $(LIBS)

screen: $(OBJ_SCREEN)
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

csvlogger: $(OBJ_CSV)
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

regdump: $(OBJ_REG)
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

.PHONY: clean all help

clean:
	rm -f *.o *~ core *~
	-rm -f csvlogger screen regdump

all: screen csvlogger regdump

help:
	@echo "supported make commands are:"
	@echo "\tmake clean"
	@echo "\tmake <targets> MODEL=<model>\n"
	@echo "valid <targets> are: csvlogger screen or regdump\n"
	@echo "valid <models> are:"
	@echo "\tG350 G352 G362 G354(default) G364DC0 G364DCA G320 V340\n"
	@echo "example:\n\tmake cvslogger MODEL=G362"
	@echo "\tmake screen (defaults to MODEL=G354)"
