shobj-conf revision 136644
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# Copyright (C) 1996-2002 Free Software Foundation, Inc. 14# 15# This program is free software; you can redistribute it and/or modify 16# it under the terms of the GNU General Public License as published by 17# the Free Software Foundation; either version 2, or (at your option) 18# any later version. 19# 20# This program is distributed in the hope that it will be useful, 21# but WITHOUT ANY WARRANTY; without even the implied warranty of 22# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23# GNU General Public License for more details. 24# 25# You should have received a copy of the GNU General Public License 26# along with this program; if not, write to the Free Software 27# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. 28 29# 30# defaults 31# 32SHOBJ_STATUS=supported 33SHLIB_STATUS=supported 34 35SHOBJ_CC=cc 36SHOBJ_CFLAGS= 37SHOBJ_LD= 38SHOBJ_LDFLAGS= 39SHOBJ_XLDFLAGS= 40SHOBJ_LIBS= 41 42SHLIB_XLDFLAGS= 43SHLIB_LIBS= 44SHLIB_LIBSUFF='so' 45 46SHLIB_LIBVERSION='$(SHLIB_LIBSUFF)' 47 48PROGNAME=`basename $0` 49USAGE="$PROGNAME [-C compiler] -c host_cpu -o host_os -v host_vendor" 50 51while [ $# -gt 0 ]; do 52 case "$1" in 53 -C) shift; SHOBJ_CC="$1"; shift ;; 54 -c) shift; host_cpu="$1"; shift ;; 55 -o) shift; host_os="$1"; shift ;; 56 -v) shift; host_vendor="$1"; shift ;; 57 *) echo "$USAGE" >&2 ; exit 2;; 58 esac 59done 60 61case "${host_os}-${SHOBJ_CC}" in 62sunos4*-*gcc*) 63 SHOBJ_CFLAGS=-fpic 64 SHOBJ_LD=/usr/bin/ld 65 SHOBJ_LDFLAGS='-assert pure-text' 66 67 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' 68 ;; 69 70sunos4*) 71 SHOBJ_CFLAGS=-pic 72 SHOBJ_LD=/usr/bin/ld 73 SHOBJ_LDFLAGS='-assert pure-text' 74 75 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' 76 ;; 77 78sunos5*-*gcc*|solaris2*-*gcc*) 79 SHOBJ_CFLAGS=-fpic 80 SHOBJ_LD='${CC}' 81 # This line works for the Solaris linker in /usr/ccs/bin/ld 82 SHOBJ_LDFLAGS='-shared -Wl,-i -Wl,-h,$@' 83 # This line works for the GNU ld 84# SHOBJ_LDFLAGS='-shared -Wl,-h,$@' 85 86# SHLIB_XLDFLAGS='-R $(libdir)' 87 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 88 ;; 89 90sunos5*|solaris2*) 91 SHOBJ_CFLAGS='-K pic' 92 SHOBJ_LD=/usr/ccs/bin/ld 93 SHOBJ_LDFLAGS='-G -dy -z text -i -h $@' 94 95# SHLIB_XLDFLAGS='-R $(libdir)' 96 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 97 ;; 98 99# All versions of Linux or the semi-mythical GNU Hurd. 100linux*-*|gnu*-*|k*bsd*-gnu-*) 101 SHOBJ_CFLAGS=-fPIC 102 SHOBJ_LD='${CC}' 103 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' 104 105 SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`' 106 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' 107 ;; 108 109freebsd2* | netbsd*) 110 SHOBJ_CFLAGS=-fpic 111 SHOBJ_LD=ld 112 SHOBJ_LDFLAGS='-x -Bshareable' 113 114 SHLIB_XLDFLAGS='-R$(libdir)' 115 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' 116 ;; 117 118# FreeBSD-3.x ELF 119freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*) 120 SHOBJ_CFLAGS=-fpic 121 SHOBJ_LD='${CC}' 122 123 if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then 124 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' 125 126 SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)' 127 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 128 else 129 SHOBJ_LDFLAGS='-shared' 130 131 SHLIB_XLDFLAGS='-R$(libdir)' 132 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' 133 fi 134 ;; 135 136# Darwin/MacOS X 137darwin*|macosx*) 138 SHOBJ_STATUS=unsupported 139 SHLIB_STATUS=supported 140 141 SHOBJ_CFLAGS='-fno-common' 142 143 SHOBJ_LD='${CC}' 144 145 SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)' 146 SHLIB_LIBSUFF='dylib' 147 148 case "${host_os}" in 149 darwin7*) SHOBJ_LDFLAGS='' 150 SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' 151 ;; 152 *) SHOBJ_LDFLAGS='-dynamic' 153 SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' 154 ;; 155 esac 156 157 SHLIB_LIBS='-lncurses' # see if -lcurses works on MacOS X 10.1 158 ;; 159 160openbsd*) 161 SHOBJ_CFLAGS=-fPIC 162 SHOBJ_LD='${CC}' 163 SHOBJ_LDFLAGS='-shared' 164 165 SHLIB_XLDFLAGS='-R$(libdir)' 166 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' 167 ;; 168 169bsdi2*) 170 SHOBJ_CC=shlicc2 171 SHOBJ_CFLAGS= 172 SHOBJ_LD=ld 173 SHOBJ_LDFLAGS=-r 174 SHOBJ_LIBS=-lc_s.2.1.0 175 176 # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in 177 # the ass -- they require changing {/usr/lib,etc}/shlib.map on 178 # each system, and the library creation process is byzantine 179 SHLIB_STATUS=unsupported 180 ;; 181 182bsdi3*) 183 SHOBJ_CC=shlicc2 184 SHOBJ_CFLAGS= 185 SHOBJ_LD=ld 186 SHOBJ_LDFLAGS=-r 187 SHOBJ_LIBS=-lc_s.3.0.0 188 189 # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in 190 # the ass -- they require changing {/usr/lib,etc}/shlib.map on 191 # each system, and the library creation process is byzantine 192 SHLIB_STATUS=unsupported 193 ;; 194 195bsdi4*) 196 # BSD/OS 4.x now supports ELF and SunOS-style dynamically-linked 197 # shared libraries. gcc 2.x is the standard compiler, and the 198 # `normal' gcc options should work as they do in Linux. 199 200 SHOBJ_CFLAGS=-fPIC 201 SHOBJ_LD='${CC}' 202 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' 203 204 SHLIB_XLDFLAGS='-Wl,-soname,`basename $@ $(SHLIB_MINOR)`' 205 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' 206 ;; 207 208osf*-*gcc*) 209 # Fix to use gcc linker driver from bfischer@TechFak.Uni-Bielefeld.DE 210 SHOBJ_LD='${CC}' 211 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' 212 213 SHLIB_XLDFLAGS='-rpath $(libdir)' 214 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 215 ;; 216 217osf*) 218 SHOBJ_LD=ld 219 SHOBJ_LDFLAGS='-shared -soname $@ -expect_unresolved "*"' 220 221 SHLIB_XLDFLAGS='-rpath $(libdir)' 222 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 223 ;; 224 225aix4.[2-9]*-*gcc*) # lightly tested by jik@cisco.com 226 SHOBJ_CFLAGS=-fpic 227 SHOBJ_LD='ld' 228 SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall' 229 SHOBJ_XLDFLAGS='-G' 230 231 SHLIB_XLDFLAGS='-bM:SRE' 232 SHLIB_LIBS='-lcurses -lc' 233 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 234 ;; 235 236aix4.[2-9]*) 237 SHOBJ_CFLAGS=-K 238 SHOBJ_LD='ld' 239 SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall' 240 SHOBJ_XLDFLAGS='-G' 241 242 SHLIB_XLDFLAGS='-bM:SRE' 243 SHLIB_LIBS='-lcurses -lc' 244 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 245 ;; 246 247# 248# THE FOLLOWING ARE UNTESTED -- and some may not support the dlopen interface 249# 250irix[56]*-*gcc*) 251 SHOBJ_CFLAGS='-fpic' 252 SHOBJ_LD='${CC}' 253 SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' 254 255 SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)' 256 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 257 ;; 258 259irix[56]*) 260 SHOBJ_CFLAGS='-K PIC' 261 SHOBJ_LD=ld 262# SHOBJ_LDFLAGS='-call_shared -hidden_symbol -no_unresolved -soname $@' 263# Change from David Kaelbling <drk@sgi.com>. If you have problems, 264# remove the `-no_unresolved' 265 SHOBJ_LDFLAGS='-shared -no_unresolved -soname $@' 266 267 SHLIB_XLDFLAGS='-rpath $(libdir)' 268 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 269 ;; 270 271hpux9*-*gcc*) 272 # must use gcc; the bundled cc cannot compile PIC code 273 SHOBJ_CFLAGS='-fpic' 274 SHOBJ_LD='${CC}' 275 SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s' 276 277 SHLIB_XLDFLAGS='-Wl,+b,$(libdir)' 278 SHLIB_LIBSUFF='sl' 279 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 280 ;; 281 282hpux9*) 283 SHOBJ_STATUS=unsupported 284 SHLIB_STATUS=unsupported 285 286 # If you are using the HP ANSI C compiler, you can uncomment and use 287 # this code (I have not tested it) 288# SHOBJ_STATUS=supported 289# SHLIB_STATUS=supported 290# 291# SHOBJ_CFLAGS='+z' 292# SHOBJ_LD='ld' 293# SHOBJ_LDFLAGS='-b +s' 294# 295# SHLIB_XLDFLAGS='+b $(libdir)' 296# SHLIB_LIBSUFF='sl' 297# SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 298 299 ;; 300 301hpux10*-*gcc*) 302 # must use gcc; the bundled cc cannot compile PIC code 303 SHOBJ_CFLAGS='-fpic' 304 SHOBJ_LD='${CC}' 305 # if you have problems linking here, moving the `-Wl,+h,$@' from 306 # SHLIB_XLDFLAGS to SHOBJ_LDFLAGS has been reported to work 307 SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s' 308 309 SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)' 310 SHLIB_LIBSUFF='sl' 311 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 312 ;; 313 314hpux10*) 315 SHOBJ_STATUS=unsupported 316 SHLIB_STATUS=unsupported 317 318 # If you are using the HP ANSI C compiler, you can uncomment and use 319 # this code (I have not tested it) 320# SHOBJ_STATUS=supported 321# SHLIB_STATUS=supported 322# 323# SHOBJ_CFLAGS='+z' 324# SHOBJ_LD='ld' 325# SHOBJ_LDFLAGS='-b +s +h $@' 326# 327# SHLIB_XLDFLAGS='+b $(libdir)' 328# SHLIB_LIBSUFF='sl' 329# SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 330 331 ;; 332 333hpux11*-*gcc*) 334 # must use gcc; the bundled cc cannot compile PIC code 335 SHOBJ_CFLAGS='-fpic' 336 SHOBJ_LD='${CC}' 337# SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,-B,symbolic -Wl,+s -Wl,+std -Wl,+h,$@' 338 SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s -Wl,+h,$@' 339 340 SHLIB_XLDFLAGS='-Wl,+b,$(libdir)' 341 SHLIB_LIBSUFF='sl' 342 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 343 ;; 344 345hpux11*) 346 SHOBJ_STATUS=unsupported 347 SHLIB_STATUS=unsupported 348 349 # If you are using the HP ANSI C compiler, you can uncomment and use 350 # this code (I have not tested it) 351# SHOBJ_STATUS=supported 352# SHLIB_STATUS=supported 353# 354# SHOBJ_CFLAGS='+z' 355# SHOBJ_LD='ld' 356# SHOBJ_LDFLAGS='-b +s +h $@' 357# 358# SHLIB_XLDFLAGS='+b $(libdir)' 359# SHLIB_LIBSUFF='sl' 360# SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 361 362 ;; 363 364sysv4*-*gcc*) 365 SHOBJ_CFLAGS=-shared 366 SHOBJ_LDFLAGS='-shared -h $@' 367 SHOBJ_LD='${CC}' 368 369 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 370 ;; 371 372sysv4*) 373 SHOBJ_CFLAGS='-K PIC' 374 SHOBJ_LD=ld 375 SHOBJ_LDFLAGS='-dy -z text -G -h $@' 376 377 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 378 ;; 379 380sco3.2v5*-*gcc*) 381 SHOBJ_CFLAGS='-fpic' # DEFAULTS TO ELF 382 SHOBJ_LD='${CC}' 383 SHOBJ_LDFLAGS='-shared' 384 385 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 386 ;; 387 388sco3.2v5*) 389 SHOBJ_CFLAGS='-K pic -b elf' 390 SHOBJ_LD=ld 391 SHOBJ_LDFLAGS='-G -b elf -dy -z text -h $@' 392 393 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 394 ;; 395 396sysv5uw7*-*gcc*) 397 SHOBJ_CFLAGS='-fpic' 398 SHOBJ_LD='${CC}' 399 SHOBJ_LDFLAGS='-shared' 400 401 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 402 ;; 403 404sysv5uw7*) 405 SHOBJ_CFLAGS='-K PIC' 406 SHOBJ_LD=ld 407 SHOBJ_LDFLAGS='-G -dy -z text -h $@' 408 409 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 410 ;; 411 412dgux*-*gcc*) 413 SHOBJ_CFLAGS=-fpic 414 SHOBJ_LD='${CC}' 415 SHOBJ_LDFLAGS='-shared' 416 417 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 418 ;; 419 420dgux*) 421 SHOBJ_CFLAGS='-K pic' 422 SHOBJ_LD=ld 423 SHOBJ_LDFLAGS='-G -dy -h $@' 424 425 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 426 ;; 427 428msdos*) 429 SHOBJ_STATUS=unsupported 430 SHLIB_STATUS=unsupported 431 ;; 432 433# 434# Rely on correct gcc configuration for everything else 435# 436*-*gcc*) 437 SHOBJ_CFLAGS=-fpic 438 SHOBJ_LD='${CC}' 439 SHOBJ_LDFLAGS='-shared' 440 441 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' 442 ;; 443 444*) 445 SHOBJ_STATUS=unsupported 446 SHLIB_STATUS=unsupported 447 ;; 448 449esac 450 451echo SHOBJ_CC=\'"$SHOBJ_CC"\' 452echo SHOBJ_CFLAGS=\'"$SHOBJ_CFLAGS"\' 453echo SHOBJ_LD=\'"$SHOBJ_LD"\' 454echo SHOBJ_LDFLAGS=\'"$SHOBJ_LDFLAGS"\' 455echo SHOBJ_XLDFLAGS=\'"$SHOBJ_XLDFLAGS"\' 456echo SHOBJ_LIBS=\'"$SHOBJ_LIBS"\' 457 458echo SHLIB_XLDFLAGS=\'"$SHLIB_XLDFLAGS"\' 459echo SHLIB_LIBS=\'"$SHLIB_LIBS"\' 460echo SHLIB_LIBSUFF=\'"$SHLIB_LIBSUFF"\' 461echo SHLIB_LIBVERSION=\'"$SHLIB_LIBVERSION"\' 462 463echo SHOBJ_STATUS=\'"$SHOBJ_STATUS"\' 464echo SHLIB_STATUS=\'"$SHLIB_STATUS"\' 465 466exit 0 467