1# _GCC_PICFLAG(FLAG, DISPATCH) 2# ---------------------------- 3# Store PIC flag corresponding to DISPATCH triplet in FLAG. 4# Explit use of -fpic in CFLAGS corresponding to FLAG overrides default. 5AC_DEFUN([_GCC_PICFLAG], [ 6 7case "${$2}" in 8 # PIC is the default on some targets or must not be used. 9 *-*-darwin*) 10 # PIC is the default on this platform 11 # Common symbols not allowed in MH_DYLIB files 12 $1=-fno-common 13 ;; 14 alpha*-dec-osf5*) 15 # PIC is the default. 16 ;; 17 hppa*64*-*-hpux*) 18 # PIC is the default for 64-bit PA HP-UX. 19 ;; 20 i[[34567]]86-*-cygwin* | x86_64-*-cygwin*) 21 ;; 22 i[[34567]]86-*-mingw* | x86_64-*-mingw*) 23 ;; 24 i[[34567]]86-*-interix[[3-9]]*) 25 # Interix 3.x gcc -fpic/-fPIC options generate broken code. 26 # Instead, we relocate shared libraries at runtime. 27 ;; 28 i[[34567]]86-*-nto-qnx*) 29 # QNX uses GNU C++, but need to define -shared option too, otherwise 30 # it will coredump. 31 $1='-fPIC -shared' 32 ;; 33 i[[34567]]86-pc-msdosdjgpp*) 34 # DJGPP does not support shared libraries at all. 35 ;; 36 ia64*-*-hpux*) 37 # On IA64 HP-UX, PIC is the default but the pic flag 38 # sets the default TLS model and affects inlining. 39 $1=-fPIC 40 ;; 41 mips-sgi-irix6*) 42 # PIC is the default. 43 ;; 44 rs6000-ibm-aix* | powerpc-ibm-aix*) 45 # All AIX code is PIC. 46 ;; 47 48 # Some targets support both -fPIC and -fpic, but prefer the latter. 49 # FIXME: Why? 50 i[[34567]]86-*-* | x86_64-*-*) 51 $1=-fpic 52 ;; 53 # FIXME: Override -fPIC default in libgcc only? 54 sh-*-linux* | sh[[2346lbe]]*-*-linux*) 55 $1=-fpic 56 ;; 57 # FIXME: Simplify to sh*-*-netbsd*? 58 sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \ 59 sh64-*-netbsd* | sh64l*-*-netbsd*) 60 $1=-fpic 61 ;; 62 # Default to -fPIC unless specified otherwise. 63 *) 64 $1=-fPIC 65 ;; 66esac 67 68# If the user explicitly uses -fpic/-fPIC, keep that. 69case "${m4_bpatsubsts($1, PICFLAG, CFLAGS)}" in 70 *-fpic*) 71 $1=-fpic 72 ;; 73 *-fPIC*) 74 $1=-fPIC 75 ;; 76esac 77]) 78 79# GCC_PICFLAG 80# ----------- 81# Store host PIC flag in PICFLAG. 82AC_DEFUN([GCC_PICFLAG], [ 83 AC_REQUIRE([AC_CANONICAL_HOST]) 84 _GCC_PICFLAG([PICFLAG], [host])]) 85 86# GCC_PICFLAG_FOR_TARGET 87# ---------------------- 88# Store target PIC flag in PICFLAG_FOR_TARGET. 89AC_DEFUN([GCC_PICFLAG_FOR_TARGET], [ 90 AC_REQUIRE([AC_CANONICAL_TARGET]) 91 _GCC_PICFLAG([PICFLAG_FOR_TARGET], [target])]) 92