Revert patch to build versioned .so files

Inhibit building shared libraries
Add linker scripts to include PIC static libraries in the link if dynamic
 linking is desired. This is slightly suboptimal when linking applications,
 but it is better to err on the side of caution here.
This commit is contained in:
srichter 2006-10-18 02:58:24 +00:00
parent d965a85322
commit 9a4e9451c4
6 changed files with 90 additions and 61 deletions

View File

@ -1,53 +1,62 @@
SOMAJOR=0 CC = gcc
SOMINOR=0.0 AR = ar
SOVERSION=$(SOMAJOR).$(SOMINOR) RANLIB = ranlib
all: libisdnnet.a libisdnnet.so.$(SOVERSION) all: libisdnnet.a libisdnnet_pic.a libisdnnet.so
install: install:
install -m 755 libisdnnet.so.$(SOVERSION) $(INSTALL_PREFIX)/$(LIBDIR) install -m 644 libisdnnet.a $(INSTALL_PREFIX)/usr/lib
ln -sf libisdnnet.so.$(SOVERSION) $(INSTALL_PREFIX)/$(LIBDIR)/libisdnnet.so.$(SOMAJOR) install -m 644 libisdnnet_pic.a $(INSTALL_PREFIX)/usr/lib
ln -sf libisdnnet.so.$(SOVERSION) $(INSTALL_PREFIX)/$(LIBDIR)/libisdnnet.so install -m 644 libisdnnet.so $(INSTALL_PREFIX)/usr/lib
install -m 644 libisdnnet.a $(INSTALL_PREFIX)/$(LIBDIR)
cp *.h $(INSTALL_PREFIX)/usr/include/mISDNuser/ cp *.h $(INSTALL_PREFIX)/usr/include/mISDNuser/
ISDNNETOBJ = net_if.o isdn_debug.o isdn_msg.o fsm.o net_l2.o tei.o net_l3.o \ ISDNNET_OBJ = net_if.o isdn_debug.o isdn_msg.o fsm.o net_l2.o tei.o net_l3.o \
manager.o tone.o bchannel.o g711.o manager.o tone.o bchannel.o g711.o
ISDNNET_PICOBJ = $(ISDNNET_OBJ:%.o=%.lo)
libisdnnet.so.$(SOVERSION): $(ISDNNETOBJ) libisdnnet_pic.a: $(ISDNNET_PICOBJ)
$(CC) -shared -Xlinker -x -Wl,-soname,libisdnnet.so.$(SOMAJOR) -o $@ $^ $(AR) cru $@ $^
$(RANLIB) $@
libisdnnet.a: $(ISDNNETOBJ) libisdnnet.a: $(ISDNNET_OBJ)
ar cr $@ $^ $(AR) cru $@ $^
ar s $@ $(RANLIB) $@
isdn_msg.o : isdn_msg.c $(INCLUDEDIR)/isdn_msg.h $(INCLUDEDIR)/isdn_net.h .c.o:
$(CC) $(CFLAGS) -o $@ -c $<
isdn_debug.o : isdn_debug.c $(INCLUDEDIR)/isdn_debug.h .c.lo:
$(CC) $(CFLAGS) -fPIC -o $@ -c $<
net_l2.o : net_l2.c net_l2.h $(INCLUDEDIR)/isdn_net.h fsm.h isdn_msg.o isdn_msg.lo: isdn_msg.c $(INCLUDEDIR)/isdn_msg.h $(INCLUDEDIR)/isdn_net.h
fsm.o : fsm.c fsm.h $(INCLUDEDIR)/isdn_net.h isdn_debug.o isdn_debug.lo: isdn_debug.c $(INCLUDEDIR)/isdn_debug.h
tei.o : tei.c net_l2.h $(INCLUDEDIR)/isdn_net.h net_l2.o net_l2.lo: net_l2.c net_l2.h $(INCLUDEDIR)/isdn_net.h fsm.h
net_l3.o : net_l3.c $(INCLUDEDIR)/isdn_net.h net_l3.h fsm.o fsm.lo: fsm.c fsm.h $(INCLUDEDIR)/isdn_net.h
manager.o : manager.c $(INCLUDEDIR)/isdn_net.h $(INCLUDEDIR)/bchannel.h tei.o tei.lo: tei.c net_l2.h $(INCLUDEDIR)/isdn_net.h
net_if.o : net_if.c $(INCLUDEDIR)/isdn_net.h net_l3.o net_l3.lo: net_l3.c $(INCLUDEDIR)/isdn_net.h net_l3.h
tone.o: tone.c $(INCLUDEDIR)/tone.h $(INCLUDEDIR)/bchannel.h \ manager.o manager.lo: manager.c $(INCLUDEDIR)/isdn_net.h $(INCLUDEDIR)/bchannel.h
net_if.o net_if.lo: net_if.c $(INCLUDEDIR)/isdn_net.h
tone.o tone.lo: tone.c $(INCLUDEDIR)/tone.h $(INCLUDEDIR)/bchannel.h \
$(INCLUDEDIR)/isdn_net.h $(INCLUDEDIR)/ibuffer.h $(INCLUDEDIR)/isdn_net.h $(INCLUDEDIR)/ibuffer.h
bchannel.o: bchannel.c $(INCLUDEDIR)/isdn_net.h $(INCLUDEDIR)/tone.h \ bchannel.o bchannel.lo: bchannel.c $(INCLUDEDIR)/isdn_net.h $(INCLUDEDIR)/tone.h \
$(INCLUDEDIR)/bchannel.h net_l3.h $(INCLUDEDIR)/ibuffer.h $(INCLUDEDIR)/bchannel.h net_l3.h $(INCLUDEDIR)/ibuffer.h
g711.o: g711.c $(INCLUDEDIR)/g711.h g711.o g711.lo: g711.c $(INCLUDEDIR)/g711.h
clean: clean:
rm -f *.o *~ DEADJOE rm -f *.o *.lo *~ DEADJOE
rm -f libisdnnet.a rm -f libisdnnet.a libisdnnet_pic.a
distclean: clean distclean: clean
rm -f *.a rm -f *.a
.SUFFIXES: .lo

