Jordan Crouse | f6145c3 | 2008-03-19 23:56:58 +0000 | [diff] [blame] | 1 | ## |
| 2 | ## This file is part of the libpayload project. |
| 3 | ## |
| 4 | ## Copyright (C) 2008 Advanced Micro Devices, Inc. |
| 5 | ## |
| 6 | ## Redistribution and use in source and binary forms, with or without |
| 7 | ## modification, are permitted provided that the following conditions |
| 8 | ## are met: |
| 9 | ## 1. Redistributions of source code must retain the above copyright |
| 10 | ## notice, this list of conditions and the following disclaimer. |
| 11 | ## 2. Redistributions in binary form must reproduce the above copyright |
| 12 | ## notice, this list of conditions and the following disclaimer in the |
| 13 | ## documentation and/or other materials provided with the distribution. |
| 14 | ## 3. The name of the author may not be used to endorse or promote products |
| 15 | ## derived from this software without specific prior written permission. |
| 16 | ## |
| 17 | ## THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND |
| 18 | ## ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| 19 | ## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| 20 | ## ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE |
| 21 | ## FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| 22 | ## DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
| 23 | ## OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| 24 | ## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| 25 | ## LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
| 26 | ## OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| 27 | ## SUCH DAMAGE. |
| 28 | ## |
| 29 | |
| 30 | BASE_DIR=$(shell pwd) |
| 31 | KCONFIG_DIR=util/kconfig |
| 32 | |
| 33 | ifeq (.config, $(wildcard .config)) |
| 34 | dot-config := 1 |
| 35 | else |
| 36 | dot-config := 0 |
| 37 | config-targets := 1 |
| 38 | endif |
| 39 | |
| 40 | ifneq ($(filter textconfig oldconfig defconfig menuconfig,$(MAKECMDGOALS)),) |
| 41 | config-targets := 1 |
| 42 | dot-config := 0 |
| 43 | endif |
| 44 | |
| 45 | ifeq ($(dot-config),0) |
| 46 | all: .config |
| 47 | |
| 48 | .config: oldconfig |
| 49 | @echo "Configuration completed - type make to build libpayload" |
| 50 | else |
| 51 | -include .config |
| 52 | endif |
| 53 | |
| 54 | PLATFORM-$(CONFIG_TARGET_I386) += i386/Makefile.inc |
| 55 | TARGETS-y := |
| 56 | |
| 57 | BUILD-y := libc/Makefile.inc drivers/Makefile.inc |
| 58 | BUILD-$(CONFIG_TINYCURSES) += curses/Makefile.inc |
| 59 | |
| 60 | include $(PLATFORM-y) $(BUILD-y) |
| 61 | |
| 62 | INCLUDES := -I./include |
| 63 | INCLUDES += -I$(shell $(CC) -print-search-dirs | head -n 1 | cut -d' ' -f2)include |
Uwe Hermann | 408c4e1 | 2008-03-27 19:11:44 +0000 | [diff] [blame^] | 64 | # TODO: Re-add -Os as soon as we find out why it caused problems. |
| 65 | CFLAGS := -Wall -Werror -fno-stack-protector -nostdinc $(INCLUDES) |
Jordan Crouse | f6145c3 | 2008-03-19 23:56:58 +0000 | [diff] [blame] | 66 | |
| 67 | libpayload.a: $(TARGETS-y) |
| 68 | $(AR) rc $@ $(TARGETS-y) |
| 69 | |
| 70 | %.o: %.c |
| 71 | $(CC) -m32 $(CFLAGS) -c -o $@ $< |
| 72 | |
| 73 | %.o: %.S |
| 74 | $(AS) --32 -o $@ $< |
| 75 | |
| 76 | clean: |
| 77 | @ rm -f $(TARGETS-y) |
| 78 | @ rm -f libpayload.a |
| 79 | |
| 80 | distclean: clean |
| 81 | @ make -C $(KCONFIG_DIR) clean |
| 82 | @ rm -f $(KCONFIG_DIR)/lxdialog/lxdialog |
| 83 | @ rm -f .config .kconfig.d include/autoconf.h |
| 84 | |
| 85 | ifeq ($(config-targets),1) |
| 86 | |
| 87 | $(KCONFIG_DIR)/conf: |
| 88 | make -C $(KCONFIG_DIR) conf |
| 89 | |
| 90 | $(KCONFIG_DIR)/mconf: |
| 91 | make -C $(KCONFIG_DIR) mconf |
| 92 | |
| 93 | $(KCONFIG_DIR)/lxdialog/lxdialog: |
| 94 | make -C $(KCONFIG_DIR)/lxdialog lxdialog |
| 95 | |
| 96 | textconfig: $(KCONFIG_DIR)/conf |
| 97 | @$(KCONFIG_DIR)/conf $(BASE_DIR)/Config.in |
| 98 | |
| 99 | oldconfig: $(KCONFIG_DIR)/conf |
| 100 | @$(KCONFIG_DIR)/conf -o $(BASE_DIR)/Config.in |
| 101 | |
| 102 | defconfig: $(KCONFIG_DIR)/conf |
| 103 | @$(KCONFIG_DIR)/conf -d $(BASE_DIR)/Config.in |
| 104 | |
| 105 | menuconfig: $(KCONFIG_DIR)/lxdialog/lxdialog $(KCONFIG_DIR)/mconf |
| 106 | @$(KCONFIG_DIR)/mconf $(BASE_DIR)/Config.in |
| 107 | |
| 108 | endif |