CC  ?= gcc
AR  ?= ar
CFLAGS = -std=gnu99 -Wall -pedantic -Wextra
CP ?= cp -v
RM ?= rm -f
Q  ?= @

SONDA_BASE  ?= ../../../../../sonda/trunk

HWIO_DTREE_HOME ?= ../../../libs/hwio
HWIO_HOME       ?= $(SONDA_BASE)/swtools/hwio/v0.3-rc1/hwio-linux/

DTREE_VERSION ?= v0.9
DTREE_BASE    ?= ../../../libs/dtree
DTREE_HOME    ?= $(DTREE_BASE)/$(DTREE_VERSION)
TOP ?= $(shell pwd)
export DTREE_PATH    = $(TOP)/$(DTREE_HOME)
export DEBUG ?= 0

ifeq ($(DEBUG),1)
CFLAGS += -pg -ggdb3
endif

CFLAGS += -I$(HWIO_HOME) -I$(HWIO_HOME)/..
LDFLAGS ?=

all: ethctl

ethctl: ethctl.c ethctl_param.o ethctl_cmd.o libhwio_linux.a libdtree.a
	$(Q) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^

ethctl_param.o: ethctl_param.c
	$(Q) $(CC) $(CFLAGS) -c -o $@ $^

ethctl_cmd.o: ethctl_cmd.c
	$(Q) $(CC) $(CFLAGS) -c -o $@ $^

libhwio_linux.a:
	$(MAKE) -C $(HWIO_HOME)
	$(Q) $(CP) $(HWIO_HOME)/libhwio_linux.a $@

libdtree.a:
	$(MAKE) -C $(DTREE_HOME)
	$(Q) $(CP) $(DTREE_HOME)/libdtree.a $@

libhwio-file.a:
	$(MAKE) -C $(HWIO_DTREE_HOME) debug
	$(Q) $(CP) $(HWIO_DTREE_HOME)/libhwio-file.a $@

debug: ethctl.c ethctl_param.o ethctl_cmd.o libhwio-file.a
	$(Q) $(CC) $(CFLAGS) -g -o $@ $^

clean:
	$(RM) *.a
	$(RM) *.o
	$(RM) ethctl
	$(RM) debug
	$(RM) *~
	$(MAKE) -C $(HWIO_HOME) clean
	$(MAKE) -C $(DTREE_HOME) clean
