* picflag.m4: New file.
authorRainer Orth <ro@TechFak.Uni-Bielefeld.DE>
Mon, 22 Aug 2011 17:51:24 +0000 (17:51 +0000)
committerRainer Orth <ro@TechFak.Uni-Bielefeld.DE>
Mon, 22 Aug 2011 17:51:24 +0000 (17:51 +0000)
config/ChangeLog
config/picflag.m4 [new file with mode: 0644]

index 3bb95f9825d8e414f3d315338775ebf0de3300b7..cd8a7ef286258601f03a7ca39c1aee3b16bf1291 100644 (file)
@@ -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 (file)
index 0000000..f6f1b44
--- /dev/null
@@ -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])])
This page took 0.029293 seconds and 4 git commands to generate.