mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-26 22:52:34 +02:00
Allow the user to specify CFLAGS without breaking the build
GNU make has a very interesting quirk: If you set a variable on the command line, any changes to that variable in the Makefile are ignored unless marked with the "override" keyword. Use CFLAGS only for optimization and warning options, and use CPPFLAGS for the dependency and other preprocessor related options. That way packagers can specify their own CFLAGS without breaking the build. As a side benefit, the ich_descriptors_tool Makefile now behaves exactly the same whether called standalone or as part of the main Makefile. Corresponding to flashrom svn r1574. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
This commit is contained in:
parent
7c36d52652
commit
b7bce8a6cf
7
Makefile
7
Makefile
@ -26,6 +26,9 @@ PROGRAM = flashrom
|
|||||||
# If you want to cross-compile, just run e.g.
|
# If you want to cross-compile, just run e.g.
|
||||||
# make CC=i586-pc-msdosdjgpp-gcc
|
# make CC=i586-pc-msdosdjgpp-gcc
|
||||||
# You may have to specify STRIP/AR/RANLIB as well.
|
# You may have to specify STRIP/AR/RANLIB as well.
|
||||||
|
#
|
||||||
|
# Note for anyone editing this Makefile: gnumake will happily ignore any
|
||||||
|
# changes in this Makefile to variables set on the command line.
|
||||||
CC ?= gcc
|
CC ?= gcc
|
||||||
STRIP ?= strip
|
STRIP ?= strip
|
||||||
INSTALL = install
|
INSTALL = install
|
||||||
@ -83,7 +86,7 @@ ifeq ($(TARGET_OS), DOS)
|
|||||||
EXEC_SUFFIX := .exe
|
EXEC_SUFFIX := .exe
|
||||||
CPPFLAGS += -I../libgetopt
|
CPPFLAGS += -I../libgetopt
|
||||||
# DJGPP has odd uint*_t definitions which cause lots of format string warnings.
|
# DJGPP has odd uint*_t definitions which cause lots of format string warnings.
|
||||||
CPPFLAGS += -Wno-format
|
CFLAGS += -Wno-format
|
||||||
# FIXME Check if we can achieve the same effect with -L../libgetopt -lgetopt
|
# FIXME Check if we can achieve the same effect with -L../libgetopt -lgetopt
|
||||||
LIBS += ../libgetopt/libgetopt.a
|
LIBS += ../libgetopt/libgetopt.a
|
||||||
# Bus Pirate, Serprog and PonyProg are not supported under DOS (missing serial support).
|
# Bus Pirate, Serprog and PonyProg are not supported under DOS (missing serial support).
|
||||||
@ -119,7 +122,7 @@ endif
|
|||||||
ifeq ($(TARGET_OS), MinGW)
|
ifeq ($(TARGET_OS), MinGW)
|
||||||
EXEC_SUFFIX := .exe
|
EXEC_SUFFIX := .exe
|
||||||
# MinGW doesn't have the ffs() function, but we can use gcc's __builtin_ffs().
|
# MinGW doesn't have the ffs() function, but we can use gcc's __builtin_ffs().
|
||||||
CFLAGS += -Dffs=__builtin_ffs
|
CPPFLAGS += -Dffs=__builtin_ffs
|
||||||
# libusb-win32/libftdi stuff is usually installed in /usr/local.
|
# libusb-win32/libftdi stuff is usually installed in /usr/local.
|
||||||
CPPFLAGS += -I/usr/local/include
|
CPPFLAGS += -I/usr/local/include
|
||||||
LDFLAGS += -L/usr/local/lib
|
LDFLAGS += -L/usr/local/lib
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
CC ?= gcc
|
#
|
||||||
|
# This file is part of the flashrom project.
|
||||||
|
#
|
||||||
|
# This Makefile works standalone, but it is usually called from the main
|
||||||
|
# Makefile in the flashrom directory.
|
||||||
|
|
||||||
PROGRAM=ich_descriptors_tool
|
PROGRAM=ich_descriptors_tool
|
||||||
EXTRAINCDIRS = ../../ .
|
EXTRAINCDIRS = ../../ .
|
||||||
@ -6,19 +10,30 @@ DEPPATH = .dep
|
|||||||
OBJATH = .obj
|
OBJATH = .obj
|
||||||
SHAREDSRC = ich_descriptors.c
|
SHAREDSRC = ich_descriptors.c
|
||||||
SHAREDSRCDIR = ../..
|
SHAREDSRCDIR = ../..
|
||||||
|
# If your compiler spits out excessive warnings, run make WARNERROR=no
|
||||||
|
# You shouldn't have to change this flag.
|
||||||
|
WARNERROR ?= yes
|
||||||
|
|
||||||
SRC = $(wildcard *.c)
|
SRC = $(wildcard *.c)
|
||||||
|
|
||||||
CFLAGS += -Wall
|
CC ?= gcc
|
||||||
CFLAGS += -MMD -MP -MF $(DEPPATH)/$(@F).d
|
|
||||||
# enables functions that populate the descriptor structs from plain binary dumps
|
|
||||||
CFLAGS += -D ICH_DESCRIPTORS_FROM_DUMP
|
|
||||||
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
|
|
||||||
|
|
||||||
|
# If the user has specified custom CFLAGS, all CFLAGS settings below will be
|
||||||
|
# completely ignored by gnumake.
|
||||||
|
CFLAGS ?= -Os -Wall -Wshadow
|
||||||
ifeq ($(TARGET_OS), DOS)
|
ifeq ($(TARGET_OS), DOS)
|
||||||
# DJGPP has odd uint*_t definitions which cause lots of format string warnings.
|
# DJGPP has odd uint*_t definitions which cause lots of format string warnings.
|
||||||
CFLAGS += -Wno-format
|
CFLAGS += -Wno-format
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(WARNERROR), yes)
|
||||||
|
CFLAGS += -Werror
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
CPPFLAGS += -MMD -MP -MF $(DEPPATH)/$(@F).d
|
||||||
|
# enables functions that populate the descriptor structs from plain binary dumps
|
||||||
|
CPPFLAGS += -D ICH_DESCRIPTORS_FROM_DUMP
|
||||||
|
CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
|
||||||
|
|
||||||
OBJ = $(OBJATH)/$(SRC:%.c=%.o)
|
OBJ = $(OBJATH)/$(SRC:%.c=%.o)
|
||||||
|
|
||||||
@ -27,12 +42,12 @@ SHAREDOBJ = $(OBJATH)/$(notdir $(SHAREDSRC:%.c=%.o))
|
|||||||
all:$(PROGRAM)$(EXEC_SUFFIX)
|
all:$(PROGRAM)$(EXEC_SUFFIX)
|
||||||
|
|
||||||
$(OBJ): $(OBJATH)/%.o : %.c
|
$(OBJ): $(OBJATH)/%.o : %.c
|
||||||
$(CC) $(CFLAGS) -o $@ -c $<
|
$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
|
||||||
|
|
||||||
# this enables us to share source files without simultaneously sharing .o files
|
# this enables us to share source files without simultaneously sharing .o files
|
||||||
# with flashrom, which would lead to unexpected results (w/o running make clean)
|
# with flashrom, which would lead to unexpected results (w/o running make clean)
|
||||||
$(SHAREDOBJ): $(OBJATH)/%.o : $(SHAREDSRCDIR)/%.c
|
$(SHAREDOBJ): $(OBJATH)/%.o : $(SHAREDSRCDIR)/%.c
|
||||||
$(CC) $(CFLAGS) -o $@ -c $<
|
$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
|
||||||
|
|
||||||
$(PROGRAM)$(EXEC_SUFFIX): $(OBJ) $(SHAREDOBJ)
|
$(PROGRAM)$(EXEC_SUFFIX): $(OBJ) $(SHAREDOBJ)
|
||||||
$(CC) -o $(PROGRAM)$(EXEC_SUFFIX) $(OBJ) $(SHAREDOBJ)
|
$(CC) -o $(PROGRAM)$(EXEC_SUFFIX) $(OBJ) $(SHAREDOBJ)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user