| # A few convenience macros for Mesa, mostly to keep all the platform |
| # specifics out of configure.ac. |
| |
| # MESA_PIC_FLAGS() |
| # |
| # Find out whether to build PIC code using the option --enable-pic and |
| # the configure enable_static/enable_shared settings. If PIC is needed, |
| # figure out the necessary flags for the platform and compiler. |
| # |
| # The platform checks have been shamelessly taken from libtool and |
| # stripped down to just what's needed for Mesa. See _LT_COMPILER_PIC in |
| # /usr/share/aclocal/libtool.m4 or |
| # http://git.savannah.gnu.org/gitweb/?p=libtool.git;a=blob;f=libltdl/m4/libtool.m4;hb=HEAD |
| # |
| AC_DEFUN([MESA_PIC_FLAGS], |
| [AC_REQUIRE([AC_PROG_CC])dnl |
| AC_ARG_VAR([PIC_FLAGS], [compiler flags for PIC code]) |
| AC_ARG_ENABLE([pic], |
| [AS_HELP_STRING([--disable-pic], |
| [don't compile PIC objects @<:@default=enabled for shared builds |
| on supported platforms@:>@])], |
| [enable_pic="$enableval" |
| test "x$enable_pic" = x && enable_pic=auto], |
| [enable_pic=auto]) |
| # disable PIC by default for static builds |
| if test "$enable_pic" = auto && test "$enable_static" = yes; then |
| enable_pic=no |
| fi |
| # if PIC hasn't been explicitly disabled, try to figure out the flags |
| if test "$enable_pic" != no; then |
| AC_MSG_CHECKING([for $CC option to produce PIC]) |
| # allow the user's flags to override |
| if test "x$PIC_FLAGS" = x; then |
| # see if we're using GCC |
| if test "x$GCC" = xyes; then |
| case "$host_os" in |
| aix*|beos*|cygwin*|irix5*|irix6*|osf3*|osf4*|osf5*) |
| # PIC is the default for these OSes. |
| ;; |
| mingw*|os2*|pw32*) |
| # This hack is so that the source file can tell whether |
| # it is being built for inclusion in a dll (and should |
| # export symbols for example). |
| PIC_FLAGS="-DDLL_EXPORT" |
| ;; |
| darwin*|rhapsody*) |
| # PIC is the default on this platform |
| # Common symbols not allowed in MH_DYLIB files |
| PIC_FLAGS="-fno-common" |
| ;; |
| hpux*) |
| # PIC is the default for IA64 HP-UX and 64-bit HP-UX, |
| # but not for PA HP-UX. |
| case $host_cpu in |
| hppa*64*|ia64*) |
| ;; |
| *) |
| PIC_FLAGS="-fPIC" |
| ;; |
| esac |
| ;; |
| *) |
| # Everyone else on GCC uses -fPIC |
| PIC_FLAGS="-fPIC" |
| ;; |
| esac |
| else # !GCC |
| case "$host_os" in |
| hpux9*|hpux10*|hpux11*) |
| # PIC is the default for IA64 HP-UX and 64-bit HP-UX, |
| # but not for PA HP-UX. |
| case "$host_cpu" in |
| hppa*64*|ia64*) |
| # +Z the default |
| ;; |
| *) |
| PIC_FLAGS="+Z" |
| ;; |
| esac |
| ;; |
| linux*|k*bsd*-gnu) |
| case `basename "$CC"` in |
| icc*|ecc*|ifort*) |
| PIC_FLAGS="-KPIC" |
| ;; |
| pgcc*|pgf77*|pgf90*|pgf95*) |
| # Portland Group compilers (*not* the Pentium gcc |
| # compiler, which looks to be a dead project) |
| PIC_FLAGS="-fpic" |
| ;; |
| ccc*) |
| # All Alpha code is PIC. |
| ;; |
| xl*) |
| # IBM XL C 8.0/Fortran 10.1 on PPC |
| PIC_FLAGS="-qpic" |
| ;; |
| *) |
| case `$CC -V 2>&1 | sed 5q` in |
| *Sun\ C*|*Sun\ F*) |
| # Sun C 5.9 or Sun Fortran |
| PIC_FLAGS="-KPIC" |
| ;; |
| esac |
| esac |
| ;; |
| solaris*) |
| PIC_FLAGS="-KPIC" |
| ;; |
| sunos4*) |
| PIC_FLAGS="-PIC" |
| ;; |
| esac |
| fi # GCC |
| fi # PIC_FLAGS |
| AC_MSG_RESULT([$PIC_FLAGS]) |
| fi |
| AC_SUBST([PIC_FLAGS]) |
| ])# MESA_PIC_FLAGS |