diff options
author | Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | 2011-08-22 16:54:02 +0000 |
---|---|---|
committer | Rainer Orth <ro@gcc.gnu.org> | 2011-08-22 16:54:02 +0000 |
commit | e3aa9ebaf76b9076897762e8ec28e7542338c3f9 (patch) | |
tree | 9d2d55b0c248cd5196e2b1e53daa710fc4f00e33 /config | |
parent | eb3e9f604784afbcd4fd641ad913e92b25effd0b (diff) | |
download | gcc-e3aa9ebaf76b9076897762e8ec28e7542338c3f9.zip gcc-e3aa9ebaf76b9076897762e8ec28e7542338c3f9.tar.gz gcc-e3aa9ebaf76b9076897762e8ec28e7542338c3f9.tar.bz2 |
Centralize PICFLAG configuration
config:
* picflag.m4: New file.
gcc:
* configure.ac (GCC_PICFLAG_FOR_TARGET): Call it.
(PICFLAG_FOR_TARGET): Substitute.
* aclocal.m4: Regenerate.
* configure: Regenerate.
gcc/ada:
* gcc-interface/Makefile.in (PICFLAG_FOR_TARGET): New.
(GNATLIBCFLAGS_FOR_C): Replace
TARGET_LIBGCC2_CFLAGS by PICFLAG_FOR_TARGET.
(gnatlib-shared-default, gnatlib-shared-dual-win32)
(gnatlib-shared-win32, gnatlib-shared-darwin, gnatlib-shared)
(gnatlib-sjlj, gnatlib-zcx): Likewise.
libada:
* configure.ac: Include ../config/picflag.m4.
(GCC_PICFLAG): Call it.
Substitute.
* configure: Regenerate.
* Makefile.in (TARGET_LIBGCC2_CFLAGS): Replace by PICFLAG.
(GNATLIBCFLAGS_FOR_C): Replace TARGET_LIBGCC2_CFLAGS by PICFLAG.
(LIBADA_FLAGS_TO_PASS): Pass PICFLAG as PICFLAG_FOR_TARGET.
Don't include $(GCC_DIR)/libgcc.mvars.
libiberty:
* aclocal.m4: Include ../config/picflag.m4.
* configure.ac (GCC_PICFLAG): Call it.
(enable_shared): Clear PICFLAG unless shared.
* configure: Regenerate.
From-SVN: r177967
Diffstat (limited to 'config')
-rw-r--r-- | config/ChangeLog | 4 | ||||
-rw-r--r-- | config/picflag.m4 | 95 |
2 files changed, 99 insertions, 0 deletions
diff --git a/config/ChangeLog b/config/ChangeLog index 90f5238..047cdf5 100644 --- a/config/ChangeLog +++ b/config/ChangeLog @@ -1,3 +1,7 @@ +2011-08-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * picflag.m4: New file. + 2011-07-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * elf.m4 (target_elf): Remove *-netware*. diff --git a/config/picflag.m4 b/config/picflag.m4 new file mode 100644 index 0000000..f6f1b44 --- /dev/null +++ b/config/picflag.m4 @@ -0,0 +1,95 @@ +# _GCC_PICFLAG(FLAG, DISPATCH) +# ---------------------------- +# Store PIC flag corresponding to DISPATCH triplet in FLAG. +# Explit use of -fpic in CFLAGS corresponding to FLAG overrides default. +AC_DEFUN([_GCC_PICFLAG], [ + +case "${$2}" in + # PIC is the default on some targets or must not be used. + *-*-darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + $1=-fno-common + ;; + alpha*-dec-osf5*) + # PIC is the default. + ;; + hppa*64*-*-hpux*) + # PIC is the default for 64-bit PA HP-UX. + ;; + i[[34567]]86-*-cygwin* | i[[34567]]86-*-mingw* | x86_64-*-mingw*) + ;; + i[[34567]]86-*-interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + i[[34567]]86-*-nto-qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + $1='-fPIC -shared' + ;; + i[[34567]]86-pc-msdosdjgpp*) + # DJGPP does not support shared libraries at all. + ;; + ia64*-*-hpux*) + # On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + $1=-fPIC + ;; + mips-sgi-irix6*) + # PIC is the default. + ;; + rs6000-ibm-aix* | powerpc-ibm-aix*) + # All AIX code is PIC. + ;; + + # Some targets support both -fPIC and -fpic, but prefer the latter. + # FIXME: Why? + i[[34567]]86-*-* | x86_64-*-*) + $1=-fpic + ;; + m68k-*-*) + $1=-fpic + ;; + s390*-*-*) + $1=-fpic + ;; + # FIXME: Override -fPIC default in libgcc only? + sh-*-linux* | sh[[2346lbe]]*-*-linux*) + $1=-fpic + ;; + # FIXME: Simplify to sh*-*-netbsd*? + sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \ + sh64-*-netbsd* | sh64l*-*-netbsd*) + $1=-fpic + ;; + # Default to -fPIC unless specified otherwise. + *) + $1=-fPIC + ;; +esac + +# If the user explicitly uses -fpic/-fPIC, keep that. +case "${m4_bpatsubsts($1, PICFLAG, CFLAGS)}" in + *-fpic*) + $1=-fpic + ;; + *-fPIC*) + $1=-fPIC + ;; +esac +]) + +# GCC_PICFLAG +# ----------- +# Store host PIC flag in PICFLAG. +AC_DEFUN([GCC_PICFLAG], [ + AC_REQUIRE([AC_CANONICAL_HOST]) + _GCC_PICFLAG([PICFLAG], [host])]) + +# GCC_PICFLAG_FOR_TARGET +# ---------------------- +# Store target PIC flag in PICFLAG_FOR_TARGET. +AC_DEFUN([GCC_PICFLAG_FOR_TARGET], [ + AC_REQUIRE([AC_CANONICAL_TARGET]) + _GCC_PICFLAG([PICFLAG_FOR_TARGET], [target])]) |