1
i4lnet/libisdnnet.so Normal file
View File

@ -0,0 +1 @@
INPUT(libisdnnet_pic.a libmISDN_pic.a)

View File

@ -1,33 +1,41 @@
SOMAJOR=0 CC = gcc
SOMINOR=0.0 AR = ar
SOVERSION=$(SOMAJOR).$(SOMINOR) RANLIB = ranlib
all: libmISDN.a libmISDN.so.$(SOVERSION) all: libmISDN.a libmISDN_pic.a libmISDN.so
install: install:
install -m 755 libmISDN.so.$(SOVERSION) $(INSTALL_PREFIX)/$(LIBDIR) install -m 644 libmISDN.so $(INSTALL_PREFIX)/usr/lib
ln -sf libmISDN.so.$(SOVERSION) $(INSTALL_PREFIX)/$(LIBDIR)/libmISDN.so.$(SOMAJOR) install -m 644 libmISDN_pic.a $(INSTALL_PREFIX)/usr/lib
ln -sf libmISDN.so.$(SOVERSION) $(INSTALL_PREFIX)/$(LIBDIR)/libmISDN.so install -m 644 libmISDN.a $(INSTALL_PREFIX)/usr/lib
install -m 644 libmISDN.a $(INSTALL_PREFIX)/$(LIBDIR)
LIBMISDN_OBJS = device.o layer.o stack.o status.o LIBMISDN_OBJS = device.o layer.o stack.o status.o
LIBMISDN_PICOBJS = $(LIBMISDN_OBJS:%.o=%.lo)
libmISDN.so.$(SOVERSION): $(LIBMISDN_OBJS) libmISDN_pic.a: $(LIBMISDN_PICOBJS)
$(CC) -shared -Xlinker -x -Wl,-soname,libmISDN.so.$(SOMAJOR) -o $@ $^ $(AR) cru $@ $^
$(RANLIB) $@
libmISDN.a: $(LIBMISDN_OBJS) libmISDN.a: $(LIBMISDN_OBJS)
ar cr $@ $^ $(AR) cru $@ $^
ar s $@ $(RANLIB) $@
device.o : device.c ../include/mISDNlib.h .c.o:
layer.o : layer.c ../include/mISDNlib.h $(CC) $(CFLAGS) -o $@ -c $<
stack.o : stack.c ../include/mISDNlib.h
status.o : status.c ../include/mISDNlib.h .c.lo:
$(CC) $(CFLAGS) -fPIC -o $@ -c $<
device.o device.lo: device.c ../include/mISDNlib.h
layer.o layer.lo: layer.c ../include/mISDNlib.h
stack.o stack.lo: stack.c ../include/mISDNlib.h
status.o status.lo: status.c ../include/mISDNlib.h
clean: clean:
rm -f *.o *~ DEADJOE rm -f libmISDN.a libMISDN_pic.a
rm -f libmISDN.a rm -f *.o *.lo *~ DEADJOE
distclean: clean distclean: clean
rm -f *.a rm -f *.a
.SUFFIXES: .lo

