libreboot-utils: always use strict cc flags

otherwise, i will end up with a mess like the
one i recently fixed.

we always want to use correct C. the current
spec is set to c99, with -pedantic turned on.

flags now:

-Os -Wall -Wextra -std=c99 -pedantic -Werror

if you do: make hell, you get (uses clang):
-Os -Wall -Wextra -std=c99 -pedantic -Werror -Weverything

i initially loosened up the Makefile rules, so
that the code would be more "portable", but
every compiler worth caring about has these
flags, and turning them on is advisable,
especially pedantic and -std, because you want
to have some guarantee that the compiler is
generating correct code; if the standard is
left ambiguous, you could be introducing subtle
bugs when people compile it, because who knows
what spec the compiler is using?

Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
Leah Rowe
2026-04-01 10:08:19 +01:00
parent 861f56375a
commit d100ea1d2f
+19 -29
View File
@@ -8,7 +8,7 @@
CC = cc CC = cc
HELLCC = clang HELLCC = clang
CFLAGS = CFLAGS = -Os -Wall -Wextra -std=c99 -pedantic -Werror
LDFLAGS = LDFLAGS =
DESTDIR = DESTDIR =
PREFIX = /usr/local PREFIX = /usr/local
@@ -18,9 +18,6 @@ INSTALL = install
LDIR = LDIR =
PORTABLE = $(LDIR) $(CFLAGS)
WARN = $(PORTABLE) -Wall -Wextra
STRICT = $(WARN) -std=c99 -pedantic -Werror
HELLFLAGS = $(STRICT) -Weverything HELLFLAGS = $(STRICT) -Weverything
PROG = nvmutil PROG = nvmutil
@@ -58,19 +55,18 @@ OBJS_LOTTERY = \
obj/lib/rand.o obj/lib/rand.o
# default mode # default mode
CFLAGS_MODE = $(PORTABLE)
CC_MODE = $(CC) CC_MODE = $(CC)
all: $(PROG) $(PROGMKH) $(PROGLOT) all: $(PROG) $(PROGMKH) $(PROGLOT)
$(PROG): $(OBJS_NVMUTIL) $(PROG): $(OBJS_NVMUTIL)
$(CC_MODE) $(OBJS_NVMUTIL) -o $(PROG) $(LDFLAGS) $(CC_MODE) $(CFLAGS) $(OBJS_NVMUTIL) -o $(PROG) $(LDFLAGS)
$(PROGMKH): $(OBJS_MKHTEMP) $(PROGMKH): $(OBJS_MKHTEMP)
$(CC_MODE) $(OBJS_MKHTEMP) -o $(PROGMKH) $(LDFLAGS) $(CC_MODE) $(CFLAGS) $(OBJS_MKHTEMP) -o $(PROGMKH) $(LDFLAGS)
$(PROGLOT): $(OBJS_LOTTERY) $(PROGLOT): $(OBJS_LOTTERY)
$(CC_MODE) $(OBJS_LOTTERY) -o $(PROGLOT) $(LDFLAGS) $(CC_MODE) $(CFLAGS) $(OBJS_LOTTERY) -o $(PROGLOT) $(LDFLAGS)
# ensure obj directory exists # ensure obj directory exists
$(OBJS_NVMUTIL): obj $(OBJS_NVMUTIL): obj
@@ -84,48 +80,48 @@ obj:
# main program object # main program object
obj/nvmutil.o: nvmutil.c obj/nvmutil.o: nvmutil.c
$(CC_MODE) $(CFLAGS_MODE) -c nvmutil.c -o obj/nvmutil.o $(CC_MODE) $(CFLAGS) -c nvmutil.c -o obj/nvmutil.o
obj/mkhtemp.o: mkhtemp.c obj/mkhtemp.o: mkhtemp.c
$(CC_MODE) $(CFLAGS_MODE) -c mkhtemp.c -o obj/mkhtemp.o $(CC_MODE) $(CFLAGS) -c mkhtemp.c -o obj/mkhtemp.o
obj/lottery.o: lottery.c obj/lottery.o: lottery.c
$(CC_MODE) $(CFLAGS_MODE) -c lottery.c -o obj/lottery.o $(CC_MODE) $(CFLAGS) -c lottery.c -o obj/lottery.o
# library/helper objects # library/helper objects
obj/lib/state.o: lib/state.c obj/lib/state.o: lib/state.c
$(CC_MODE) $(CFLAGS_MODE) -c lib/state.c -o obj/lib/state.o $(CC_MODE) $(CFLAGS) -c lib/state.c -o obj/lib/state.o
obj/lib/file.o: lib/file.c obj/lib/file.o: lib/file.c
$(CC_MODE) $(CFLAGS_MODE) -c lib/file.c -o obj/lib/file.o $(CC_MODE) $(CFLAGS) -c lib/file.c -o obj/lib/file.o
obj/lib/string.o: lib/string.c obj/lib/string.o: lib/string.c
$(CC_MODE) $(CFLAGS_MODE) -c lib/string.c -o obj/lib/string.o $(CC_MODE) $(CFLAGS) -c lib/string.c -o obj/lib/string.o
obj/lib/usage.o: lib/usage.c obj/lib/usage.o: lib/usage.c
$(CC_MODE) $(CFLAGS_MODE) -c lib/usage.c -o obj/lib/usage.o $(CC_MODE) $(CFLAGS) -c lib/usage.c -o obj/lib/usage.o
obj/lib/command.o: lib/command.c obj/lib/command.o: lib/command.c
$(CC_MODE) $(CFLAGS_MODE) -c lib/command.c -o obj/lib/command.o $(CC_MODE) $(CFLAGS) -c lib/command.c -o obj/lib/command.o
obj/lib/num.o: lib/num.c obj/lib/num.o: lib/num.c
$(CC_MODE) $(CFLAGS_MODE) -c lib/num.c -o obj/lib/num.o $(CC_MODE) $(CFLAGS) -c lib/num.c -o obj/lib/num.o
obj/lib/io.o: lib/io.c obj/lib/io.o: lib/io.c
$(CC_MODE) $(CFLAGS_MODE) -c lib/io.c -o obj/lib/io.o $(CC_MODE) $(CFLAGS) -c lib/io.c -o obj/lib/io.o
obj/lib/checksum.o: lib/checksum.c obj/lib/checksum.o: lib/checksum.c
$(CC_MODE) $(CFLAGS_MODE) -c lib/checksum.c -o obj/lib/checksum.o $(CC_MODE) $(CFLAGS) -c lib/checksum.c -o obj/lib/checksum.o
obj/lib/word.o: lib/word.c obj/lib/word.o: lib/word.c
$(CC_MODE) $(CFLAGS_MODE) -c lib/word.c -o obj/lib/word.o $(CC_MODE) $(CFLAGS) -c lib/word.c -o obj/lib/word.o
obj/lib/mkhtemp.o: lib/mkhtemp.c obj/lib/mkhtemp.o: lib/mkhtemp.c
$(CC_MODE) $(CFLAGS_MODE) -c lib/mkhtemp.c -o obj/lib/mkhtemp.o $(CC_MODE) $(CFLAGS) -c lib/mkhtemp.c -o obj/lib/mkhtemp.o
obj/lib/rand.o: lib/rand.c obj/lib/rand.o: lib/rand.c
$(CC_MODE) $(CFLAGS_MODE) -c lib/rand.c -o obj/lib/rand.o $(CC_MODE) $(CFLAGS) -c lib/rand.c -o obj/lib/rand.o
# install # install
@@ -151,11 +147,5 @@ distclean: clean
# mode targets (portable replacement for ifeq) # mode targets (portable replacement for ifeq)
warn:
$(MAKE) CFLAGS_MODE="$(WARN)"
strict: strict:
$(MAKE) CFLAGS_MODE="$(STRICT)" $(MAKE) CFLAGS="$(HELLFLAGS)" CC_MODE="$(HELLCC)"
hell:
$(MAKE) CFLAGS_MODE="$(HELLFLAGS)" CC_MODE="$(HELLCC)"