diff options
Diffstat (limited to 'util/nvmutil/Makefile')
| -rw-r--r-- | util/nvmutil/Makefile | 88 |
1 files changed, 73 insertions, 15 deletions
diff --git a/util/nvmutil/Makefile b/util/nvmutil/Makefile index 6488ca43..6b4ee3c5 100644 --- a/util/nvmutil/Makefile +++ b/util/nvmutil/Makefile @@ -11,10 +11,8 @@ DESTDIR?= PREFIX?=/usr/local INSTALL?=install -.SUFFIXES: +.SUFFIXES: .c .o -# maybe add -I. here when running make -# e.g. make LDIR=-I. LDIR?= PORTABLE?=$(LDIR) $(CFLAGS) @@ -22,24 +20,73 @@ WARN?=$(PORTABLE) -Wall -Wextra STRICT?=$(WARN) -std=c90 -pedantic -Werror HELLFLAGS?=$(STRICT) -Weverything -# program name PROG=nvmutil -all: $(PROG) +# source files + +SRCS = nvmutil.c state.c file.c string.c usage.c command.c num.c io.c \ + checksum.c word.c + +# object files + +OBJS = $(SRCS:.c=.o) + +# default mode + +MODE?=portable + +# default mode, options + +CFLAGS_MODE=$(PORTABLE) +CC_MODE=$(CC) + +# override modes (options) -$(PROG): $(PROG).c - $(CC) $(PORTABLE) $(PROG).c -o $(PROG) $(LDFLAGS) +ifeq ($(MODE),warn) +CFLAGS_MODE=$(WARN) +endif -warn: $(PROG).c - $(CC) $(WARN) $(PROG).c -o $(PROG) $(LDFLAGS) +ifeq ($(MODE),strict) +CFLAGS_MODE=$(STRICT) +endif -strict: $(PROG).c - $(CC) $(STRICT) $(PROG).c -o $(PROG) $(LDFLAGS) +ifeq ($(MODE),hell) +CFLAGS_MODE=$(HELLFLAGS) +CC_MODE=$(HELLCC) +endif -# clang-only extreme warnings (not portable) -hell: $(PROG).c - $(HELLCC) $(HELLFLAGS) $(PROG).c -o $(PROG) $(LDFLAGS) +# (rebuild on .h changes) +# (commented for portability) +# +# CFLAGS_MODE += -MMD -MP +# -include $(OBJS:.o=.d) +# +# likely more compatible, +# on its own: +# -include $(OBJS:.o=.d) +# +# i want this to build on +# old make, so i'll leave +# this blanked by default +all: $(PROG) + +$(PROG): $(OBJS) + $(CC_MODE) $(OBJS) -o $(PROG) $(LDFLAGS) + +# generic rules + +# .c.o: is the old style (portable) +# modern equivalent: +# %.o: %.c +# +.c.o: + $(CC_MODE) $(CFLAGS_MODE) -c $< -o $@ + +# -m in install is not portable +# to old/other/weird versions. +# use chmod directly. +# install: $(PROG) $(INSTALL) -d $(DESTDIR)$(PREFIX)/bin $(INSTALL) $(PROG) $(DESTDIR)$(PREFIX)/bin/$(PROG) @@ -49,8 +96,19 @@ uninstall: rm -f $(DESTDIR)$(PREFIX)/bin/$(PROG) clean: - rm -f $(PROG) + rm -f $(PROG) $(OBJS) *.d distclean: clean +# easy commands + +warn: + $(MAKE) MODE=warn + +strict: + $(MAKE) MODE=strict + +hell: + $(MAKE) MODE=hell + .PHONY: all warn strict hell install uninstall clean distclean |
