# Copyright 2011 Google Inc. All Rights Reserved.
# Author: dgentry@google.com (Denton Gentry)

CROSS_PREFIX:=$(TARGET)
CC:=$(CROSS_PREFIX)gcc
CPP:=$(CROSS_PREFIX)g++
LD:=$(CROSS_PREFIX)ld
AR:=$(CROSS_PREFIX)ar
RANLIB:=$(CROSS_PREFIX)ranlib
STRIP:=$(CROSS_PREFIX)strip

CFLAGS = -g -Os

SRCS = hmx_upgrade_flash.c hmx_upgrade_nvram.c
INCS = hmx_upgrade_nvram.h hnvram_dlist.h
OBJS = $(SRCS:.c=.o)

all: libhmxupgrade.a

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

libhmxupgrade.a: $(OBJS) $(INCS)
	$(AR) rcs $@ $(OBJS)

clean:
	rm -f libhmxupgrade.a *.o
