# Copyright 2010 by Nest Labs, Inc. All rights reserved.
#
# This program is confidential and proprietary to Nest Labs, Inc.,
# and may not be reproduced, published or disclosed to others without
# company authorization.
#

DEPTH = ../

include $(DEPTH)Makefile.config

OUTDIR = $(OBJ_DIR)
SRCDIR = ./
INCDIR = ./

OBJECT_FILES = \
	security_driver

HEADER_FILES = \

OBJECTS = $(OBJECT_FILES:%=$(OUTDIR)/%.o)
HEADERS = $(HEADER_FILES:%=$(INCDIR)/%.h)

LIBRARY_DEPS = \
	$(LIB_DIR)/libbn.a \
	$(LIB_DIR)/libjpake.a \
	$(LIB_DIR)/libsha.a \
	$(LIB_DIR)/libec.a \
	$(LIB_DIR)/libecdh.a \
	$(LIB_DIR)/libaes.a \
	$(LIB_DIR)/libecdsa.a \
	$(LIB_DIR)/libemssl.a \
	$(LIB_DIR)/libctrdrbg.a \
	$(LIB_DIR)/libpolarssl.a

all: $(OUTDIR) $(OUTDIR)/security_driver

$(OUTDIR):
	$(MKDIR) $(OUTDIR)

clean:
	$(RM) $(OUTDIR)

$(OUTDIR)/%.o: $(SRCDIR)/%.c $(HEADERS)
	$(CC) $(CFLAGS) $< -o $@

$(OUTDIR)/%.o: $(SRCDIR)/%.cpp $(HEADERS)
	$(CC) $(CFLAGS) $< -o $@

$(OUTDIR)/security_driver: $(OUTDIR)/security_driver.o $(LIBRARY_DEPS)
	$(LINK) $(OUTDIR)/security_driver.o $(LIBS) $(OCLIBS) -ljpake -lsha -lecdsa -lec -lecdh -lbn -lemssl -lctrdrbg -lpolarssl -laes -o $(OUTDIR)/security_driver
	$(CP) $@ $(BIN_DIR)

