summaryrefslogtreecommitdiffstats
path: root/lib/build-obj.mk
diff options
context:
space:
mode:
Diffstat (limited to 'lib/build-obj.mk')
-rw-r--r--lib/build-obj.mk73
1 files changed, 73 insertions, 0 deletions
diff --git a/lib/build-obj.mk b/lib/build-obj.mk
new file mode 100644
index 0000000..95c95b2
--- /dev/null
+++ b/lib/build-obj.mk
@@ -0,0 +1,73 @@
+# Copyright 2022 Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-or-later WITH LGPL-3.0-linking-exception
+
+
+ifndef LIB_BUILD_OBJ_MK_
+LIB_BUILD_OBJ_MK_ := 1
+
+
+include $(srcdir)/lib/build.mk
+include $(srcdir)/lib/cmd.mk
+include $(srcdir)/lib/src.mk
+include $(srcdir)/lib/verbose.mk
+include $(srcdir)/lib/version.mk
+
+
+_TU_gch := $(addsuffix .gch,$(_TU_h))
+_TU_i := $(addsuffix .i,$(_TU_c))
+_TU_s := $(addsuffix .s,$(_TU_c))
+_TU_o := $(addsuffix .o,$(_TU_c))
+
+
+$(_TU_gch): %.gch: % $(mk) $(_LIB_pc_u) | %.d $$(@D)/
+ $(info CC (pch) $@)
+ for opt in g 0 1 2 s 3 fast; do \
+ $(CC) $(CPPFLAGS) $(CFLAGS) -O$$opt -c -o $*.O$$opt.gch $<; \
+ done
+ $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
+
+$(_TU_i): %.i: % $(mk) $(_LIB_pc_u) | %.d $$(@D)/
+ $(info CC (cpp) $@)
+ for opt in g 0 1 2 s 3 fast; do \
+ $(CC) $(CPPFLAGS) $(CFLAGS) -O$$opt -E -o $*.O$$opt.i $<; \
+ done
+ $(CC) $(CPPFLAGS) $(CFLAGS) -E -o $@ $<
+
+$(_TU_s): %.s: %.i $(mk) $(_LIB_pc_u) | %.d $$(@D)/
+ $(info CC $@)
+ for opt in g 0 1 2 s 3 fast; do \
+ $(CC) $(CPPFLAGS) $(CFLAGS) -O$$opt -S -o $*.O$$opt.s $*.O$$opt.i; \
+ done
+ $(CC) $(CPPFLAGS) $(CFLAGS) -S -o $@ $<
+
+$(_TU_o): %.c.o: %.c.s %.h.gch $(mk) $(_LIB_pc_u) | %.c.d $$(@D)/
+ $(info CC (as) $@)
+ for opt in g 0 1 2 s 3 fast; do \
+ $(CC) $(CPPFLAGS) $(CFLAGS) -O$$opt -c -o $*.c.O$$opt.o $*.c.O$$opt.s; \
+ done
+ $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
+
+
+.PHONY: build-obj-pch
+build-obj-pch: $(_TU_gch)
+ @:
+
+.PHONY: build-obj-cpp
+build-obj-cpp: $(_TU_i)
+ @:
+
+.PHONY: build-obj-cc
+build-obj-cc: $(_TU_s)
+ @:
+
+.PHONY: build-obj-as
+build-obj-as: $(_TU_o)
+ @:
+
+
+.PHONY: build-obj
+build-obj: build-obj-as
+ @:
+
+
+endif # include guard