Makefile revision 250549d3e742cddaf72b4f53d5739e54faf5db96
10fc95946347a3318b41372aa8e2a4509a384e92bDon Garrett# Copyright (c) 2012 The Chromium OS Authors. All rights reserved. 2322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah# Use of this source code is governed by a BSD-style license that can be 3322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah# found in the LICENSE file. 4322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 50a0e8d0bb26c951a895c5034a4c1c12f3d4e8707Che-Liang Chiouexport FIRMWARE_ARCH 68511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiouexport MOCK_TPM 70a0e8d0bb26c951a895c5034a4c1c12f3d4e8707Che-Liang Chiou 86d696e532c6a0c93ad9b915c59dad4144e6f1b33Simon Glass# This Makefile normally builds in a 'build' subdir, but use 96d696e532c6a0c93ad9b915c59dad4144e6f1b33Simon Glass# 106d696e532c6a0c93ad9b915c59dad4144e6f1b33Simon Glass# make BUILD=<dir> 116d696e532c6a0c93ad9b915c59dad4144e6f1b33Simon Glass# 126d696e532c6a0c93ad9b915c59dad4144e6f1b33Simon Glass# to put the output somewhere else 136d696e532c6a0c93ad9b915c59dad4144e6f1b33Simon Glass 14b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass# 15b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass# Provide default CC and CFLAGS for firmware builds; if you have any -D flags, 16b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass# please add them after this point (e.g., -DVBOOT_DEBUG). 1774359b755c4a203df0fe3bf51fc53d5de87d1fbfChe-Liang Chiou# 186b0003c6381a7e69818b0b34b358c2cfb1393043Che-Liang Chiou# TODO(crosbug.com/16808) We hard-code u-boot's compiler flags here just 196b0003c6381a7e69818b0b34b358c2cfb1393043Che-Liang Chiou# temporarily. As we are still investigating which flags are necessary for 206b0003c6381a7e69818b0b34b358c2cfb1393043Che-Liang Chiou# maintaining a compatible ABI, etc. between u-boot and vboot_reference. 2174359b755c4a203df0fe3bf51fc53d5de87d1fbfChe-Liang Chiou# 22b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass# As a first step, this makes the setting of CC and CFLAGS here optional, to 23b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass# permit a calling script or Makefile to set these. 2474359b755c4a203df0fe3bf51fc53d5de87d1fbfChe-Liang Chiou# 25b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass# Flag ordering: arch, then -f, then -m, then -W 26b265c34321c01bd279f3a1df0a2fea3601f732eeSimon GlassDEBUG_FLAGS := $(if ${DEBUG},-g -O0,-Os) 27b265c34321c01bd279f3a1df0a2fea3601f732eeSimon GlassCOMMON_FLAGS := -nostdinc -pipe \ 28b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass -ffreestanding -fno-builtin -fno-stack-protector \ 29b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass -Werror -Wall -Wstrict-prototypes $(DEBUG_FLAGS) 30b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass 317604a7dba239c1f4f1ce2561d3c5aa968dc53d8dChe-Liang Chiouifeq ($(FIRMWARE_ARCH), arm) 32b265c34321c01bd279f3a1df0a2fea3601f732eeSimon GlassCC ?= armv7a-cros-linux-gnueabi-gcc 33b265c34321c01bd279f3a1df0a2fea3601f732eeSimon GlassCFLAGS ?= -march=armv5 \ 34b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass -fno-common -ffixed-r8 \ 35b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass -msoft-float -marm -mabi=aapcs-linux -mno-thumb-interwork \ 36b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass $(COMMON_FLAGS) 3774359b755c4a203df0fe3bf51fc53d5de87d1fbfChe-Liang Chiouendif 387604a7dba239c1f4f1ce2561d3c5aa968dc53d8dChe-Liang Chiouifeq ($(FIRMWARE_ARCH), i386) 39b265c34321c01bd279f3a1df0a2fea3601f732eeSimon GlassCC ?= i686-pc-linux-gnu-gcc 40b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass# Drop -march=i386 to permit use of SSE instructions 41b265c34321c01bd279f3a1df0a2fea3601f732eeSimon GlassCFLAGS ?= \ 42b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass -ffunction-sections -fvisibility=hidden -fno-strict-aliasing \ 43b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass -fomit-frame-pointer -fno-toplevel-reorder -fno-dwarf2-cfi-asm \ 44b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass -mpreferred-stack-boundary=2 -mregparm=3 \ 45b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass $(COMMON_FLAGS) 4634be8273e0fb80a6654deab650e581b0dc9046a4Che-Liang Chiouendif 478e85e987739281161ece1dbc9ff2b73f3e8e1e35Simon Glassifeq ($(FIRMWARE_ARCH), x86_64) 488e85e987739281161ece1dbc9ff2b73f3e8e1e35Simon GlassCFLAGS ?= $(COMMON_FLAGS) \ 498e85e987739281161ece1dbc9ff2b73f3e8e1e35Simon Glass -fvisibility=hidden -fno-strict-aliasing -fomit-frame-pointer 508e85e987739281161ece1dbc9ff2b73f3e8e1e35Simon Glassendif 5134be8273e0fb80a6654deab650e581b0dc9046a4Che-Liang Chiou 52b265c34321c01bd279f3a1df0a2fea3601f732eeSimon GlassCC ?= gcc 53b265c34321c01bd279f3a1df0a2fea3601f732eeSimon GlassCXX ?= g++ 54b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass 55287beaed7f8ceff679c57664d4da008c6234edfdRandall Spangler# Fix compiling directly on host (outside of emake) 56287beaed7f8ceff679c57664d4da008c6234edfdRandall Spanglerifeq ($(ARCH),) 57287beaed7f8ceff679c57664d4da008c6234edfdRandall Spanglerexport ARCH=amd64 58287beaed7f8ceff679c57664d4da008c6234edfdRandall Spanglerendif 59287beaed7f8ceff679c57664d4da008c6234edfdRandall Spangler 6034be8273e0fb80a6654deab650e581b0dc9046a4Che-Liang Chiouifeq ($(FIRMWARE_ARCH),) 6134be8273e0fb80a6654deab650e581b0dc9046a4Che-Liang ChiouCFLAGS += -DCHROMEOS_ENVIRONMENT 6234be8273e0fb80a6654deab650e581b0dc9046a4Che-Liang Chiouendif 6334be8273e0fb80a6654deab650e581b0dc9046a4Che-Liang Chiou 6434be8273e0fb80a6654deab650e581b0dc9046a4Che-Liang Chiouifneq (${DEBUG},) 6534be8273e0fb80a6654deab650e581b0dc9046a4Che-Liang ChiouCFLAGS += -DVBOOT_DEBUG 66b2b0fcc0f62fadce6f854bf14826a9778c0f7632vbendebendif 670a0e8d0bb26c951a895c5034a4c1c12f3d4e8707Che-Liang Chiou 68b2b0fcc0f62fadce6f854bf14826a9778c0f7632vbendebifeq (${DISABLE_NDEBUG},) 69b2b0fcc0f62fadce6f854bf14826a9778c0f7632vbendebCFLAGS += -DNDEBUG 70b2b0fcc0f62fadce6f854bf14826a9778c0f7632vbendebendif 71b2b0fcc0f62fadce6f854bf14826a9778c0f7632vbendeb 72b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glassexport CC CXX CFLAGS 73b265c34321c01bd279f3a1df0a2fea3601f732eeSimon Glass 747ca31f3e4d21bb7dfa39e1e4b9ab42c7047e66d8Gaurav Shahexport TOP = $(shell pwd) 75620c38cf34eadcd222535b01fb71c5e9fbc1cb80Randall Spanglerexport FWDIR=$(TOP)/firmware 76d183644564ec27c106a3eb1931f565fae167a058Randall Spanglerexport HOSTDIR=$(TOP)/host 770a0e8d0bb26c951a895c5034a4c1c12f3d4e8707Che-Liang Chiouifeq ($(FIRMWARE_ARCH),) 78d0dae7a4388139161c56e5b3c37a6e079f9558fdRandall Spanglerexport INCLUDES = -I$(FWDIR)/include -I$(FWDIR)/stub/include 790a0e8d0bb26c951a895c5034a4c1c12f3d4e8707Che-Liang Chiouelse 800a0e8d0bb26c951a895c5034a4c1c12f3d4e8707Che-Liang Chiouexport INCLUDES = -I$(FWDIR)/include -I$(FWDIR)/arch/$(FIRMWARE_ARCH)/include 810a0e8d0bb26c951a895c5034a4c1c12f3d4e8707Che-Liang Chiouendif 82322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 836d696e532c6a0c93ad9b915c59dad4144e6f1b33Simon Glassexport BUILD ?= ${TOP}/build 8470e9509a2748c0ee8646d77f2a0e6fcbb1446505vbendebexport FWLIB = ${BUILD}/vboot_fw.a 8589678602e66df24dea75b384ce079519cb8ec2a4Che-Liang Chiouexport HOSTLIB = ${BUILD}/vboot_host.a 86ed5fcc0191ca1ce959b4614f3f6fa861135f506fDon Garrettexport DUMPKERNELCONFIGLIB = ${BUILD}/libdump_kernel_config.a 870b8f35c6a56a0e645254dd7f07ca68e01c8ee629Bill Richardson 880a0e8d0bb26c951a895c5034a4c1c12f3d4e8707Che-Liang Chiouifeq ($(FIRMWARE_ARCH),) 8939f66114c03639715cb88774255f066a2d942557Randall SpanglerSUBDIRS = firmware host utility cgpt tests tests/tpm_lite 900a0e8d0bb26c951a895c5034a4c1c12f3d4e8707Che-Liang Chiouelse 910a0e8d0bb26c951a895c5034a4c1c12f3d4e8707Che-Liang ChiouSUBDIRS = firmware 920a0e8d0bb26c951a895c5034a4c1c12f3d4e8707Che-Liang Chiouendif 93322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 94322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahall: 95b31ddcec6a826986cd215725bf4defbc6021fe6bLouis Yung-Chieh Lo set -e; \ 9670e9509a2748c0ee8646d77f2a0e6fcbb1446505vbendeb for d in $(shell find ${SUBDIRS} -name '*.c' -exec dirname {} \; |\ 9770e9509a2748c0ee8646d77f2a0e6fcbb1446505vbendeb sort -u); do \ 9870e9509a2748c0ee8646d77f2a0e6fcbb1446505vbendeb newdir=${BUILD}/$$d; \ 9970e9509a2748c0ee8646d77f2a0e6fcbb1446505vbendeb if [ ! -d $$newdir ]; then \ 10070e9509a2748c0ee8646d77f2a0e6fcbb1446505vbendeb mkdir -p $$newdir; \ 10170e9509a2748c0ee8646d77f2a0e6fcbb1446505vbendeb fi; \ 1025896b9664d088699e246de964a7c374af663a34eLuigi Semenzato done; \ 1036d696e532c6a0c93ad9b915c59dad4144e6f1b33Simon Glass [ -z "$(FIRMWARE_ARCH)" ] && $(MAKE) -C utility update_tlcl_structures; \ 104322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah for i in $(SUBDIRS); do \ 105b31ddcec6a826986cd215725bf4defbc6021fe6bLouis Yung-Chieh Lo make -C $$i; \ 106322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah done 107322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 108250549d3e742cddaf72b4f53d5739e54faf5db96Jay Srinivasanlibcgpt_cc: all 109250549d3e742cddaf72b4f53d5739e54faf5db96Jay Srinivasan $(MAKE) -C cgpt libcgpt_cc 110250549d3e742cddaf72b4f53d5739e54faf5db96Jay Srinivasan $(MAKE) -C tests CgptManagerTests 111250549d3e742cddaf72b4f53d5739e54faf5db96Jay Srinivasan 112322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahclean: 11370e9509a2748c0ee8646d77f2a0e6fcbb1446505vbendeb /bin/rm -rf ${BUILD} 114371df8bbbf9088dc1206701bdc2294d9598bb339Bill Richardson 115371df8bbbf9088dc1206701bdc2294d9598bb339Bill Richardsoninstall: 116371df8bbbf9088dc1206701bdc2294d9598bb339Bill Richardson $(MAKE) -C utility install 117f1372d9109d638fbb1a177a89ebaf64e7ee0637eBill Richardson $(MAKE) -C cgpt install 118e642198b93cf2c50e279a6598f21f69564b13c6fGaurav Shah 119e642198b93cf2c50e279a6598f21f69564b13c6fGaurav Shahruntests: 120e642198b93cf2c50e279a6598f21f69564b13c6fGaurav Shah $(MAKE) -C tests runtests 12118b814d9bc7fcf0a7e5d7fca57eed8229f0e9aacLuigi Semenzato 122250549d3e742cddaf72b4f53d5739e54faf5db96Jay Srinivasanruncgptmanagertests: 123250549d3e742cddaf72b4f53d5739e54faf5db96Jay Srinivasan $(MAKE) -C tests runcgptmanagertests 124250549d3e742cddaf72b4f53d5739e54faf5db96Jay Srinivasan 12518b814d9bc7fcf0a7e5d7fca57eed8229f0e9aacLuigi Semenzatorbtest: 12618b814d9bc7fcf0a7e5d7fca57eed8229f0e9aacLuigi Semenzato $(MAKE) -C tests rbtest 127856e072e8119cab07fd884e54853f1c3897452eeBill Richardson 128856e072e8119cab07fd884e54853f1c3897452eeBill Richardsonrunbmptests: 129856e072e8119cab07fd884e54853f1c3897452eeBill Richardson $(MAKE) -C tests runbmptests 130