shobj-conf revision 75406
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# 16SHOBJ_STATUS=supported 17SHLIB_STATUS=supported 18 19SHOBJ_CC=cc 20SHOBJ_CFLAGS= 21SHOBJ_LD= 22SHOBJ_LDFLAGS= 23SHOBJ_XLDFLAGS= 24SHOBJ_LIBS= 25 26SHLIB_XLDFLAGS= 27SHLIB_LIBS= 28SHLIB_LIBSUFF='so' 29 30SHLIB_LIBVERSION='$(SHLIB_LIBSUFF)' 31 32PROGNAME=`basename $0` 33USAGE="$PROGNAME [-C compiler] -c host_cpu -o host_os -v host_vendor" 34 35while [ $# -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 43done 44 45case "${host_os}-${SHOBJ_CC}" in 46sunos4*-*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 54sunos4*) 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 62sunos5*-*gcc*|solaris2*-*gcc*) 63 SHOBJ_CFLAGS=-fpic 64 SHOBJ_LD='${CC}' 65 SHOBJ_LDFLAGS='-shared -Wl,-i -Wl,-h,$@' 66 67# SHLIB_XLDFLAGS='-R $(libdir)' 68 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 69 ;; 70 71sunos5*|solaris2*) 72 SHOBJ_CFLAGS='-K pic' 73 SHOBJ_LD=/usr/ccs/bin/ld 74 SHOBJ_LDFLAGS='-G -dy -z text -i -h $@' 75 76# SHLIB_XLDFLAGS='-R $(libdir)' 77 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 78 ;; 79 80freebsd2* | 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 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 100freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*) 101 SHOBJ_CFLAGS=-fpic 102 SHOBJ_LD='${CC}' 103 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 115 ;; 116# All versions of Linux or the semi-mythical GNU Hurd. 117linux*|gnu*) 118 SHOBJ_CFLAGS=-fPIC 119 SHOBJ_LD='${CC}' 120 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' 121 122 SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`' 123 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' 124 ;; 125 126bsdi2*) 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 139bsdi3*) 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 152bsdi4*) 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_XLDFLAGS='-Wl,-soname,`basename $@ $(SHLIB_MINOR)`' 162 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' 163 ;; 164 165osf*-*gcc*) 166 # Fix to use gcc linker driver from bfischer@TechFak.Uni-Bielefeld.DE 167 SHOBJ_LD='${CC}' 168 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' 169 170 SHLIB_XLDFLAGS='-rpath $(libdir)' 171 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 172 ;; 173 174osf*) 175 SHOBJ_LD=ld 176 SHOBJ_LDFLAGS='-shared -soname $@ -expect_unresolved "*"' 177 178 SHLIB_XLDFLAGS='-rpath $(libdir)' 179 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 180 ;; 181 182aix4.[2-9]*-*gcc*) # lightly tested by jik@cisco.com 183 SHOBJ_CFLAGS=-fpic 184 SHOBJ_LD='ld' 185 SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall' 186 SHOBJ_XLDFLAGS='-G' 187 188 SHLIB_XLDFLAGS='-bM:SRE' 189 SHLIB_LIBS='-lcurses -lc' 190 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 191 ;; 192 193aix4.[2-9]*) 194 SHOBJ_CFLAGS=-K 195 SHOBJ_LD='ld' 196 SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall' 197 SHOBJ_XLDFLAGS='-G' 198 199 SHLIB_XLDFLAGS='-bM:SRE' 200 SHLIB_LIBS='-lcurses -lc' 201 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 202 ;; 203 204# 205# THE FOLLOWING ARE UNTESTED -- and some may not support the dlopen interface 206# 207irix[56]*-*gcc*) 208 SHOBJ_CFLAGS='-fpic' 209 SHOBJ_LD='${CC}' 210 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' 211 212 SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)' 213 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 214 ;; 215 216irix[56]*) 217 SHOBJ_CFLAGS='-K PIC' 218 SHOBJ_LD=ld 219# SHOBJ_LDFLAGS='-call_shared -hidden_symbol -no_unresolved -soname $@' 220# Change from David Kaelbling <drk@sgi.com>. If you have problems, 221# remove the `-no_unresolved' 222 SHOBJ_LDFLAGS='-shared -no_unresolved -soname $@' 223 224 SHLIB_XLDFLAGS='-rpath $(libdir)' 225 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 226 ;; 227 228hpux9*-*gcc*) 229 # must use gcc; the bundled cc cannot compile PIC code 230 SHOBJ_CFLAGS='-fpic' 231 SHOBJ_LD='${CC}' 232 SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s' 233 234 SHLIB_XLDFLAGS='-Wl,+b,$(libdir)' 235 SHLIB_LIBSUFF='sl' 236 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 237 ;; 238 239hpux9*) 240 SHOBJ_STATUS=unsupported 241 SHLIB_STATUS=unsupported 242 ;; 243 244hpux10*-*gcc*) 245 # must use gcc; the bundled cc cannot compile PIC code 246 SHOBJ_CFLAGS='-fpic' 247 SHOBJ_LD='${CC}' 248 SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s' 249 250 SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)' 251 SHLIB_LIBSUFF='sl' 252 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 253 ;; 254 255hpux10*) 256 SHOBJ_STATUS=unsupported 257 SHLIB_STATUS=unsupported 258 259 # If you are using the HP ANSI C compiler, you can uncomment and use 260 # this code 261# SHOBJ_STATUS=unsupported 262# SHLIB_STATUS=unsupported 263# 264# SHOBJ_CFLAGS='+z' 265# SHOBJ_LD='ld' 266# SHOBJ_LDFLAGS='-b' 267# 268# SHLIB_XLDFLAGS='' 269# SHLIB_LIBSUFF='sl' 270# SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 271 ;; 272 273hpux11*-*gcc*) 274 # must use gcc; the bundled cc cannot compile PIC code 275 SHOBJ_CFLAGS='-fpic' 276 SHOBJ_LD='${CC}' 277# SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,-B,symbolic -Wl,+s -Wl,+std -Wl,+h,$@' 278 SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s -Wl,+h,$@' 279 280 SHLIB_XLDFLAGS='-Wl,+b,$(libdir)' 281 SHLIB_LIBSUFF='sl' 282 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 283 ;; 284 285hpux11*) 286 SHOBJ_STATUS=unsupported 287 SHLIB_STATUS=unsupported 288 289 # If you are using the HP ANSI C compiler, you can uncomment and use 290 # this code 291# SHOBJ_STATUS=unsupported 292# SHLIB_STATUS=unsupported 293# 294# SHOBJ_CFLAGS='+z' 295# SHOBJ_LD='ld' 296# SHOBJ_LDFLAGS='-b' 297# 298# SHLIB_XLDFLAGS='' 299# SHLIB_LIBSUFF='sl' 300# SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 301 302 ;; 303 304sysv4*-*gcc*) 305 SHOBJ_CFLAGS=-shared 306 SHOBJ_LDFLAGS='-shared -h $@' 307 SHOBJ_LD='${CC}' 308 309 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 310 ;; 311 312sysv4*) 313 SHOBJ_CFLAGS='-K PIC' 314 SHOBJ_LD=ld 315 SHOBJ_LDFLAGS='-dy -z text -G -h $@' 316 317 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 318 ;; 319 320sco3.2v5*-*gcc*) 321 SHOBJ_CFLAGS='-fpic' # DEFAULTS TO ELF 322 SHOBJ_LD='${CC}' 323 SHOBJ_LDFLAGS='-shared' 324 325 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 326 ;; 327 328sco3.2v5*) 329 SHOBJ_CFLAGS='-K pic -b elf' 330 SHOBJ_LD=ld 331 SHOBJ_LDFLAGS='-G -b elf -dy -z text -h $@' 332 333 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 334 ;; 335 336sysv5uw7*-*gcc*) 337 SHOBJ_CFLAGS='-fpic' 338 SHOBJ_LD='${CC}' 339 SHOBJ_LDFLAGS='-shared' 340 341 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 342 ;; 343 344sysv5uw7*) 345 SHOBJ_CFLAGS='-K PIC' 346 SHOBJ_LD=ld 347 SHOBJ_LDFLAGS='-G -dy -z text -h $@' 348 349 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 350 ;; 351 352dgux*-*gcc*) 353 SHOBJ_CFLAGS=-fpic 354 SHOBJ_LD='${CC}' 355 SHOBJ_LDFLAGS='-shared' 356 357 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 358 ;; 359 360dgux*) 361 SHOBJ_CFLAGS='-K pic' 362 SHOBJ_LD=ld 363 SHOBJ_LDFLAGS='-G -dy -h $@' 364 365 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 366 ;; 367 368msdos*) 369 SHOBJ_STATUS=unsupported 370 SHLIB_STATUS=unsupported 371 ;; 372 373# 374# Rely on correct gcc configuration for everything else 375# 376*-*gcc*) 377 SHOBJ_CFLAGS=-fpic 378 SHOBJ_LD='${CC}' 379 SHOBJ_LDFLAGS='-shared' 380 381 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 382 ;; 383 384*) 385 SHOBJ_STATUS=unsupported 386 SHLIB_STATUS=unsupported 387 ;; 388 389esac 390 391echo SHOBJ_CC=\'"$SHOBJ_CC"\' 392echo SHOBJ_CFLAGS=\'"$SHOBJ_CFLAGS"\' 393echo SHOBJ_LD=\'"$SHOBJ_LD"\' 394echo SHOBJ_LDFLAGS=\'"$SHOBJ_LDFLAGS"\' 395echo SHOBJ_XLDFLAGS=\'"$SHOBJ_XLDFLAGS"\' 396echo SHOBJ_LIBS=\'"$SHOBJ_LIBS"\' 397 398echo SHLIB_XLDFLAGS=\'"$SHLIB_XLDFLAGS"\' 399echo SHLIB_LIBS=\'"$SHLIB_LIBS"\' 400echo SHLIB_LIBSUFF=\'"$SHLIB_LIBSUFF"\' 401echo SHLIB_LIBVERSION=\'"$SHLIB_LIBVERSION"\' 402 403echo SHOBJ_STATUS=\'"$SHOBJ_STATUS"\' 404echo SHLIB_STATUS=\'"$SHLIB_STATUS"\' 405 406exit 0 407