mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-25 09:17:33 +00:00
The -isystem and the rest of the CFLAGS for firmware builds is copied
from U-Boot, where U-Boot generates it on the fly, as a temporary
solution before we figure out how make the CFLAGS right.
Given that, the hard-coded -isystem is both incorrect (since tool chain
is upgraded to a new version) and unnecessary. It is unnecessary
because firmware lib is carefully written that the lib does not (and
probably should not) depend on any system header.
Even if in the future a system header is added to the firmware lib,
because firmware build sets -nostdinc to CFLAGS, the compiler will
safely report missing header instead of silently using the standard
system header.
So this commit removes the -isystem.
BUG=chromium-os:16808
TEST=Make sure non-firmware build still works by running
`emerge-{tegra2_seaboard,x86-alex} vboot_reference`
TEST=Run firmware build successfully
`emerge-{tegra2_seaboard,x86-alex} vboot_reference-firmware`
TEST=Add #include<stdarg.h> to any header in firmware/include/ and run
firmware build again and observe build fail on missing stdarg.h
Change-Id: I8291390f21a975446993640d7a92a3eed4750e32
Reviewed-on: http://gerrit.chromium.org/gerrit/10072
Tested-by: Che-Liang Chiou <clchiou@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
108 lines
2.6 KiB
Makefile
108 lines
2.6 KiB
Makefile
# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
export FIRMWARE_ARCH
|
|
export MOCK_TPM
|
|
|
|
export CC ?= gcc
|
|
export CXX ?= g++
|
|
export CFLAGS = -Wall -Werror
|
|
|
|
ifeq (${DEBUG},)
|
|
CFLAGS += -O3
|
|
else
|
|
CFLAGS += -O0 -g
|
|
endif
|
|
|
|
#
|
|
# TODO(crosbug.com/16808) We hard-code u-boot's compiler flags here just
|
|
# temporarily. As we are still investigating which flags are necessary for
|
|
# maintaining a compatible ABI, etc. between u-boot and vboot_reference.
|
|
#
|
|
# Override CC and CFLAGS for firmware builds; if you have any -D flags, please
|
|
# add them after this point (e.g., -DVBOOT_DEBUG).
|
|
#
|
|
ifeq ($(FIRMWARE_ARCH), arm)
|
|
CC = armv7a-cros-linux-gnueabi-gcc
|
|
CFLAGS = -g -Os -fno-common -ffixed-r8 -msoft-float -fno-builtin \
|
|
-ffreestanding -nostdinc \
|
|
-pipe -marm -mabi=aapcs-linux -mno-thumb-interwork -march=armv5 \
|
|
-Werror -Wall -Wstrict-prototypes -fno-stack-protector
|
|
endif
|
|
ifeq ($(FIRMWARE_ARCH), i386)
|
|
CC = i686-pc-linux-gnu-gcc
|
|
CFLAGS = -g -Os -ffunction-sections -fvisibility=hidden -fno-builtin \
|
|
-ffreestanding -nostdinc \
|
|
-pipe -fno-strict-aliasing -Wstrict-prototypes -mregparm=3 \
|
|
-fomit-frame-pointer -ffreestanding -fno-toplevel-reorder \
|
|
-fno-stack-protector -mpreferred-stack-boundary=2 -fno-dwarf2-cfi-asm \
|
|
-march=i386 -Werror -Wall -Wstrict-prototypes -fno-stack-protector
|
|
endif
|
|
|
|
# Fix compiling directly on host (outside of emake)
|
|
ifeq ($(ARCH),)
|
|
export ARCH=amd64
|
|
endif
|
|
|
|
ifeq ($(FIRMWARE_ARCH),)
|
|
CFLAGS += -DCHROMEOS_ENVIRONMENT
|
|
endif
|
|
|
|
ifneq (${DEBUG},)
|
|
CFLAGS += -DVBOOT_DEBUG
|
|
endif
|
|
|
|
ifeq (${DISABLE_NDEBUG},)
|
|
CFLAGS += -DNDEBUG
|
|
endif
|
|
|
|
export TOP = $(shell pwd)
|
|
export FWDIR=$(TOP)/firmware
|
|
export HOSTDIR=$(TOP)/host
|
|
ifeq ($(FIRMWARE_ARCH),)
|
|
export INCLUDES = -I$(FWDIR)/include -I$(FWDIR)/stub/include
|
|
else
|
|
export INCLUDES = -I$(FWDIR)/include -I$(FWDIR)/arch/$(FIRMWARE_ARCH)/include
|
|
endif
|
|
|
|
export BUILD = ${TOP}/build
|
|
export FWLIB = ${BUILD}/vboot_fw.a
|
|
export HOSTLIB = ${BUILD}/vboot_host.a
|
|
|
|
ifeq ($(FIRMWARE_ARCH),)
|
|
SUBDIRS = firmware host utility cgpt tests tests/tpm_lite
|
|
else
|
|
SUBDIRS = firmware
|
|
endif
|
|
|
|
all:
|
|
set -e; \
|
|
for d in $(shell find ${SUBDIRS} -name '*.c' -exec dirname {} \; |\
|
|
sort -u); do \
|
|
newdir=${BUILD}/$$d; \
|
|
if [ ! -d $$newdir ]; then \
|
|
mkdir -p $$newdir; \
|
|
fi; \
|
|
done; \
|
|
[ -z "$(FIRMWARE_ARCH)" ] && make -C utility update_tlcl_structures; \
|
|
for i in $(SUBDIRS); do \
|
|
make -C $$i; \
|
|
done
|
|
|
|
clean:
|
|
/bin/rm -rf ${BUILD}
|
|
|
|
install:
|
|
$(MAKE) -C utility install
|
|
$(MAKE) -C cgpt install
|
|
|
|
runtests:
|
|
$(MAKE) -C tests runtests
|
|
|
|
rbtest:
|
|
$(MAKE) -C tests rbtest
|
|
|
|
runbmptests:
|
|
$(MAKE) -C tests runbmptests
|