Commit | Line | Data |
---|---|---|
c862e87b JM |
1 | #! /bin/sh |
2 | # | |
3 | # shobj-conf -- output a series of variable assignments to be substituted | |
4 | # into a Makefile by configure which specify system-dependent | |
5 | # information for creating shared objects that may be loaded | |
6 | # into bash with `enable -f' | |
7 | # | |
8 | # usage: shobj-conf [-C compiler] -c host_cpu -o host_os -v host_vendor | |
9 | # | |
10 | # Chet Ramey | |
11 | # chet@po.cwru.edu | |
12 | ||
13 | # | |
14 | # defaults | |
15 | # | |
16 | SHOBJ_STATUS=supported | |
17 | SHLIB_STATUS=supported | |
18 | ||
19 | SHOBJ_CC=cc | |
20 | SHOBJ_CFLAGS= | |
21 | SHOBJ_LD= | |
22 | SHOBJ_LDFLAGS= | |
23 | SHOBJ_XLDFLAGS= | |
24 | SHOBJ_LIBS= | |
25 | ||
26 | SHLIB_XLDFLAGS= | |
27 | SHLIB_LIBS= | |
28 | SHLIB_LIBSUFF='so' | |
29 | ||
30 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF)' | |
31 | ||
32 | PROGNAME=`basename $0` | |
33 | USAGE="$PROGNAME [-C compiler] -c host_cpu -o host_os -v host_vendor" | |
34 | ||
35 | while [ $# -gt 0 ]; do | |
36 | case "$1" in | |
37 | -C) shift; SHOBJ_CC="$1"; shift ;; | |
38 | -c) shift; host_cpu="$1"; shift ;; | |
39 | -o) shift; host_os="$1"; shift ;; | |
40 | -v) shift; host_vendor="$1"; shift ;; | |
41 | *) echo "$USAGE" >&2 ; exit 2;; | |
42 | esac | |
43 | done | |
44 | ||
45 | case "${host_os}-${SHOBJ_CC}" in | |
46 | sunos4*-gcc*) | |
47 | SHOBJ_CFLAGS=-fpic | |
48 | SHOBJ_LD=/usr/bin/ld | |
49 | SHOBJ_LDFLAGS='-assert pure-text' | |
50 | ||
51 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' | |
52 | ;; | |
53 | ||
54 | sunos4*) | |
55 | SHOBJ_CFLAGS=-pic | |
56 | SHOBJ_LD=/usr/bin/ld | |
57 | SHOBJ_LDFLAGS='-assert pure-text' | |
58 | ||
59 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' | |
60 | ;; | |
61 | ||
62 | sunos5*-gcc*|solaris2*-gcc*) | |
63 | SHOBJ_CFLAGS=-fpic | |
64 | SHOBJ_LD='${CC}' | |
1b17e766 | 65 | SHOBJ_LDFLAGS='-shared -Wl,-i -Wl,-h,$@' |
c862e87b | 66 | |
1b17e766 | 67 | # SHLIB_XLDFLAGS='-R $(libdir)' |
c862e87b JM |
68 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
69 | ;; | |
70 | ||
71 | sunos5*|solaris2*) | |
72 | SHOBJ_CFLAGS='-K pic' | |
73 | SHOBJ_LD=/usr/ccs/bin/ld | |
74 | SHOBJ_LDFLAGS='-G -dy -z text -i -h $@' | |
75 | ||
1b17e766 | 76 | # SHLIB_XLDFLAGS='-R $(libdir)' |
c862e87b JM |
77 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
78 | ;; | |
79 | ||
80 | freebsd2* | netbsd* | openbsd*) | |
81 | SHOBJ_CFLAGS=-fpic | |
82 | SHOBJ_LD=ld | |
83 | SHOBJ_LDFLAGS='-x -Bshareable' | |
84 | ||
85 | SHLIB_XLDFLAGS='-R$(libdir)' | |
86 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' | |
87 | ;; | |
88 | ||
1b17e766 EZ |
89 | # FreeBSD-3.x can have either a.out or ELF object files |
90 | #freebsd3*) | |
91 | # SHOBJ_CFLAGS=-fpic | |
92 | # SHOBJ_LD='${CC}' | |
93 | # SHOBJ_LDFLAGS='-shared' | |
94 | # | |
95 | # SHLIB_XLDFLAGS='-R$(libdir)' | |
96 | # SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' | |
97 | # ;; | |
98 | ||
99 | # FreeBSD-3.x ELF | |
c862e87b JM |
100 | freebsd3*) |
101 | SHOBJ_CFLAGS=-fpic | |
102 | SHOBJ_LD='${CC}' | |
c862e87b | 103 | |
1b17e766 EZ |
104 | if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then |
105 | SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' | |
106 | ||
107 | SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)' | |
108 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
109 | else | |
110 | SHOBJ_LDFLAGS='-shared' | |
111 | ||
112 | SHLIB_XLDFLAGS='-R$(libdir)' | |
113 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' | |
114 | fi | |
c862e87b JM |
115 | ;; |
116 | ||
117 | linux*) | |
118 | SHOBJ_CFLAGS=-fPIC | |
119 | SHOBJ_LD='${CC}' | |
120 | SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' | |
121 | ||
122 | SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)' | |
123 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' | |
124 | ;; | |
125 | ||
126 | bsdi2*) | |
127 | SHOBJ_CC=shlicc2 | |
128 | SHOBJ_CFLAGS= | |
129 | SHOBJ_LD=ld | |
130 | SHOBJ_LDFLAGS=-r | |
131 | SHOBJ_LIBS=-lc_s.2.1.0 | |
132 | ||
133 | # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in | |
134 | # the ass -- they require changing {/usr/lib,etc}/shlib.map on | |
135 | # each system, and the library creation process is byzantine | |
136 | SHLIB_STATUS=unsupported | |
137 | ;; | |
138 | ||
139 | bsdi3*) | |
140 | SHOBJ_CC=shlicc2 | |
141 | SHOBJ_CFLAGS= | |
142 | SHOBJ_LD=ld | |
143 | SHOBJ_LDFLAGS=-r | |
144 | SHOBJ_LIBS=-lc_s.3.0.0 | |
145 | ||
146 | # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in | |
147 | # the ass -- they require changing {/usr/lib,etc}/shlib.map on | |
148 | # each system, and the library creation process is byzantine | |
149 | SHLIB_STATUS=unsupported | |
150 | ;; | |
151 | ||
152 | bsdi4*) | |
153 | # BSD/OS 4.x now supports ELF and SunOS-style dynamically-linked | |
154 | # shared libraries. gcc 2.x is the standard compiler, and the | |
155 | # `normal' gcc options should work as they do in Linux. | |
156 | ||
157 | SHOBJ_CFLAGS=-fPIC | |
158 | SHOBJ_LD='${CC}' | |
159 | SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' | |
160 | ||
161 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' | |
162 | ;; | |
163 | ||
1b17e766 EZ |
164 | osf*-gcc*) |
165 | # Fix to use gcc linker driver from bfischer@TechFak.Uni-Bielefeld.DE | |
166 | SHOBJ_LD='${CC}' | |
167 | SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' | |
168 | ||
169 | SHLIB_XLDFLAGS='-rpath $(libdir)' | |
170 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
171 | ;; | |
172 | ||
c862e87b JM |
173 | osf*) |
174 | SHOBJ_LD=ld | |
175 | SHOBJ_LDFLAGS='-shared -soname $@ -expect_unresolved "*"' | |
176 | ||
177 | SHLIB_XLDFLAGS='-rpath $(libdir)' | |
178 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
179 | ;; | |
180 | ||
181 | aix4.[2-9]*-gcc*) # lightly tested by jik@cisco.com | |
182 | SHOBJ_CFLAGS=-fpic | |
183 | SHOBJ_LD='ld' | |
184 | SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall' | |
185 | SHOBJ_XLDFLAGS='-G' | |
186 | ||
187 | SHLIB_XLDFLAGS='-bM:SRE' | |
188 | SHLIB_LIBS='-lcurses -lc' | |
189 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
190 | ;; | |
191 | ||
192 | aix4.[2-9]*) | |
193 | SHOBJ_CFLAGS=-K | |
194 | SHOBJ_LD='ld' | |
195 | SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall' | |
196 | SHOBJ_XLDFLAGS='-G' | |
197 | ||
198 | SHLIB_XLDFLAGS='-bM:SRE' | |
199 | SHLIB_LIBS='-lcurses -lc' | |
200 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
201 | ;; | |
202 | ||
203 | # | |
204 | # THE FOLLOWING ARE UNTESTED -- and some may not support the dlopen interface | |
205 | # | |
206 | irix[56]*-gcc*) | |
207 | SHOBJ_CFLAGS='-fpic' | |
208 | SHOBJ_LD='${CC}' | |
209 | SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' | |
210 | ||
211 | SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)' | |
212 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
213 | ;; | |
214 | ||
215 | irix[56]*) | |
216 | SHOBJ_CFLAGS='-K PIC' | |
217 | SHOBJ_LD=ld | |
1b17e766 EZ |
218 | # SHOBJ_LDFLAGS='-call_shared -hidden_symbol -no_unresolved -soname $@' |
219 | # Change from David Kaelbling <drk@sgi.com> | |
220 | SHOBJ_LDFLAGS='-shared -no_unresolved -soname $@' | |
c862e87b JM |
221 | |
222 | SHLIB_XLDFLAGS='-rpath $(libdir)' | |
223 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
224 | ;; | |
225 | ||
226 | hpux9*-gcc*) | |
227 | # must use gcc; the bundled cc cannot compile PIC code | |
228 | SHOBJ_CFLAGS='-fpic' | |
229 | SHOBJ_LD='${CC}' | |
230 | SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s' | |
231 | ||
232 | SHLIB_XLDFLAGS='-Wl,+b,$(libdir)' | |
233 | SHLIB_LIBSUFF='sl' | |
234 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
235 | ;; | |
236 | ||
237 | hpux9*) | |
238 | SHOBJ_STATUS=unsupported | |
239 | SHLIB_STATUS=unsupported | |
240 | ;; | |
241 | ||
242 | hpux10*-gcc*) | |
243 | # must use gcc; the bundled cc cannot compile PIC code | |
244 | SHOBJ_CFLAGS='-fpic' | |
245 | SHOBJ_LD='${CC}' | |
246 | SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s' | |
247 | ||
248 | SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)' | |
249 | SHLIB_LIBSUFF='sl' | |
250 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
251 | ;; | |
252 | ||
253 | hpux10*) | |
254 | SHOBJ_STATUS=unsupported | |
255 | SHLIB_STATUS=unsupported | |
256 | ;; | |
257 | ||
258 | hpux11*-gcc*) | |
259 | # must use gcc; the bundled cc cannot compile PIC code | |
260 | SHOBJ_CFLAGS='-fpic' | |
261 | SHOBJ_LD='${CC}' | |
262 | # SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,-B,symbolic -Wl,+s -Wl,+std -Wl,+h,$@' | |
263 | SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s -Wl,+h,$@' | |
264 | ||
265 | SHLIB_XLDFLAGS='-Wl,+b,$(libdir)' | |
266 | SHLIB_LIBSUFF='sl' | |
267 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
268 | ;; | |
269 | ||
270 | hpux11*) | |
271 | SHOBJ_STATUS=unsupported | |
272 | SHLIB_STATUS=unsupported | |
273 | ;; | |
274 | ||
275 | sysv4*-gcc*) | |
276 | SHOBJ_CFLAGS=-shared | |
277 | SHOBJ_LDFLAGS='-shared -h $@' | |
278 | SHOBJ_LD='${CC}' | |
279 | ||
280 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
281 | ;; | |
282 | ||
283 | sysv4*) | |
284 | SHOBJ_CFLAGS='-K PIC' | |
285 | SHOBJ_LD=ld | |
286 | SHOBJ_LDFLAGS='-dy -z text -G -h $@' | |
287 | ||
288 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
289 | ;; | |
290 | ||
291 | sco3.2v5*-gcc*) | |
292 | SHOBJ_CFLAGS='-fpic' # DEFAULTS TO ELF | |
293 | SHOBJ_LD='${CC}' | |
294 | SHOBJ_LDFLAGS='-shared' | |
295 | ||
296 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
297 | ;; | |
298 | ||
299 | sco3.2v5*) | |
300 | SHOBJ_CFLAGS='-K pic -b elf' | |
301 | SHOBJ_LD=ld | |
302 | SHOBJ_LDFLAGS='-G -b elf -dy -z text -h $@' | |
303 | ||
304 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
305 | ;; | |
306 | ||
307 | sysv5uw7*-gcc*) | |
308 | SHOBJ_CFLAGS='-fpic' | |
309 | SHOBJ_LD='${CC}' | |
310 | SHOBJ_LDFLAGS='-shared' | |
311 | ||
312 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
313 | ;; | |
314 | ||
315 | sysv5uw7*) | |
316 | SHOBJ_CFLAGS='-K PIC' | |
317 | SHOBJ_LD=ld | |
318 | SHOBJ_LDFLAGS='-G -dy -z text -h $@' | |
319 | ||
320 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
321 | ;; | |
322 | ||
323 | dgux*-gcc*) | |
324 | SHOBJ_CFLAGS=-fpic | |
325 | SHOBJ_LD='${CC}' | |
326 | SHOBJ_LDFLAGS='-shared' | |
327 | ||
328 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
329 | ;; | |
330 | ||
331 | dgux*) | |
332 | SHOBJ_CFLAGS='-K pic' | |
333 | SHOBJ_LD=ld | |
334 | SHOBJ_LDFLAGS='-G -dy -h $@' | |
335 | ||
336 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
337 | ;; | |
511fec4d | 338 | |
1b17e766 | 339 | msdos*) |
511fec4d EZ |
340 | SHOBJ_STATUS=unsupported |
341 | SHLIB_STATUS=unsupported | |
342 | ;; | |
343 | ||
c862e87b JM |
344 | # |
345 | # Rely on correct gcc configuration for everything else | |
346 | # | |
347 | *-gcc*) | |
348 | SHOBJ_CFLAGS=-fpic | |
349 | SHOBJ_LD='${CC}' | |
350 | SHOBJ_LDFLAGS='-shared' | |
351 | ||
352 | SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' | |
353 | ;; | |
354 | ||
355 | *) | |
356 | SHOBJ_STATUS=unsupported | |
357 | SHLIB_STATUS=unsupported | |
358 | ;; | |
359 | ||
360 | esac | |
361 | ||
362 | echo SHOBJ_CC=\'"$SHOBJ_CC"\' | |
363 | echo SHOBJ_CFLAGS=\'"$SHOBJ_CFLAGS"\' | |
364 | echo SHOBJ_LD=\'"$SHOBJ_LD"\' | |
365 | echo SHOBJ_LDFLAGS=\'"$SHOBJ_LDFLAGS"\' | |
366 | echo SHOBJ_XLDFLAGS=\'"$SHOBJ_XLDFLAGS"\' | |
367 | echo SHOBJ_LIBS=\'"$SHOBJ_LIBS"\' | |
368 | ||
369 | echo SHLIB_XLDFLAGS=\'"$SHLIB_XLDFLAGS"\' | |
370 | echo SHLIB_LIBS=\'"$SHLIB_LIBS"\' | |
371 | echo SHLIB_LIBSUFF=\'"$SHLIB_LIBSUFF"\' | |
372 | echo SHLIB_LIBVERSION=\'"$SHLIB_LIBVERSION"\' | |
373 | ||
374 | echo SHOBJ_STATUS=\'"$SHOBJ_STATUS"\' | |
375 | echo SHLIB_STATUS=\'"$SHLIB_STATUS"\' | |
376 | ||
377 | exit 0 |