summaryrefslogtreecommitdiff
path: root/openwrt/package/libpcap/patches/100-shared-lib.patch
blob: 54cc774a3760d311d7c391b67d02d48487a1736c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
diff -urN libpcap-0.9.4.orig/Makefile.in libpcap-0.9.4/Makefile.in
--- libpcap-0.9.4.orig/Makefile.in	2003-12-15 02:35:03.000000000 +0100
+++ libpcap-0.9.4/Makefile.in	2006-02-05 16:56:18.000000000 +0100
@@ -37,6 +37,15 @@
 srcdir = @srcdir@
 VPATH = @srcdir@
 
+# some defines for shared library compilation
+MAJ=0.9
+MIN=4
+VERSION=$(MAJ).$(MIN)
+LIBNAME=pcap
+LIBRARY=lib$(LIBNAME).a
+SOLIBRARY=lib$(LIBNAME).so
+SHAREDLIB=$(SOLIBRARY).$(VERSION)
+
 #
 # You shouldn't need to edit anything below.
 #
@@ -50,6 +59,7 @@
 
 # Standard CFLAGS
 CFLAGS = $(CCOPT) $(INCLS) $(DEFS)
+CFLAGS_SHARED = -shared -Wl,-soname,$(SOLIBRARY).$(MAJ)
 
 INSTALL = @INSTALL@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -70,7 +80,12 @@
 .c.o:
 	@rm -f $@
 	$(CC) $(CFLAGS) -c $(srcdir)/$*.c
+	$(CC) $(CFLAGS) -c -o $@ $(srcdir)/$*.c
 
+%_pic.o: %.c
+	@rm -f $@
+	$(CC) -fPIC $(CFLAGS) -c -o $@ $(srcdir)/$*.c
+	
 PSRC =	pcap-@V_PCAP@.c
 FSRC =  fad-@V_FINDALLDEVS@.c
 SSRC =  @SSRC@
@@ -84,6 +99,7 @@
 # We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot
 # hack the extra indirection
 OBJ =	$(PSRC:.c=.o) $(FSRC:.c=.o) $(CSRC:.c=.o) $(SSRC:.c=.o) $(GENSRC:.c=.o) $(LIBOBJS)
+OBJ_PIC = $(PSRC:.c=_pic.o) $(FSRC:.c=_pic.o) $(CSRC:.c=_pic.o) $(SSRC:.c=_pic.o) $(GENSRC:.c=_pic.o)
 HDR =	pcap.h pcap-int.h pcap-namedb.h pcap-nit.h pcap-pf.h \
 	ethertype.h gencode.h gnuc.h
 GENHDR = \
@@ -95,15 +111,23 @@
 TAGFILES = \
 	$(SRC) $(HDR) $(TAGHDR)
 
-CLEANFILES = $(OBJ) libpcap.a $(GENSRC) $(GENHDR) lex.yy.c
+CLEANFILES = $(OBJ) $(OBJ_PIC) libpcap.a $(GENSRC) $(GENHDR) lex.yy.c libpcap.so*
 
-all: libpcap.a
+all: libpcap.a $(SHAREDLIB)
 
 libpcap.a: $(OBJ)
 	@rm -f $@
 	ar rc $@ $(OBJ) $(LIBS)
 	$(RANLIB) $@
 
+$(SHAREDLIB): $(OBJ_PIC)
+	-@rm -f $@
+	-@rm -f $(SOLIBRARY) $(SOLIBRARY).$(MAJ)
+	$(CC) $(CFLAGS_SHARED) -o $(SHAREDLIB) $(OBJ_PIC) -lc
+	ln -s $(SHAREDLIB) $(SOLIBRARY).$(MAJ)
+	ln -s $(SOLIBRARY).$(MAJ) $(SOLIBRARY)
+
+       
 shared: libpcap.$(DYEXT)
 
 #
@@ -129,6 +153,10 @@
 scanner.o: scanner.c tokdefs.h
 	$(CC) $(CFLAGS) -c scanner.c
 
+scanner_pic.o: scanner.c tokdefs.h
+	$(CC) -fPIC $(CFLAGS) -o $@ -c scanner.c
+
+
 pcap.o: version.h
 
 tokdefs.h: grammar.c
@@ -142,9 +170,16 @@
 	@rm -f $@
 	$(CC) $(CFLAGS) -Dyylval=pcap_lval -c grammar.c
 
+grammar_pic.o: grammar.c
+	@rm -f $@
+	$(CC) -fPIC $(CFLAGS) -Dyylval=pcap_lval -o $@ -c grammar.c 
+
 version.o: version.c
 	$(CC) $(CFLAGS) -c version.c
 
+version_pic.o: version.c
+	$(CC) -fPIC $(CFLAGS) -c version.c -o $@
+
 snprintf.o: $(srcdir)/missing/snprintf.c
 	$(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c
 
@@ -170,10 +205,17 @@
 bpf_filter.o: bpf_filter.c
 	$(CC) $(CFLAGS) -c bpf_filter.c
 
+bpf_filter_pic.o: bpf_filter.c
+	$(CC) -fPIC $(CFLAGS) -c bpf_filter.c -o $@
+
+
 install: libpcap.a 
 	[ -d $(DESTDIR)$(libdir) ] || \
 	    (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir))
 	$(INSTALL_DATA) libpcap.a $(DESTDIR)$(libdir)/libpcap.a
+	$(INSTALL_DATA) $(SHAREDLIB) $(DESTDIR)$(libdir)/
+	ln -sf $(SHAREDLIB) $(DESTDIR)$(libdir)/$(SOLIBRARY).$(MAJ)
+	ln -sf $(SOLIBRARY).$(MAJ) $(DESTDIR)$(libdir)/$(SOLIBRARY)
 	$(RANLIB) $(DESTDIR)$(libdir)/libpcap.a
 	[ -d $(DESTDIR)$(includedir) ] || \
 	    (mkdir -p $(DESTDIR)$(includedir); chmod 755 $(DESTDIR)$(includedir))