120 lines
4.1 KiB
Plaintext
120 lines
4.1 KiB
Plaintext
# 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],
|
|
[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
|