1
lib/libmISDN.so Normal file
View File

@ -0,0 +1 @@
INPUT(libmISDN_pic.a)

View File

@ -1,32 +1,41 @@
SOMAJOR=0 CC = gcc
SOMINOR=0.0 AR = ar
SOVERSION=$(SOMAJOR).$(SOMINOR) RANLIB = ranlib
#CFLAGS += -DASN1_DEBUG #CFLAGS += -DASN1_DEBUG
SUPPSERVOBJ = asn1.o asn1_enc.o asn1_generic.o asn1_aoc.o asn1_basic_service.o asn1_comp.o asn1_diversion.o asn1_address.o fac.o SUPPSERV_OBJ = asn1.o asn1_enc.o asn1_generic.o asn1_aoc.o asn1_basic_service.o asn1_comp.o asn1_diversion.o asn1_address.o fac.o
SUPPSERV_PICOBJ = $(SUPPSERV_OBJ:%.o=%.lo)
all: libsuppserv.a libsuppserv.so.$(SOVERSION) all: libsuppserv.a libsuppserv_pic.a libsuppserv.so
main: $(SUPPSERVOBJ) main: $(SUPPSERVOBJ)
install: install:
install -m 755 libsuppserv.so.$(SOVERSION) $(INSTALL_PREFIX)/$(LIBDIR) install -m 644 libsuppserv.a $(INSTALL_PREFIX)/usr/lib
ln -sf libsuppserv.so.$(SOVERSION) $(INSTALL_PREFIX)/$(LIBDIR)/libsuppserv.so.$(SOMAJOR) install -m 644 libsuppserv_pic.a $(INSTALL_PREFIX)/usr/lib
ln -sf libsuppserv.so.$(SOVERSION) $(INSTALL_PREFIX)/$(LIBDIR)/libsuppserv.so install -m 644 libsuppserv.so $(INSTALL_PREFIX)/usr/lib
install -m 644 libsuppserv.a $(INSTALL_PREFIX)/$(LIBDIR)
cp *.h $(INSTALL_PREFIX)/usr/include/mISDNuser/ cp *.h $(INSTALL_PREFIX)/usr/include/mISDNuser/
libsuppserv.so.$(SOVERSION): $(SUPPSERVOBJ) libsuppserv_pic.a: $(SUPPSERV_PICOBJ)
$(CC) -shared -Xlinker -x -Wl,-soname,libsuppserv.so.$(SOMAJOR) -o $@ $^ $(AR) cru $@ $<
$(RANLIB) $@
libsuppserv.a: $(SUPPSERVOBJ) libsuppserv.a: $(SUPPSERV_OBJ)
ar cr $@ $^ $(AR) cru $@ $<
ar s $@ $(RANLIB) $@
.c.o:
$(CC) $(CFLAGS) -o $@ -c $<
.c.lo:
$(CC) $(CFLAGS) -fPIC -o $@ -c $<
clean: clean:
rm -f *.o *~ DEADJOE rm -f *.o *.lo *~ DEADJOE
rm -f libsuppserv.a libsuppserv.so rm -f libsuppserv.a libsuppserv_pic.a
distclean: clean distclean: clean
rm -f *.a rm -f *.a
.SUFFIXES: .lo

1
suppserv/libsuppserv.so Normal file
View File

@ -0,0 +1 @@
INPUT(libsuppserv_pic.a)