| 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 |