summaryrefslogtreecommitdiffstats
path: root/lib/build-deps.mk
diff options
context:
space:
mode:
Diffstat (limited to 'lib/build-deps.mk')
-rw-r--r--lib/build-deps.mk93
1 files changed, 93 insertions, 0 deletions
diff --git a/lib/build-deps.mk b/lib/build-deps.mk
new file mode 100644
index 0000000..0a2905e
--- /dev/null
+++ b/lib/build-deps.mk
@@ -0,0 +1,93 @@
+# Copyright 2022 Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-or-later WITH LGPL-3.0-linking-exception
+
+
+ifndef LIB_BUILD_DEPS_MK_
+LIB_BUILD_DEPS_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
+
+
+PKGCONF_ENV := PKG_CONFIG_PATH=$(srcdir)/share/pkgconfig
+DEFAULT_PKGCONFFLAGS :=
+EXTRA_PKGCONFFLAGS :=
+PKGCONFFLAGS := $(DEFAULT_PKGCONFFLAGS) $(EXTRA_PKGCONFFLAGS)
+PKGCONF := pkgconf
+PKGCONF_CMD := $(PKGCONF_ENV) $(PKGCONF) $(PKGCONFFLAGS)
+
+
+pc_lib := $(libname)-uninstalled
+LIB_pc_u := $(PCDIR)/$(pc_lib).pc
+_LIB_pc_u := $(builddir)/$(pc_lib).pc
+pc_reqs := $(shell $(PKGCONF_CMD) --print-requires-private $(pc_lib)) $(pc_lib)
+
+
+DEFAULT_CPPFLAGS := $(shell $(PKGCONF_CMD) --cflags $(pc_lib))
+DEFAULT_CPPFLAGS += -D_GNU_SOURCE
+DEFAULT_CPPFLAGS += -I$(builddir)
+EXTRA_CPPFLAGS :=
+CPPFLAGS := $(DEFAULT_CPPFLAGS) $(EXTRA_CPPFLAGS)
+
+DEFAULT_CFLAGS := -O3
+DEFAULT_CFLAGS += -std=gnu2x
+DEFAULT_CFLAGS += -Wall
+DEFAULT_CFLAGS += -Wextra
+DEFAULT_CFLAGS += -Wstrict-prototypes
+DEFAULT_CFLAGS += -Wdeclaration-after-statement
+DEFAULT_CFLAGS += -Werror
+DEFAULT_CFLAGS += -Wno-c++98-compat
+DEFAULT_CFLAGS += -Wno-disabled-macro-expansion
+DEFAULT_CFLAGS += -Wno-gnu-auto-type
+DEFAULT_CFLAGS += -Wno-gnu-statement-expression
+DEFAULT_CFLAGS += -Wno-language-extension-token
+DEFAULT_CFLAGS += -Wno-pre-c2x-compat
+DEFAULT_CFLAGS += -Wno-sign-compare
+DEFAULT_CFLAGS += -Wno-unknown-pragmas
+DEFAULT_CFLAGS += -Wno-unused-command-line-argument
+EXTRA_CFLAGS :=
+CFLAGS := $(DEFAULT_CFLAGS) $(EXTRA_CFLAGS)
+
+
+CC := gcc
+
+
+_TU_h := $(patsubst $(srcdir)/include/%,$(builddir)/%,$(TU_h))
+_TU_c := $(patsubst $(srcdir)/src/%,$(builddir)/%,$(TU_c))
+
+_TU_h_d := $(addsuffix .d,$(_TU_h))
+_TU_c_d := $(addsuffix .d,$(_TU_c))
+
+
+DEPTARGETS = -MT $*.lint-c.checkpatch.touch \
+ -MT $*.lint-c.clang-tidy.touch \
+ -MT $*.lint-c.cppcheck.touch \
+ -MT $*.lint-c.cpplint.touch \
+ -MT $*.lint-c.iwyu.touch
+DEPHTARGETS = $(DEPTARGETS) -MT $*.gch
+DEPCTARGETS = $(DEPTARGETS) -MT $*.i
+
+
+$(_TU_h): $(builddir)/%: $(srcdir)/include/% $(mk) | $$(@D)/
+ $(CP) -T $< $@
+
+$(_TU_c): $(builddir)/%: $(srcdir)/src/% $(mk) | $$(@D)/
+ $(CP) -T $< $@
+
+$(_TU_h_d): %.d: % $(_TU_h) $(mk) $(_LIB_pc_u) | $$(@D)/
+ $(CC) $(CPPFLAGS) $(CFLAGS) -M -MP $(DEPHTARGETS) -MF$@ $<
+
+$(_TU_c_d): %.d: % $(_TU_h) $(_TU_c) $(mk) $(_LIB_pc_u) | $$(@D)/
+ $(CC) $(CPPFLAGS) $(CFLAGS) -M -MP $(DEPCTARGETS) -MF$@ $<
+
+
+.PHONY: build-deps
+build-deps: $(_TU_h_d) $(_TU_c_d)
+ @:
+
+
+endif # include guard