blob: 94d1f0279bbf6eaf4678cd1393d6d3164ecc45f0 [file] [log] [blame]
Gaurav Shah322536d2010-01-28 15:01:23 -08001# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
Che-Liang Chiou0a0e8d02010-11-30 09:30:45 +08005export FIRMWARE_ARCH
Che-Liang Chiou440ad512011-01-27 10:23:51 +08006export FIRMWARE_CONFIG_PATH
Che-Liang Chiou0a0e8d02010-11-30 09:30:45 +08007
Gaurav Shah27bfc8b2010-02-17 14:19:24 -08008export CC ?= gcc
Bill Richardsonf1372d92010-06-11 09:15:55 -07009export CXX ?= g++
Che-Liang Chiou440ad512011-01-27 10:23:51 +080010export CFLAGS
11
12# Include compiler flags if provided.
13# The CC and CFLAGS should not be overridden hereafter.
14ifneq ($(FIRMWARE_CONFIG_PATH),)
15include $(FIRMWARE_CONFIG_PATH)
Che-Liang Chiou0a0e8d02010-11-30 09:30:45 +080016endif
17
Che-Liang Chiou440ad512011-01-27 10:23:51 +080018# Provides default optimization level if not set by FIRMWARE_CONFIG_PATH
vbendebb2b0fcc2010-07-15 15:09:47 -070019ifeq (${DEBUG},)
Che-Liang Chiou440ad512011-01-27 10:23:51 +080020CFLAGS ?= -O3
vbendebb2b0fcc2010-07-15 15:09:47 -070021else
Che-Liang Chiou440ad512011-01-27 10:23:51 +080022CFLAGS ?= -O0
23endif
24
25ifeq ($(FIRMWARE_ARCH),)
26CFLAGS += -Wall -Werror -DCHROMEOS_ENVIRONMENT
27else
28CFLAGS += -Wall -Werror
29endif
30
31ifneq (${DEBUG},)
32CFLAGS += -g -DVBOOT_DEBUG
vbendebb2b0fcc2010-07-15 15:09:47 -070033endif
Che-Liang Chiou0a0e8d02010-11-30 09:30:45 +080034
vbendebb2b0fcc2010-07-15 15:09:47 -070035ifeq (${DISABLE_NDEBUG},)
36CFLAGS += -DNDEBUG
37endif
38
Gaurav Shah7ca31f32010-02-16 19:04:11 -080039export TOP = $(shell pwd)
Randall Spangler620c38c2010-06-17 14:45:22 -070040export FWDIR=$(TOP)/firmware
Randall Spanglerd1836442010-06-10 09:59:04 -070041export HOSTDIR=$(TOP)/host
Che-Liang Chiou0a0e8d02010-11-30 09:30:45 +080042ifeq ($(FIRMWARE_ARCH),)
Randall Spanglerd0dae7a2010-06-21 18:25:31 -070043export INCLUDES = -I$(FWDIR)/include -I$(FWDIR)/stub/include
Che-Liang Chiou0a0e8d02010-11-30 09:30:45 +080044else
45export INCLUDES = -I$(FWDIR)/include -I$(FWDIR)/arch/$(FIRMWARE_ARCH)/include
46endif
Gaurav Shah322536d2010-01-28 15:01:23 -080047
vbendeb70e95092010-06-14 15:41:27 -070048export BUILD = ${TOP}/build
49export FWLIB = ${BUILD}/vboot_fw.a
Che-Liang Chiou89678602010-11-09 08:33:36 +080050export HOSTLIB = ${BUILD}/vboot_host.a
Bill Richardson0b8f35c2010-05-26 09:18:38 -070051
Che-Liang Chiou0a0e8d02010-11-30 09:30:45 +080052ifeq ($(FIRMWARE_ARCH),)
Randall Spangler39f66112010-07-14 09:10:23 -070053SUBDIRS = firmware host utility cgpt tests tests/tpm_lite
Che-Liang Chiou0a0e8d02010-11-30 09:30:45 +080054else
55SUBDIRS = firmware
56endif
Gaurav Shah322536d2010-01-28 15:01:23 -080057
58all:
Louis Yung-Chieh Lob31ddce2010-05-21 16:35:44 +080059 set -e; \
vbendeb70e95092010-06-14 15:41:27 -070060 for d in $(shell find ${SUBDIRS} -name '*.c' -exec dirname {} \; |\
61 sort -u); do \
62 newdir=${BUILD}/$$d; \
63 if [ ! -d $$newdir ]; then \
64 mkdir -p $$newdir; \
65 fi; \
Luigi Semenzato5896b962010-08-25 07:16:03 -070066 done; \
Che-Liang Chiou0a0e8d02010-11-30 09:30:45 +080067 [ -z "$(FIRMWARE_ARCH)" ] && make -C utility update_tlcl_structures; \
Gaurav Shah322536d2010-01-28 15:01:23 -080068 for i in $(SUBDIRS); do \
Louis Yung-Chieh Lob31ddce2010-05-21 16:35:44 +080069 make -C $$i; \
Gaurav Shah322536d2010-01-28 15:01:23 -080070 done
71
72clean:
vbendeb70e95092010-06-14 15:41:27 -070073 /bin/rm -rf ${BUILD}
Bill Richardson371df8b2010-05-27 14:19:47 -070074
75install:
76 $(MAKE) -C utility install
Bill Richardsonf1372d92010-06-11 09:15:55 -070077 $(MAKE) -C cgpt install
Gaurav Shahe6421982010-06-03 07:49:32 -070078
79runtests:
80 $(MAKE) -C tests runtests
Luigi Semenzato18b814d2010-07-08 17:17:02 -070081
82rbtest:
83 $(MAKE) -C tests rbtest