summaryrefslogtreecommitdiff
blob: 905e4185387135ae2146b125a5b1a51a12f7db53 (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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
Gentoo bug: https://bugs.gentoo.org/919484
Upstream PR: https://github.com/avahi/nss-mdns/pull/93
diff --git a/Makefile.am b/Makefile.am
index d5a83c1..6df75f3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -17,9 +17,6 @@
 EXTRA_DIST=bootstrap.sh README.md ACKNOWLEDGEMENTS.md NEWS.md LICENSE
 ACLOCAL_AMFLAGS=-I m4
 
-# src
-EXTRA_DIST += src/map-file
-
 AM_CFLAGS = \
 	-DMDNS_ALLOW_FILE=\"$(MDNS_ALLOW_FILE)\" \
 	-DAVAHI_SOCKET=\"$(AVAHI_SOCKET)\"
@@ -47,29 +44,53 @@ endif
 
 check_PROGRAMS = nss-test avahi-test
 
+src/libnss-mdns-la-map-file: $(srcdir)/src/map-file.in $(srcdir)/src/nss.h
+	$(COMPILE) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(libnss_mdns_la_CFLAGS) -E -x assembler-with-cpp -DVER_SYM_MAP_GEN -o $@ $<
+
+src/libnss-mdns-minimal-la-map-file: $(srcdir)/src/map-file.in $(srcdir)/src/nss.h
+	$(COMPILE) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(libnss_mdns_minimal_la_CFLAGS) -E -x assembler-with-cpp -DVER_SYM_MAP_GEN -o $@ $<
+
+src/libnss-mdns4-la-map-file: $(srcdir)/src/map-file.in $(srcdir)/src/nss.h
+	$(COMPILE) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(libnss_mdns4_la_CFLAGS) -E -x assembler-with-cpp -DVER_SYM_MAP_GEN -o $@ $<
+
+src/libnss-mdns4-minimal-la-map-file: $(srcdir)/src/map-file.in $(srcdir)/src/nss.h
+	$(COMPILE) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(libnss_mdns4_minimal_la_CFLAGS) -E -x assembler-with-cpp -DVER_SYM_MAP_GEN -o $@ $<
+
+src/libnss-mdns6-la-map-file: $(srcdir)/src/map-file.in $(srcdir)/src/nss.h
+	$(COMPILE) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(libnss_mdns6_la_CFLAGS) -E -x assembler-with-cpp -DVER_SYM_MAP_GEN -o $@ $<
+
+src/libnss-mdns6-minimal-la-map-file: $(srcdir)/src/map-file.in $(srcdir)/src/nss.h
+	$(COMPILE) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(libnss_mdns6_minimal_la_CFLAGS) -E -x assembler-with-cpp -DVER_SYM_MAP_GEN -o $@ $<
+
 libnss_mdns_la_SOURCES=src/util.c src/util.h src/avahi.c src/avahi.h src/nss.c src/nss.h
+EXTRA_libnss_mdns_la_DEPENDENCIES=src/libnss-mdns-la-map-file
 libnss_mdns_la_CFLAGS=$(AM_CFLAGS)
-libnss_mdns_la_LDFLAGS=$(AM_LDFLAGS) -shrext .so.2 -Wl,-version-script=$(srcdir)/src/map-file
+libnss_mdns_la_LDFLAGS=$(AM_LDFLAGS) -shrext .so.2 -Wl,-version-script=src/libnss-mdns-la-map-file
 
 libnss_mdns_minimal_la_SOURCES=$(libnss_mdns_la_SOURCES)
+EXTRA_libnss_mdns_minimal_la_DEPENDENCIES=src/libnss-mdns-minimal-la-map-file
 libnss_mdns_minimal_la_CFLAGS=$(libnss_mdns_la_CFLAGS) -DMDNS_MINIMAL
-libnss_mdns_minimal_la_LDFLAGS=$(libnss_mdns_la_LDFLAGS)
+libnss_mdns_minimal_la_LDFLAGS=$(AM_LDFLAGS) -shrext .so.2 -Wl,-version-script=src/libnss-mdns-minimal-la-map-file
 
 libnss_mdns4_la_SOURCES=$(libnss_mdns_la_SOURCES)
+EXTRA_libnss_mdns4_la_DEPENDENCIES=src/libnss-mdns4-la-map-file
 libnss_mdns4_la_CFLAGS=$(libnss_mdns_la_CFLAGS) -DNSS_IPV4_ONLY=1
-libnss_mdns4_la_LDFLAGS=$(libnss_mdns_la_LDFLAGS)
+libnss_mdns4_la_LDFLAGS=$(AM_LDFLAGS) -shrext .so.2 -Wl,-version-script=src/libnss-mdns4-la-map-file
 
 libnss_mdns4_minimal_la_SOURCES=$(libnss_mdns_la_SOURCES)
+EXTRA_libnss_mdns4_minimal_la_DEPENDENCIES=src/libnss-mdns4-minimal-la-map-file
 libnss_mdns4_minimal_la_CFLAGS=$(libnss_mdns_la_CFLAGS) -DNSS_IPV4_ONLY=1 -DMDNS_MINIMAL
-libnss_mdns4_minimal_la_LDFLAGS=$(libnss_mdns_la_LDFLAGS)
+libnss_mdns4_minimal_la_LDFLAGS=$(AM_LDFLAGS) -shrext .so.2 -Wl,-version-script=src/libnss-mdns4-minimal-la-map-file
 
 libnss_mdns6_la_SOURCES=$(libnss_mdns_la_SOURCES)
+EXTRA_libnss_mdns6_la_DEPENDENCIES=src/libnss-mdns6-la-map-file
 libnss_mdns6_la_CFLAGS=$(libnss_mdns_la_CFLAGS) -DNSS_IPV6_ONLY=1
-libnss_mdns6_la_LDFLAGS=$(libnss_mdns_la_LDFLAGS)
+libnss_mdns6_la_LDFLAGS=$(AM_LDFLAGS) -shrext .so.2 -Wl,-version-script=src/libnss-mdns6-la-map-file
 
 libnss_mdns6_minimal_la_SOURCES=$(libnss_mdns_la_SOURCES)
+EXTRA_libnss_mdns6_minimal_la_DEPENDENCIES=src/libnss-mdns6-minimal-la-map-file
 libnss_mdns6_minimal_la_CFLAGS=$(libnss_mdns_la_CFLAGS) -DNSS_IPV6_ONLY=1 -DMDNS_MINIMAL
-libnss_mdns6_minimal_la_LDFLAGS=$(libnss_mdns_la_LDFLAGS)
+libnss_mdns6_minimal_la_LDFLAGS=$(AM_LDFLAGS) -shrext .so.2 -Wl,-version-script=src/libnss-mdns6-minimal-la-map-file
 
 nss_mdns_la_SOURCES=$(libnss_mdns_la_SOURCES) src/bsdnss.c
 nss_mdns_la_CFLAGS=$(AM_CFLAGS)
diff --git a/src/map-file b/src/map-file
deleted file mode 100644
index 69e7987..0000000
--- a/src/map-file
+++ /dev/null
@@ -1,41 +0,0 @@
-NSSMDNS_0 {
-global:
-
-_nss_mdns_gethostbyaddr_r;
-_nss_mdns4_gethostbyaddr_r;
-_nss_mdns6_gethostbyaddr_r;
-_nss_mdns_minimal_gethostbyaddr_r;
-_nss_mdns4_minimal_gethostbyaddr_r;
-_nss_mdns6_minimal_gethostbyaddr_r;
-
-_nss_mdns_gethostbyname_r;
-_nss_mdns4_gethostbyname_r;
-_nss_mdns6_gethostbyname_r;
-_nss_mdns_minimal_gethostbyname_r;
-_nss_mdns4_minimal_gethostbyname_r;
-_nss_mdns6_minimal_gethostbyname_r;
-
-_nss_mdns_gethostbyname2_r;
-_nss_mdns4_gethostbyname2_r;
-_nss_mdns6_gethostbyname2_r;
-_nss_mdns_minimal_gethostbyname2_r;
-_nss_mdns4_minimal_gethostbyname2_r;
-_nss_mdns6_minimal_gethostbyname2_r;
-
-_nss_mdns_gethostbyname3_r;
-_nss_mdns4_gethostbyname3_r;
-_nss_mdns6_gethostbyname3_r;
-_nss_mdns_minimal_gethostbyname3_r;
-_nss_mdns4_minimal_gethostbyname3_r;
-_nss_mdns6_minimal_gethostbyname3_r;
-
-_nss_mdns_gethostbyname4_r;
-_nss_mdns4_gethostbyname4_r;
-_nss_mdns6_gethostbyname4_r;
-_nss_mdns_minimal_gethostbyname4_r;
-_nss_mdns4_minimal_gethostbyname4_r;
-_nss_mdns6_minimal_gethostbyname4_r;
-
-local:
-*;
-};
diff --git a/src/map-file.in b/src/map-file.in
new file mode 100644
index 0000000..caecf41
--- /dev/null
+++ b/src/map-file.in
@@ -0,0 +1,14 @@
+NSSMDNS_0 {
+global:
+
+#include "nss.h"
+
+_nss_mdns_gethostbyaddr_r;
+_nss_mdns_gethostbyname2_r;
+_nss_mdns_gethostbyname3_r;
+_nss_mdns_gethostbyname4_r;
+_nss_mdns_gethostbyname_r;
+
+local:
+*;
+};
diff --git a/src/nss.h b/src/nss.h
index dd8dbff..d63f51c 100644
--- a/src/nss.h
+++ b/src/nss.h
@@ -33,6 +33,7 @@
 #define _nss_mdns_gethostbyaddr_r _nss_mdns_minimal_gethostbyaddr_r
 #endif
 
+#ifndef VER_SYM_MAP_GEN
 // Define prototypes for nss function we're going to export (fixes GCC warnings)
 #ifndef __FreeBSD__
 enum nss_status _nss_mdns_gethostbyname4_r(const char*, struct gaih_addrtuple**,
@@ -50,3 +51,4 @@ enum nss_status _nss_mdns_gethostbyaddr_r(const void*, int, int,
                                           int*);
 
 #endif
+#endif