## ## This file is part of the libpayload project. ## ## Copyright (C) 2008 Advanced Micro Devices, Inc. ## ## Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions ## are met: ## 1. Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## 2. Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in the ## documentation and/or other materials provided with the distribution. ## 3. The name of the author may not be used to endorse or promote products ## derived from this software without specific prior written permission. ## ## THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ## ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ## ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ## FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ## DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ## OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ## LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ## OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ## SUCH DAMAGE. ## BASE_DIR=$(shell pwd) KCONFIG_DIR=util/kconfig DESTDIR=/opt ifeq (.config, $(wildcard .config)) dot-config := 1 else dot-config := 0 config-targets := 1 endif ifneq ($(filter textconfig oldconfig defconfig menuconfig,$(MAKECMDGOALS)),) config-targets := 1 dot-config := 0 endif ifeq ($(dot-config),0) all: .config .config: oldconfig @echo "Configuration completed - type make to build libpayload" else -include .config ARCHDIR-$(CONFIG_TARGET_I386) := i386 PLATFORM-y += $(ARCHDIR-y)/Makefile.inc TARGETS-y := BUILD-y := crypto/Makefile.inc libc/Makefile.inc drivers/Makefile.inc BUILD-$(CONFIG_TINYCURSES) += curses/Makefile.inc include $(PLATFORM-y) $(BUILD-y) INCLUDES := -I./include INCLUDES += -I$(shell $(CC) -print-search-dirs | head -n 1 | cut -d' ' -f2)include # TODO: Re-add -Os as soon as we find out why it caused problems. CFLAGS := -Wall -Werror -fno-stack-protector -nostdinc $(INCLUDES) lib: lib/libpayload.a lib/$(ARCHDIR-y)/head.o lib/libpayload.a: $(TARGETS-y) @ $(AR) rc $@ $(TARGETS-y) lib/$(ARCHDIR-y)/head.o: $(ARCHDIR-y)/head.o @ mkdir -p lib/$(ARCHDIR-y) @ cp $< $@ %.o: %.c $(CC) -m32 $(CFLAGS) -c -o $@ $< %.o: %.S $(AS) --32 -o $@ $< install: lib install -m 755 -d $(DESTDIR)/libpayload/lib cp -r lib/* $(DESTDIR)/libpayload/lib/ install -m 755 -d $(DESTDIR)/libpayload/include cp -r include/* $(DESTDIR)/libpayload/include/ install -m 755 -d $(DESTDIR)/libpayload/bin install -m 755 bin/lpgcc $(DESTDIR)/libpayload/bin install -m 755 bin/lpas $(DESTDIR)/libpayload/bin install -m 644 bin/lp.functions $(DESTDIR)/libpayload/bin clean: @ rm -f $(TARGETS-y) @ rm -f lib/libpayload.a lib/$(ARCHDIR-y)/head.o distclean: clean @ make -C $(KCONFIG_DIR) clean @ rm -f $(KCONFIG_DIR)/lxdialog/lxdialog @ rm -f .config .kconfig.d include/autoconf.h endif ifeq ($(config-targets),1) $(KCONFIG_DIR)/conf: make -C $(KCONFIG_DIR) conf $(KCONFIG_DIR)/mconf: make -C $(KCONFIG_DIR) mconf $(KCONFIG_DIR)/lxdialog/lxdialog: make -C $(KCONFIG_DIR)/lxdialog lxdialog textconfig: $(KCONFIG_DIR)/conf @$(KCONFIG_DIR)/conf $(BASE_DIR)/Config.in oldconfig: $(KCONFIG_DIR)/conf @$(KCONFIG_DIR)/conf -o $(BASE_DIR)/Config.in defconfig: $(KCONFIG_DIR)/conf @$(KCONFIG_DIR)/conf -d $(BASE_DIR)/Config.in menuconfig: $(KCONFIG_DIR)/lxdialog/lxdialog $(KCONFIG_DIR)/mconf @$(KCONFIG_DIR)/mconf $(BASE_DIR)/Config.in endif