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# 15AC_DEFUN([MESA_PIC_FLAGS], 16[AC_REQUIRE([AC_PROG_CC])dnl 17AC_ARG_VAR([PIC_FLAGS], [compiler flags for PIC code]) 18AC_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 26if test "$enable_pic" = auto && test "$enable_static" = yes; then 27 enable_pic=no 28fi 29# if PIC hasn't been explicitly disabled, try to figure out the flags 30if 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]) 117fi 118AC_SUBST([PIC_FLAGS]) 119])# MESA_PIC_FLAGS 120