diff options
Diffstat (limited to 'lib/build-lib.mk')
-rw-r--r-- | lib/build-lib.mk | 61 |
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 |