From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Martin Wilck Date: Thu, 27 Oct 2022 21:52:06 +0200 Subject: [PATCH] multipath-tools: Makefiles: use common code for libraries Move shared code to Makefile.inc as far as possible. Use simple make variables where possible. Signed-off-by: Martin Wilck Signed-off-by: Benjamin Marzinski --- Makefile.inc | 15 ++++++++++++++- libdmmp/Makefile | 17 ++++++++--------- libmpathcmd/Makefile | 14 ++------------ libmpathpersist/Makefile | 14 ++------------ libmpathutil/Makefile | 14 +------------- libmpathvalid/Makefile | 14 ++------------ libmultipath/Makefile | 12 +----------- 7 files changed, 30 insertions(+), 70 deletions(-) diff --git a/Makefile.inc b/Makefile.inc index 2cf25745..fe6bc088 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -64,7 +64,6 @@ GZIP_PROG := gzip -9 -c RM := rm -f LN := ln -sf INSTALL_PROGRAM := install -NV_VERSION_SCRIPT = $(VERSION_SCRIPT:%.version=%-nv.version) # $(call TEST_CC_OPTION,option,fallback) # Test if the C compiler supports the option. @@ -127,6 +126,13 @@ thirdpartydir := $(TOPDIR)/third-party libdmmpdir := $(TOPDIR)/libdmmp nvmedir := $(TOPDIR)/libmultipath/nvme +# Common code for libraries - library Makefiles just set DEVLIB +# SONAME defaults to 0 (we use version scripts) +SONAME := 0 +LIBS = $(DEVLIB).$(SONAME) +VERSION_SCRIPT = $(DEVLIB:%.so=%.version) +NV_VERSION_SCRIPT = $(DEVLIB:%.so=%-nv.version) + # Check whether a function with name $1 has been declared in header file $2. check_func = $(shell \ if grep -Eq "^[^[:blank:]]+[[:blank:]]+$1[[:blank:]]*(.*)*" "$2"; then \ @@ -175,3 +181,10 @@ check_var = $(shell \ %.abi: %.so abidw $< >$@ + +%-nv.version: %.version + @echo creating $@ from $< + @printf 'NOVERSION {\nglobal:\n' >$@ + @grep -P '^[ \t]+[a-zA-Z_][a-zA-Z0-9_]*;' $< >>$@ + @printf 'local:\n\t*;\n};\n' >>$@ + diff --git a/libdmmp/Makefile b/libdmmp/Makefile index 985b694b..67b6f86f 100644 --- a/libdmmp/Makefile +++ b/libdmmp/Makefile @@ -5,15 +5,14 @@ # include ../Makefile.inc -LIBDMMP_VERSION=0.2.0 -SONAME=$(LIBDMMP_VERSION) -DEVLIB = libdmmp.so -LIBS = $(DEVLIB).$(SONAME) -PKGFILE = libdmmp.pc -EXTRA_MAN_FILES = libdmmp.h.3 -HEADERS = libdmmp/libdmmp.h - -OBJS = libdmmp.o libdmmp_mp.o libdmmp_pg.o libdmmp_path.o libdmmp_misc.o +LIBDMMP_VERSION := 0.2.0 +SONAME := $(LIBDMMP_VERSION) +DEVLIB := libdmmp.so +PKGFILE := libdmmp.pc +EXTRA_MAN_FILES := libdmmp.h.3 +HEADERS := libdmmp/libdmmp.h + +OBJS := libdmmp.o libdmmp_mp.o libdmmp_pg.o libdmmp_path.o libdmmp_misc.o CPPFLAGS += -I$(libdmmpdir) -I$(mpathcmddir) $(shell $(PKGCONFIG) --cflags json-c) CFLAGS += $(LIB_CFLAGS) -fvisibility=hidden diff --git a/libmpathcmd/Makefile b/libmpathcmd/Makefile index 0f83fe7b..f705c7f0 100644 --- a/libmpathcmd/Makefile +++ b/libmpathcmd/Makefile @@ -1,13 +1,8 @@ include ../Makefile.inc -SONAME = 0 -DEVLIB = libmpathcmd.so -LIBS = $(DEVLIB).$(SONAME) -VERSION_SCRIPT := libmpathcmd.version - +DEVLIB := libmpathcmd.so CFLAGS += $(LIB_CFLAGS) - -OBJS = mpath_cmd.o +OBJS := mpath_cmd.o all: $(DEVLIB) @@ -15,11 +10,6 @@ $(LIBS): $(OBJS) $(VERSION_SCRIPT) $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \ -Wl,--version-script=$(VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS) -$(NV_VERSION_SCRIPT): $(VERSION_SCRIPT) - @printf 'NOVERSION {\nglobal:\n' >$@ - @grep -P '^[ \t]+[a-zA-Z_][a-zA-Z0-9_]*;' $< >>$@ - @printf 'local:\n\t*;\n};\n' >>$@ - $(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT) $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \ -Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS) diff --git a/libmpathpersist/Makefile b/libmpathpersist/Makefile index 479524d4..6f69168f 100644 --- a/libmpathpersist/Makefile +++ b/libmpathpersist/Makefile @@ -1,16 +1,11 @@ include ../Makefile.inc -SONAME = 0 -DEVLIB = libmpathpersist.so -LIBS = $(DEVLIB).$(SONAME) -VERSION_SCRIPT:= libmpathpersist.version - +DEVLIB := libmpathpersist.so CFLAGS += $(LIB_CFLAGS) -I$(multipathdir) -I$(mpathutildir) -I$(mpathpersistdir) -I$(mpathcmddir) LDFLAGS += -L$(multipathdir) -L$(mpathutildir) -L$(mpathcmddir) - LIBDEPS += -lmultipath -lmpathutil -lmpathcmd -ldevmapper -lpthread -ldl -OBJS = mpath_persist.o mpath_updatepr.o mpath_pr_ioctl.o mpath_persist_int.o +OBJS := mpath_persist.o mpath_updatepr.o mpath_pr_ioctl.o mpath_persist_int.o all: $(DEVLIB) @@ -18,11 +13,6 @@ $(LIBS): $(OBJS) $(VERSION_SCRIPT) $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \ -Wl,--version-script=$(VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS) -$(NV_VERSION_SCRIPT): $(VERSION_SCRIPT) - @printf 'NOVERSION {\nglobal:\n' >$@ - @grep -P '^[ \t]+[a-zA-Z_][a-zA-Z0-9_]*;' $< >>$@ - @printf 'local:\n\t*;\n};\n' >>$@ - $(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT) $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \ -Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS) diff --git a/libmpathutil/Makefile b/libmpathutil/Makefile index 4be75d2d..5665af28 100644 --- a/libmpathutil/Makefile +++ b/libmpathutil/Makefile @@ -3,14 +3,9 @@ # include ../Makefile.inc -SONAME = 0 -DEVLIB = libmpathutil.so -LIBS = $(DEVLIB).$(SONAME) -VERSION_SCRIPT := libmpathutil.version - +DEVLIB := libmpathutil.so CPPFLAGS += -I. -I$(multipathdir) -I$(mpathcmddir) $(SYSTEMD_CPPFLAGS) CFLAGS += $(LIB_CFLAGS) -D_GNU_SOURCE - LIBDEPS += -lpthread -ldl -ludev -L$(mpathcmddir) -lmpathcmd $(SYSTEMD_LIBDEPS) # object files referencing MULTIPATH_DIR or CONFIG_DIR @@ -22,8 +17,6 @@ OBJS := parser.o vector.o util.o debug.o time-util.o \ all: $(DEVLIB) -make_static = $(shell sed '/^static/!s/^\([a-z]\{1,\} \)/static \1/' <$1 >$2) - $(LIBS): $(OBJS) $(VERSION_SCRIPT) $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \ -Wl,--version-script=$(VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS) @@ -31,11 +24,6 @@ $(LIBS): $(OBJS) $(VERSION_SCRIPT) $(DEVLIB): $(LIBS) $(LN) $(LIBS) $@ -$(NV_VERSION_SCRIPT): $(VERSION_SCRIPT) - @printf 'NOVERSION {\nglobal:\n' >$@ - @grep -P '^[ \t]+[a-zA-Z_][a-zA-Z0-9_]*;' $< >>$@ - @printf 'local:\n\t*;\n};\n' >>$@ - $(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT) $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \ -Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS) diff --git a/libmpathvalid/Makefile b/libmpathvalid/Makefile index 5dbfb923..bd4ccc0d 100644 --- a/libmpathvalid/Makefile +++ b/libmpathvalid/Makefile @@ -1,17 +1,12 @@ include ../Makefile.inc -SONAME = 0 -DEVLIB = libmpathvalid.so -LIBS = $(DEVLIB).$(SONAME) -VERSION_SCRIPT := libmpathvalid.version - +DEVLIB := libmpathvalid.so CPPFLAGS += -I$(multipathdir) -I$(mpathutildir) -I$(mpathcmddir) CFLAGS += $(LIB_CFLAGS) - LIBDEPS += -lpthread -ldevmapper -ldl -L$(multipathdir) -lmultipath \ -L$(mpathutildir) -lmpathutil -L$(mpathcmddir) -lmpathcmd -ludev -OBJS = mpath_valid.o +OBJS := mpath_valid.o all: $(LIBS) @@ -20,11 +15,6 @@ $(LIBS): $(OBJS) $(VERSION_SCRIPT) -Wl,--version-script=$(VERSION_SCRIPT) $(LN) $(LIBS) $(DEVLIB) -$(NV_VERSION_SCRIPT): $(VERSION_SCRIPT) - @printf 'NOVERSION {\nglobal:\n' >$@ - @grep -P '^[ \t]+[a-zA-Z_][a-zA-Z0-9_]*;' $< >>$@ - @printf 'local:\n\t*;\n};\n' >>$@ - $(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT) $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \ -Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS) diff --git a/libmultipath/Makefile b/libmultipath/Makefile index 009f26a3..9dc229ae 100644 --- a/libmultipath/Makefile +++ b/libmultipath/Makefile @@ -3,14 +3,9 @@ # include ../Makefile.inc -SONAME = 0 -DEVLIB = libmultipath.so -LIBS = $(DEVLIB).$(SONAME) -VERSION_SCRIPT := libmultipath.version - +DEVLIB := libmultipath.so CPPFLAGS += -I$(mpathutildir) -I$(mpathcmddir) -I$(nvmedir) -D_GNU_SOURCE $(SYSTEMD_CPPFLAGS) CFLAGS += $(LIB_CFLAGS) - LIBDEPS += -lpthread -ldl -ldevmapper -ludev -L$(mpathutildir) -lmpathutil -L$(mpathcmddir) -lmpathcmd \ -lurcu -laio $(SYSTEMD_LIBDEPS) @@ -85,11 +80,6 @@ $(LIBS): $(OBJS) $(VERSION_SCRIPT) $(DEVLIB): $(LIBS) $(LN) $(LIBS) $@ -$(NV_VERSION_SCRIPT): $(VERSION_SCRIPT) - @printf 'NOVERSION {\nglobal:\n' >$@ - @grep -P '^[ \t]+[a-zA-Z_][a-zA-Z0-9_]*;' $< >>$@ - @printf 'local:\n\t*;\n};\n' >>$@ - $(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT) $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \ -Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)