Home | History | Annotate | Download | only in mesa3d
      1 # A few convenience macros for Mesa, mostly to keep all the platform
      2 # specifics out of configure.ac.
      3 
      4 # MESA_PIC_FLAGS()
      5 #
      6 # Find out whether to build PIC code using the option --enable-pic and
      7 # the configure enable_static/enable_shared settings. If PIC is needed,
      8 # figure out the necessary flags for the platform and compiler.
      9 #
     10 # The platform checks have been shamelessly taken from libtool and
     11 # stripped down to just what's needed for Mesa. See _LT_COMPILER_PIC in
     12 # /usr/share/aclocal/libtool.m4 or
     13 # http://git.savannah.gnu.org/gitweb/?p=libtool.git;a=blob;f=libltdl/m4/libtool.m4;hb=HEAD
     14 #
     15 AC_DEFUN([MESA_PIC_FLAGS],
     16 [AC_REQUIRE([AC_PROG_CC])dnl
     17 AC_ARG_VAR([PIC_FLAGS], [compiler flags for PIC code])
     18 AC_ARG_ENABLE([pic],
     19     [AS_HELP_STRING([--disable-pic],
     20         [compile PIC objects @<:@default=enabled for shared builds
     21         on supported platforms@:>@])],
     22     [enable_pic="$enableval"
     23     test "x$enable_pic" = x && enable_pic=auto],
     24     [enable_pic=auto])
     25 # disable PIC by default for static builds
     26 if test "$enable_pic" = auto && test "$enable_static" = yes; then
     27     enable_pic=no
     28 fi
     29 # if PIC hasn't been explicitly disabled, try to figure out the flags
     30 if test "$enable_pic" != no; then
     31     AC_MSG_CHECKING([for $CC option to produce PIC])
     32     # allow the user's flags to override
     33     if test "x$PIC_FLAGS" = x; then
     34         # see if we're using GCC
     35         if test "x$GCC" = xyes; then
     36             case "$host_os" in
     37             aix*|beos*|cygwin*|irix5*|irix6*|osf3*|osf4*|osf5*)
     38                 # PIC is the default for these OSes.
     39                 ;;
     40             mingw*|os2*|pw32*)
     41                 # This hack is so that the source file can tell whether
     42                 # it is being built for inclusion in a dll (and should
     43                 # export symbols for example).
     44                 PIC_FLAGS="-DDLL_EXPORT"
     45                 ;;
     46             darwin*|rhapsody*)
     47                 # PIC is the default on this platform
     48                 # Common symbols not allowed in MH_DYLIB files
     49                 PIC_FLAGS="-fno-common"
     50                 ;;
     51             hpux*)
     52                 # PIC is the default for IA64 HP-UX and 64-bit HP-UX,
     53                 # but not for PA HP-UX.
     54                 case $host_cpu in
     55                 hppa*64*|ia64*)
     56                     ;;
     57                 *)
     58                     PIC_FLAGS="-fPIC"
     59                     ;;
     60                 esac
     61                 ;;
     62             *)
     63                 # Everyone else on GCC uses -fPIC
     64                 PIC_FLAGS="-fPIC"
     65                 ;;
     66             esac
     67         else # !GCC
     68             case "$host_os" in
     69             hpux9*|hpux10*|hpux11*)
     70                 # PIC is the default for IA64 HP-UX and 64-bit HP-UX,
     71                 # but not for PA HP-UX.
     72                 case "$host_cpu" in
     73                 hppa*64*|ia64*)
     74                     # +Z the default
     75                     ;;
     76                 *)
     77                     PIC_FLAGS="+Z"
     78                     ;;
     79                 esac
     80                 ;;
     81             linux*|k*bsd*-gnu)
     82                 case `basename "$CC"` in
     83                 icc*|ecc*|ifort*)
     84                     PIC_FLAGS="-KPIC"
     85                     ;;
     86                 pgcc*|pgf77*|pgf90*|pgf95*)
     87                     # Portland Group compilers (*not* the Pentium gcc
     88                     # compiler, which looks to be a dead project)
     89                     PIC_FLAGS="-fpic"
     90                     ;;
     91                 ccc*)
     92                     # All Alpha code is PIC.
     93                     ;;
     94                 xl*)
     95                     # IBM XL C 8.0/Fortran 10.1 on PPC
     96                     PIC_FLAGS="-qpic"
     97                     ;;
     98                 *)
     99                     case `$CC -V 2>&1 | sed 5q` in
    100                     *Sun\ C*|*Sun\ F*)
    101                         # Sun C 5.9 or Sun Fortran
    102                         PIC_FLAGS="-KPIC"
    103                         ;;
    104                     esac
    105                 esac
    106                 ;;
    107             solaris*)
    108                 PIC_FLAGS="-KPIC"
    109                 ;;
    110             sunos4*)
    111                 PIC_FLAGS="-PIC"
    112                 ;;
    113             esac
    114         fi # GCC
    115     fi # PIC_FLAGS
    116     AC_MSG_RESULT([$PIC_FLAGS])
    117 fi
    118 AC_SUBST([PIC_FLAGS])
    119 ])# MESA_PIC_FLAGS
    120