Import firmware compiler flags

If passed into Makefile, compiler flags for firmware (so far CC and CFLAGS) will
override old values to make sure that the compiled vboot_reference library has
calling convention and etc. compatible with the firmware.

See also CL:6355014

BUG=None
TEST=See the CL for related ebuilds

Review URL: http://codereview.chromium.org/6257018

Change-Id: I46f77c576d2355f5cde506a0240dd2e2d4a74f0e
diff --git a/Makefile b/Makefile
index 36250fb..94d1f02 100644
--- a/Makefile
+++ b/Makefile
@@ -3,19 +3,33 @@
 # found in the LICENSE file.
 
 export FIRMWARE_ARCH
+export FIRMWARE_CONFIG_PATH
 
 export CC ?= gcc
 export CXX ?= g++
-ifeq ($(FIRMWARE_ARCH),)
-export CFLAGS = -Wall -Werror -DCHROMEOS_ENVIRONMENT
-else
-export CFLAGS = -Wall -Werror
+export CFLAGS
+
+# Include compiler flags if provided.
+# The CC and CFLAGS should not be overridden hereafter.
+ifneq ($(FIRMWARE_CONFIG_PATH),)
+include $(FIRMWARE_CONFIG_PATH)
 endif
 
+# Provides default optimization level if not set by FIRMWARE_CONFIG_PATH
 ifeq (${DEBUG},)
-CFLAGS += -O3
+CFLAGS ?= -O3
 else
-CFLAGS += -O0 -g -DVBOOT_DEBUG
+CFLAGS ?= -O0
+endif
+
+ifeq ($(FIRMWARE_ARCH),)
+CFLAGS += -Wall -Werror -DCHROMEOS_ENVIRONMENT
+else
+CFLAGS += -Wall -Werror
+endif
+
+ifneq (${DEBUG},)
+CFLAGS += -g -DVBOOT_DEBUG
 endif
 
 ifeq (${DISABLE_NDEBUG},)