summaryrefslogtreecommitdiffstats
path: root/lib/build-lib.mk
diff options
context:
space:
mode:
Diffstat (limited to 'lib/build-lib.mk')
-rw-r--r--lib/build-lib.mk61
1 files changed, 61 insertions, 0 deletions
diff --git a/lib/build-lib.mk b/lib/build-lib.mk
new file mode 100644
index 0000000..6db199d
--- /dev/null
+++ b/lib/build-lib.mk
@@ -0,0 +1,61 @@
+# Copyright 2022 Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-or-later WITH LGPL-3.0-linking-exception
+
+
+ifndef LIB_BUILD_LIB_MK_
+LIB_BUILD_LIB_MK_ := 1
+
+
+include $(srcdir)/lib/build.mk
+include $(srcdir)/lib/build-deps.mk
+include $(srcdir)/lib/build-obj.mk
+include $(srcdir)/lib/cmd.mk
+include $(srcdir)/lib/src.mk
+include $(srcdir)/lib/verbose.mk
+include $(srcdir)/lib/version.mk
+
+
+DEFAULT_LDFLAGS := -shared
+DEFAULT_LDFLAGS += -fuse-linker-plugin
+DEFAULT_LDFLAGS += -Wl,-soname,$(libname).so.$(MAJOR_VERSION)
+DEFAULT_LDFLAGS += -Wl,--as-needed
+DEFAULT_LDFLAGS += -Wl,--no-allow-shlib-undefined
+DEFAULT_LDFLAGS += -Wl,--no-copy-dt-needed-entries
+DEFAULT_LDFLAGS += -Wl,--no-undefined
+DEFAULT_LDFLAGS += $(shell $(PKGCONF_CMD) --libs-only-L $(pc_reqs) $(HIDE_ERR))
+DEFAULT_LDFLAGS += $(shell $(PKGCONF_CMD) --libs-only-other $(pc_reqs) $(HIDE_ERR))
+EXTRA_LDFLAGS :=
+LDFLAGS := $(DEFAULT_LDFLAGS) $(EXTRA_LDFLAGS)
+
+DEFAULT_LDLIBS := $(filter-out -lc-qual,$(shell $(PKGCONF_CMD) --libs-only-l $(pc_reqs) $(HIDE_ERR)))
+DEFAULT_LDLIBS += $(shell $(SED) -n '/^Libs.private: /s///p' $(LIB_pc_u))
+EXTRA_LDLIBS :=
+LDLIBS := $(DEFAULT_LDLIBS) $(EXTRA_LDLIBS)
+
+
+LD := $(CC) $(CFLAGS)
+
+
+_LIB_so_v := $(builddir)/$(libname).so.$(DISTVERSION)
+
+
+$(_LIB_so_v): %.so.$(DISTVERSION): $(_TU_o) $(mk) $(_LIB_pc_u) | $$(@D)/
+ $(info LD $@)
+ for opt in g 0 1 2 s 3 fast; do \
+ $(LD) $(CFLAGS) $(LDFLAGS) -O$$opt -o $*.O$$opt.so.$(DISTVERSION) \
+ $(patsubst %.o,%.O$$opt.o,$(_TU_o)) $(LDLIBS); \
+ done
+ $(LD) $(CFLAGS) $(LDFLAGS) -o $@ $(_TU_o) $(LDLIBS)
+
+
+.PHONY: build-lib-ld
+build-lib-ld: $(_LIB_so_v)
+ @:
+
+
+.PHONY: build-lib
+build-lib: build-lib-ld
+ @:
+
+
+endif # include guard