Name: pic-lib.patch
Description: support PIC code generation
Libraries have 2 methods of being compiled; a .so must contain non-pic
objects, while the .a can contain standard objects.
Signed-off-by: Adam Heath <doogie@xxxxxxxxxxxxx>
DiffStat:
tools/libxc/Makefile | 33 +++++++++++++++++++++------------
tools/libxutil/Makefile | 12 +++++++++---
2 files changed, 30 insertions(+), 15 deletions(-)
--- xen-2.0.4.orig/tools/libxutil/Makefile
+++ xen-2.0.4/tools/libxutil/Makefile
@@ -24,6 +24,7 @@
LIB_SRCS += util.c
LIB_OBJS := $(LIB_SRCS:.c=.o)
+LIB_PIC_OBJS := $(LIB_SRCS:.c=.opic)
CFLAGS += -Wall -Werror -O3 -fno-strict-aliasing
@@ -34,6 +35,7 @@
MAJOR := 2.0
MINOR := 0
LIB_NAME := libxutil
+SO_NAME := $(LIB_NAME).so.$(MAJOR)
LIB := $(LIB_NAME).so
LIB += $(LIB_NAME).so.$(MAJOR)
LIB += $(LIB_NAME).so.$(MAJOR).$(MINOR)
@@ -42,14 +44,17 @@
all: check-for-zlib
$(MAKE) $(LIB)
+$(LIB_PIC_OBJS): %.opic: %.c
+ $(CC) $(CPPFLAGS) -DPIC $(CFLAGS) -fPIC -c -o $@ $<
+
$(LIB_NAME).so: $(LIB_NAME).so.$(MAJOR)
ln -sf $^ $@
$(LIB_NAME).so.$(MAJOR): $(LIB_NAME).so.$(MAJOR).$(MINOR)
ln -sf $^ $@
-$(LIB_NAME).so.$(MAJOR).$(MINOR): $(LIB_OBJS)
- $(CC) -Wl,-soname -Wl,$(LIB_NAME).so.$(MAJOR) -shared -o $@ $^
+$(LIB_NAME).so.$(MAJOR).$(MINOR): $(LIB_PIC_OBJS)
+ $(CC) -Wl,-soname -Wl,$(SO_NAME) -shared -o $@ $^
$(LIB_NAME).a: $(LIB_OBJS)
$(AR) rc $@ $^
@@ -65,11 +71,12 @@
install: all
[ -d $(DESTDIR)/usr/lib ] || $(INSTALL_DIR) -p $(DESTDIR)/usr/lib
$(INSTALL_PROG) $(LIB_NAME).so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/lib
+ $(INSTALL_DATA) $(LIB_NAME).a $(DESTDIR)/usr/lib
ln -sf $(LIB_NAME).so.$(MAJOR).$(MINOR)
$(DESTDIR)/usr/lib/$(LIB_NAME).so.$(MAJOR)
ln -sf $(LIB_NAME).so.$(MAJOR) $(DESTDIR)/usr/lib/$(LIB_NAME).so
clean:
- $(RM) *.a *.so *.so.* *.o *.rpm
+ $(RM) *.a *.so *.so.* *.o *.opic *.rpm
$(RM) *~
$(RM) $(DEPS)
--- xen-2.0.4.orig/tools/libxc/Makefile
+++ xen-2.0.4/tools/libxc/Makefile
@@ -5,7 +5,8 @@
MAJOR = 2.0
MINOR = 0
-SONAME = libxc.so.$(MAJOR)
+LIB_NAME = libxc
+SONAME = $(LIB_NAME).so.$(MAJOR)
CC = gcc
@@ -39,9 +40,10 @@
CFLAGS += -Wp,-MD,.$(@F).d
DEPS = .*.d
-OBJS = $(patsubst %.c,%.o,$(SRCS))
+OBJS := $(patsubst %.c,%.o,$(SRCS))
+PIC_OBJS := $(patsubst %.c,%.opic,$(SRCS))
-LIB = libxc.so libxc.so.$(MAJOR) libxc.so.$(MAJOR).$(MINOR)
+LIB := $(LIB_NAME).a $(LIB_NAME).so $(LIB_NAME).so.$(MAJOR)
$(LIB_NAME).so.$(MAJOR).$(MINOR)
all: check-for-zlib mk-symlinks
$(MAKE) $(LIB)
@@ -68,13 +70,14 @@
install: all
[ -d $(DESTDIR)/usr/lib ] || $(INSTALL_DIR) $(DESTDIR)/usr/lib
[ -d $(DESTDIR)/usr/include ] || $(INSTALL_DIR) $(DESTDIR)/usr/include
- $(INSTALL_PROG) libxc.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/lib
- ln -sf libxc.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/lib/libxc.so.$(MAJOR)
- ln -sf libxc.so.$(MAJOR) $(DESTDIR)/usr/lib/libxc.so
+ $(INSTALL_PROG) $(LIB_NAME).so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/lib
+ $(INSTALL_DATA) $(LIB_NAME).a $(DESTDIR)/usr/lib
+ ln -sf $(LIB_NAME).so.$(MAJOR).$(MINOR)
$(DESTDIR)/usr/lib/$(LIB_NAME).so.$(MAJOR)
+ ln -sf $(LIB_NAME).so.$(MAJOR) $(DESTDIR)/usr/lib/$(LIB_NAME).so
$(INSTALL_DATA) xc.h $(DESTDIR)/usr/include
clean:
- rm -rf *.a *.so *.o *.rpm $(LIB) *~ $(DEPS) xen
+ rm -rf *.a *.so *.o *.opic *.rpm $(LIB) *~ $(DEPS) xen
rpm: all
rm -rf staging
@@ -85,11 +87,17 @@
mv staging/i386/*.rpm .
rm -rf staging
-libxc.so:
- ln -sf libxc.so.$(MAJOR) $@
-libxc.so.$(MAJOR):
- ln -sf libxc.so.$(MAJOR).$(MINOR) $@
-libxc.so.$(MAJOR).$(MINOR): $(OBJS)
+$(PIC_OBJS): %.opic: %.c
+ $(CC) $(CPPFLAGS) -DPIC $(CFLAGS) -fPIC -c -o $@ $<
+
+$(LIB_NAME).a: $(OBJS)
+ $(AR) rc $@ $^
+
+$(LIB_NAME).so: $(LIB_NAME).so.$(MAJOR)
+ ln -sf $< $@
+$(LIB_NAME).so.$(MAJOR): $(LIB_NAME).so.$(MAJOR).$(MINOR)
+ ln -sf $< $@
+$(LIB_NAME).so.$(MAJOR).$(MINOR): $(PIC_OBJS)
$(CC) -Wl,-soname -Wl,$(SONAME) -shared -o $@ $^ -L../libxutil -lxutil
-lz
-include $(DEPS)
-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-devel
|