summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlejandro Colomar <alx@kernel.org>2023-05-20 21:00:49 +0200
committerAlejandro Colomar <alx@kernel.org>2023-05-20 21:03:07 +0200
commit01a8bd6af7db5b51ab82adfa235da968eb2d8e97 (patch)
tree43792434a85990dbb72f32d4a6b2f283345eeacd
parentc203ed16e2cda8e0c4fa9006c0a98cd9f0bb782a (diff)
Makefile: Create a preprocessed file, and allow appending flags
Signed-off-by: Alejandro Colomar <alx@kernel.org>
-rw-r--r--Makefile43
1 files changed, 32 insertions, 11 deletions
diff --git a/Makefile b/Makefile
index eacfd63..ff498ce 100644
--- a/Makefile
+++ b/Makefile
@@ -11,18 +11,34 @@ builddir := tmp
LIBUNIT_PREFIX := /opt/local/unit
-LIBUNIT_CFLAGS := -isystem$(LIBUNIT_PREFIX)/include
-LIBUNIT_LIBS := -L$(LIBUNIT_PREFIX)/lib -lunit
+LIBUNIT_CPPFLAGS := -isystem$(LIBUNIT_PREFIX)/include
+LIBUNIT_LIBS := -L$(LIBUNIT_PREFIX)/lib -lunit
-CFLAGS := -Wall -Wextra -Werror -std=gnu2x -O3 $(LIBUNIT_CFLAGS)
-ASFLAGS :=
-LDFLAGS :=
-LIBS := $(LIBUNIT_LIBS) -lpthread -lc -lgcc
+DEFAULT_CPPFLAGS := $(LIBUNIT_CPPFLAGS)
+EXTRA_CPPFLAGS :=
+CPPFLAGS := $(DEFAULT_CPPFLAGS) $(EXTRA_CPPFLAGS)
-AR := ar
-AS := as
-CC := cc
-LD := $(CC) $(CFLAGS)
+DEFAULT_CFLAGS := -Wall -Wextra -Werror -std=gnu2x -O3
+EXTRA_CFLAGS :=
+CFLAGS := $(DEFAULT_CFLAGS) $(EXTRA_CFLAGS)
+
+DEFAULT_ASFLAGS :=
+EXTRA_ASFLAGS :=
+ASFLAGS := $(DEFAULT_ASFLAGS) $(EXTRA_ASFLAGS)
+
+DEFAULT_LDFLAGS :=
+EXTRA_LDFLAGS :=
+LDFLAGS := $(DEFAULT_LDFLAGS) $(EXTRA_LDFLAGS)
+
+DEFAULT_LIBS := $(LIBUNIT_LIBS) -lpthread -lc -lgcc
+EXTRA_LIBS :=
+LIBS := $(DEFAULT_LIBS) $(EXTRA_LIBS)
+
+AR := ar
+AS := as
+CC := cc
+CPP := $(CC) -E $(CFLAGS)
+LD := $(CC) $(CFLAGS)
FIND := find
@@ -34,6 +50,7 @@ SORT := sort
SRCDIR := $(srcdir)/src
SRC := $(shell $(FIND) $(SRCDIR) -type f | $(GREP) '\.c$$' | $(SORT))
+I := $(patsubst $(srcdir)/%.c,$(builddir)/%.i,$(SRC))
ASM := $(patsubst $(srcdir)/%.c,$(builddir)/%.s,$(SRC))
OBJ := $(patsubst %.s,%.o,$(ASM))
BIN := $(builddir)/unit_c_app
@@ -49,7 +66,11 @@ all: $(BIN)
.SECONDEXPANSION:
-$(ASM): $(builddir)/%.s: $(srcdir)/%.c Makefile | $$(@D)/
+$(I): $(builddir)/%.i: $(srcdir)/%.c Makefile | $$(@D)/
+ $(info CPP $@)
+ $(CPP) $(CPPFLAGS) -o $@ $<
+
+$(ASM): %.s: %.i Makefile | $$(@D)/
$(info CC $@)
$(CC) -S $(CFLAGS) -o $@ $<