# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

HOSTTOP := $(shell pwd)
TESTDIR = $(HOSTTOP)/linktest
BUILD_ROOT := ${BUILD}/$(shell basename ${HOSTTOP})

INCLUDES += \
	-I$(HOSTTOP)/include \
	-I$(FWDIR)/lib/include \
	-I$(FWDIR)/lib/cgptlib/include \
	-I$(FWDIR)/lib/cryptolib/include

# find ./lib -iname '*.c' | sort
LIB_SRCS = \
	./lib/crossystem.c \
	./lib/file_keys.c \
	./lib/fmap.c \
	./lib/host_common.c \
	./lib/host_key.c \
	./lib/host_keyblock.c \
	./lib/host_misc.c \
	./lib/host_signature.c \
	./lib/signature_digest.c

STUB_SRCS = \
	../firmware/stub/boot_device_stub.c \
	../firmware/stub/load_firmware_stub.c \
	../firmware/stub/tpm_lite_stub.c \
	../firmware/stub/utility_stub.c

ALL_SRCS = ${LIB_SRCS} ${STUB_SRCS}

test : $(HOSTLIB)
	$(CC) $(CFLAGS) $(INCLUDES) -o $(BUILD_ROOT)/a.out $(TESTDIR)/main.c \
	$(HOSTLIB) -lcrypto

include ../common.mk

$(HOSTLIB) : $(ALL_OBJS) $(FWLIB)
	rm -rf $@ $(BUILD_ROOT)/.tmp
	mkdir -p $(BUILD_ROOT)/.tmp
	cd $(BUILD_ROOT)/.tmp ; ar x $(FWLIB)
	ar qc $@ $^ $(BUILD_ROOT)/.tmp/*.o
