blob: f1c4b6012a33224be2f633ce135f7f8f944ede84 [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
6
Gaurav Shah27bfc8b2010-02-17 14:19:24 -08007export CC ?= gcc
Bill Richardsonf1372d92010-06-11 09:15:55 -07008export CXX ?= g++
Chris Sosa9f1973e2011-01-26 18:54:57 -08009export CFLAGS = -Wall -Werror
Che-Liang Chiou440ad512011-01-27 10:23:51 +080010
Chris Sosa9f1973e2011-01-26 18:54:57 -080011ifeq (${DEBUG},)
12CFLAGS += -O3
13else
Che-Liang Chiou34be8272011-01-27 16:44:36 +080014CFLAGS += -O0 -g
15endif
16
17# Override CC and CFLAGS only if FIRMWARE_CONFIG_PATH is not empty, but we
18# wish to preserve -D flags (so move all -D flags after this).
19ifneq (${FIRMWARE_CONFIG_PATH},)
20include ${FIRMWARE_CONFIG_PATH}
21endif
22
Randall Spangler287beae2011-04-11 12:46:40 -070023# Fix compiling directly on host (outside of emake)
24ifeq ($(ARCH),)
25export ARCH=amd64
26endif
27
Che-Liang Chiou34be8272011-01-27 16:44:36 +080028ifeq ($(FIRMWARE_ARCH),)
29CFLAGS += -DCHROMEOS_ENVIRONMENT
30endif
31
32ifneq (${DEBUG},)
33CFLAGS += -DVBOOT_DEBUG
vbendebb2b0fcc2010-07-15 15:09:47 -070034endif
Che-Liang Chiou0a0e8d02010-11-30 09:30:45 +080035
vbendebb2b0fcc2010-07-15 15:09:47 -070036ifeq (${DISABLE_NDEBUG},)
37CFLAGS += -DNDEBUG
38endif
39
Gaurav Shah7ca31f32010-02-16 19:04:11 -080040export TOP = $(shell pwd)
Randall Spangler620c38c2010-06-17 14:45:22 -070041export FWDIR=$(TOP)/firmware
Randall Spanglerd1836442010-06-10 09:59:04 -070042export HOSTDIR=$(TOP)/host
Che-Liang Chiou0a0e8d02010-11-30 09:30:45 +080043ifeq ($(FIRMWARE_ARCH),)
Randall Spanglerd0dae7a2010-06-21 18:25:31 -070044export INCLUDES = -I$(FWDIR)/include -I$(FWDIR)/stub/include
Che-Liang Chiou0a0e8d02010-11-30 09:30:45 +080045else
46export INCLUDES = -I$(FWDIR)/include -I$(FWDIR)/arch/$(FIRMWARE_ARCH)/include
47endif
Gaurav Shah322536d2010-01-28 15:01:23 -080048
vbendeb70e95092010-06-14 15:41:27 -070049export BUILD = ${TOP}/build
50export FWLIB = ${BUILD}/vboot_fw.a
Che-Liang Chiou89678602010-11-09 08:33:36 +080051export HOSTLIB = ${BUILD}/vboot_host.a
Bill Richardson0b8f35c2010-05-26 09:18:38 -070052
Che-Liang Chiou0a0e8d02010-11-30 09:30:45 +080053ifeq ($(FIRMWARE_ARCH),)
Randall Spangler39f66112010-07-14 09:10:23 -070054SUBDIRS = firmware host utility cgpt tests tests/tpm_lite
Che-Liang Chiou0a0e8d02010-11-30 09:30:45 +080055else
56SUBDIRS = firmware
57endif
Gaurav Shah322536d2010-01-28 15:01:23 -080058
59all:
Louis Yung-Chieh Lob31ddce2010-05-21 16:35:44 +080060 set -e; \
vbendeb70e95092010-06-14 15:41:27 -070061 for d in $(shell find ${SUBDIRS} -name '*.c' -exec dirname {} \; |\
62 sort -u); do \
63 newdir=${BUILD}/$$d; \
64 if [ ! -d $$newdir ]; then \
65 mkdir -p $$newdir; \
66 fi; \
Luigi Semenzato5896b962010-08-25 07:16:03 -070067 done; \
Che-Liang Chiou0a0e8d02010-11-30 09:30:45 +080068 [ -z "$(FIRMWARE_ARCH)" ] && make -C utility update_tlcl_structures; \
Gaurav Shah322536d2010-01-28 15:01:23 -080069 for i in $(SUBDIRS); do \
Louis Yung-Chieh Lob31ddce2010-05-21 16:35:44 +080070 make -C $$i; \
Gaurav Shah322536d2010-01-28 15:01:23 -080071 done
72
73clean:
vbendeb70e95092010-06-14 15:41:27 -070074 /bin/rm -rf ${BUILD}
Bill Richardson371df8b2010-05-27 14:19:47 -070075
76install:
77 $(MAKE) -C utility install
Bill Richardsonf1372d92010-06-11 09:15:55 -070078 $(MAKE) -C cgpt install
Gaurav Shahe6421982010-06-03 07:49:32 -070079
80runtests:
81 $(MAKE) -C tests runtests
Luigi Semenzato18b814d2010-07-08 17:17:02 -070082
83rbtest:
84 $(MAKE) -C tests rbtest
Bill Richardson856e0722011-02-07 15:39:45 -080085
86runbmptests:
87 $(MAKE) -C tests runbmptests