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