On Mon, May 5, 2008 at 8:05 PM, Dan Nicholson <[EMAIL PROTECTED]> wrote:
> This commit adds an autoconf macro, MESA_PIC_FLAGS, which sets the
> PIC flags according to platform and static/shared setting. The platform
> specifics are taken straight from libtool.m4 and stripped down to just
> the flags and platforms we cover in Mesa. This should hopefully make it
> possible to use autoconf on non-GCC platforms.
>
> The macro is added external to configure.ac in acinclude.m4 since it's
> pretty bloated.
>
> Note to BSDers: Previously, x86 defaulted to non-PIC on FreeBSD. I
> didn't carry that preference into this macro. Instead, you can just use
> --disable-pic where desired.

I pushed this, with a small addition so that acinclude.m4 is
distributed in the tarballs.

> ---
>  acinclude.m4 |  119 
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  configure.ac |   18 +-------
>  2 files changed, 122 insertions(+), 15 deletions(-)
>  create mode 100644 acinclude.m4
>
> diff --git a/acinclude.m4 b/acinclude.m4
> new file mode 100644
> index 0000000..a5b389d
> --- /dev/null
> +++ b/acinclude.m4
> @@ -0,0 +1,119 @@
> +# 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
> diff --git a/configure.ac b/configure.ac
> index b0f17f9..aaae7df 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -879,21 +879,9 @@ AC_SUBST([ASM_FLAGS])
>  AC_SUBST([ASM_SOURCES])
>  AC_SUBST([ASM_API])
>
> -PIC_FLAGS=""
> -case "$host_os" in
> -linux*)
> -    PIC_FLAGS="-fPIC"
> -    ;;
> -freebsd* | dragonfly*)
> -    PIC_FLAGS="-fPIC"
> -    case "$host_cpu" in
> -    i?86)
> -        PIC_FLAGS=""
> -        ;;
> -    esac
> -    ;;
> -esac
> -AC_SUBST([PIC_FLAGS])
> +dnl PIC code macro
> +MESA_PIC_FLAGS
> +
>
>  dnl Restore LDFLAGS and CPPFLAGS
>  LDFLAGS="$_SAVE_LDFLAGS"
> --
> 1.5.3.2
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
> Don't miss this year's exciting event. There's still time to save $100.
> Use priority code J8TL2D2.
> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
> _______________________________________________
> Mesa3d-dev mailing list
> Mesa3d-dev@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mesa3d-dev
>

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to