blob: 92bef99a84beec7755976d9ac0e2e63ec93eaecc [file] [log] [blame]
Jordan Crousef6145c32008-03-19 23:56:58 +00001##
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
30BASE_DIR=$(shell pwd)
31KCONFIG_DIR=util/kconfig
32
33ifeq (.config, $(wildcard .config))
34dot-config := 1
35else
36dot-config := 0
37config-targets := 1
38endif
39
40ifneq ($(filter textconfig oldconfig defconfig menuconfig,$(MAKECMDGOALS)),)
41config-targets := 1
42dot-config := 0
43endif
44
45ifeq ($(dot-config),0)
46all: .config
47
48.config: oldconfig
49 @echo "Configuration completed - type make to build libpayload"
50else
51-include .config
52endif
53
54PLATFORM-$(CONFIG_TARGET_I386) += i386/Makefile.inc
55TARGETS-y :=
56
57BUILD-y := libc/Makefile.inc drivers/Makefile.inc
58BUILD-$(CONFIG_TINYCURSES) += curses/Makefile.inc
59
60include $(PLATFORM-y) $(BUILD-y)
61
62INCLUDES := -I./include
63INCLUDES += -I$(shell $(CC) -print-search-dirs | head -n 1 | cut -d' ' -f2)include
Uwe Hermann408c4e12008-03-27 19:11:44 +000064# TODO: Re-add -Os as soon as we find out why it caused problems.
65CFLAGS := -Wall -Werror -fno-stack-protector -nostdinc $(INCLUDES)
Jordan Crousef6145c32008-03-19 23:56:58 +000066
67libpayload.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
76clean:
77 @ rm -f $(TARGETS-y)
78 @ rm -f libpayload.a
79
80distclean: clean
81 @ make -C $(KCONFIG_DIR) clean
82 @ rm -f $(KCONFIG_DIR)/lxdialog/lxdialog
83 @ rm -f .config .kconfig.d include/autoconf.h
84
85ifeq ($(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
96textconfig: $(KCONFIG_DIR)/conf
97 @$(KCONFIG_DIR)/conf $(BASE_DIR)/Config.in
98
99oldconfig: $(KCONFIG_DIR)/conf
100 @$(KCONFIG_DIR)/conf -o $(BASE_DIR)/Config.in
101
102defconfig: $(KCONFIG_DIR)/conf
103 @$(KCONFIG_DIR)/conf -d $(BASE_DIR)/Config.in
104
105menuconfig: $(KCONFIG_DIR)/lxdialog/lxdialog $(KCONFIG_DIR)/mconf
106 @$(KCONFIG_DIR)/mconf $(BASE_DIR)/Config.in
107
108endif