# 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

CFLAGS += -Os
OUTDIR = $(OBJ_DIR)
SRCDIR = ./
INCDIR = ./

VPATH = emssl-custom lhash stack

OBJECT_FILES = \
	ex_data \
	lhash/lhash \
	stack/stack \
	emssl-custom/die \
	emssl-custom/ecdsa_sig \
	emssl-custom/err \
	emssl-custom/mem \
	emssl-custom/mem_clr \
	emssl-custom/rand

HEADER_FILES =

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

$(warning $(OBJECTS))

.PHONY: bn jpake ecdsa ec ecdh

all: $(OUTDIR) bn jpake ecdsa ec ecdh $(LIB_DIR)/libemssl.a

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

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

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

$(OUTDIR)/libemssl.a: $(OBJECTS)
	$(ARCHIVE) $@ $(OBJECTS)
	$(RANLIB) $@

$(LIB_DIR)/libemssl.a: $(OUTDIR)/libemssl.a
	$(MKDIR) $(dir $@)
	$(CP) $< $@

bn:
	$(MAKE) BUILD_DIR="$(BUILD_DIR)" -C $@

jpake:
	$(MAKE) BUILD_DIR="$(BUILD_DIR)" -C $@

ecdsa:
	$(MAKE) BUILD_DIR="$(BUILD_DIR)" -C $@

ec:
	$(MAKE) BUILD_DIR="$(BUILD_DIR)" -C $@

ecdh:
	$(MAKE) BUILD_DIR="$(BUILD_DIR)" -C $@

clean:
	$(MAKE) BUILD_DIR="$(BUILD_DIR)" -C bn $@
	$(MAKE) BUILD_DIR="$(BUILD_DIR)" -C jpake $@
	$(MAKE) BUILD_DIR="$(BUILD_DIR)" -C ecdsa $@
	$(MAKE) BUILD_DIR="$(BUILD_DIR)" -C ec $@
	$(MAKE) BUILD_DIR="$(BUILD_DIR)" -C ecdh $@
	$(RM) $(OUTDIR)

