Clean up multipath linking
authorBenjamin Marzinski <bmarzins@redhat.com>
Fri, 3 Apr 2009 04:19:36 +0000 (23:19 -0500)
committerChristophe Varoqui <christophe.varoqui@free.fr>
Fri, 3 Apr 2009 21:26:36 +0000 (23:26 +0200)
This is a patch to fix up the linking. It does two things.  First, it makes
libmultipath.so install to /lib/ just like a normal shared library, so you
don't have to use -rpath to link to it.  Second, and more importantly,
it moves the libaio linking into libcheckdirectio.so, where it belongs.  Since
libcheckdirectio.so is a dynamic shared object, multipath and multipathd don't
know what functions they need to link in from libaio. This fixes the directio
lockup for me.

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
libmultipath/Makefile
libmultipath/checkers/Makefile
multipath/Makefile
multipathd/Makefile

index c70d429..35cb911 100644 (file)
@@ -23,14 +23,15 @@ endif
 all: $(LIBS)
 
 $(LIBS): $(OBJS)
-       $(CC) $(SHARED_FLAGS) $(CFLAGS) -o $@ $(OBJS)
+       $(CC) $(SHARED_FLAGS) -Wl,-soname,$@ $(CFLAGS) -o $@ $(OBJS)
 
 install:
+       $(INSTALL_PROGRAM) -d $(DESTDIR)$(prefix)/lib
+       $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(prefix)/lib/$(LIBS)
        $(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(libdir)
-       $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(libdir)/$(LIBS)
 
 uninstall:
-       rm -f $(DESTDIR)$(libdir)/$(LIBS)
+       rm -f $(DESTDIR)$(prefix)/lib/$(LIBS)
 
 clean:
        rm -f core *.a *.o *.gz *.so
index a20dfac..22fe82c 100644 (file)
@@ -17,6 +17,9 @@ CFLAGS += -I..
 
 all: $(LIBS)
 
+libcheckdirectio.so: libsg.o directio.o
+       $(CC) $(SHARED_FLAGS) -o $@ $^ -laio
+
 libcheck%.so: libsg.o %.o
        $(CC) $(SHARED_FLAGS) -o $@ $^
 
index 2d74ffe..e0031a2 100644 (file)
@@ -6,9 +6,8 @@ include ../Makefile.inc
 
 OBJS = main.o
 
-CFLAGS += -I$(multipathdir) -Wl,-rpath,$(libdir)
-LDFLAGS += -lpthread -ldevmapper -laio -ldl \
-          -lmultipath -L$(multipathdir)
+CFLAGS += -I$(multipathdir)
+LDFLAGS += -lpthread -ldevmapper -ldl -lmultipath -L$(multipathdir)
 
 EXEC = multipath
 
index b1af76c..32d9ef5 100644 (file)
@@ -5,8 +5,8 @@ include ../Makefile.inc
 #
 # basic flags setting
 #
-CFLAGS += -I$(multipathdir) -Wl,-rpath,$(libdir)
-LDFLAGS += -lpthread -ldevmapper -lreadline -lncurses -laio -ldl \
+CFLAGS += -I$(multipathdir)
+LDFLAGS += -lpthread -ldevmapper -lreadline -lncurses -ldl \
           -lmultipath -L$(multipathdir)
 
 #