# 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 = ./

OBJECT_FILES = \
	ec_lib \
	ecp_smpl \
	ecp_mont \
	ecp_nist \
	ec_cvt \
	ec_mult \
	ec_err \
	ec_curve \
	ec_check \
	ec_print \
	ec_asn1 \
	ec_key \
	ec2_smpl \
	ec2_mult \
	ec_pmeth \
	eck_prn \
	ecp_oct \
	ec2_oct \
	ec_oct

HEADER_FILES = \
	ec_lcl

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

all: $(OUTDIR) $(LIB_DIR)/libec.a

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

clean:
	$(RM) $(OUTDIR)

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

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

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

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

