##
## This file is part of the bayou project.
##
## Copyright (C) 2008 Advanced Micro Devices, Inc.
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License version 2 as
## published by the Free Software Foundation.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##

CONFIG_LZMA=y
CONFIG_NRV2B=y
CONFIG_BUILTIN_LAR=y

PBUILDER_CONFIG=bayou.xml
BUILTIN_LAR=builtin.lar

export src := $(CURDIR)
export obj := $(src)/build

LIBPAYLOAD_DIR := $(obj)/libpayload

CC?=gcc
STRIP?=strip
OBJCOPY?=objcopy

FFLAGS-y=
FFLAGS-$(CONFIG_BUILTIN_LAR) += -DCONFIG_BUILTIN_LAR
FFLAGS-$(CONFIG_LZMA) += -DCONFIG_LZMA
FFLAGS-$(CONFIG_NRV2B) += -DCONFIG_NRV2B

OBJECTS-y=main.o payload.o config.o menu.o self.o
OBJECTS-$(CONFIG_LZMA) += lzma.o
OBJECTS-$(CONFIG_NRV2B) += nrv2b.o
OBJECTS-$(CONFIG_BUILTIN_LAR) += builtin-lar.o

CFLAGS= -Wall -Werror -Os $(FFLAGS-y)
LDFLAGS=-Wl,-T,bayou.ldscript -static
LIBGCC=$(shell $(CC) -m32 -print-libgcc-file-name)

LPCC=$(LIBPAYLOAD_DIR)/bin/lpgcc

bayou.elf: $(OBJECTS-y)
	$(LPCC) $(LDFLAGS) -m32 -o $@ $(OBJECTS-y)
	@$(STRIP) $@

builtin-lar.o: $(BUILTIN_LAR)
	@$(OBJCOPY) -I binary -B i386 -O elf32-i386 $(BUILTIN_LAR) $@

builtin.lar: util/pbuilder/pbuilder
	@rm -f $@
	util/pbuilder/pbuilder -c $(PBUILDER_CONFIG) create $@

util/pbuilder/pbuilder:
	$(MAKE) -C util/pbuilder

%.o: %.c
	$(LPCC) $(CFLAGS) -c -o $@ $<

clean:
	rm -f *.o bayou.elf builtin.lar
	$(MAKE) -C util/pbuilder clean
