xref: /netbsd-src/external/gpl3/binutils.old/dist/config/picflag.m4 (revision 04028aa9310ca9c619eca5cf58ddf1e58624d1d7)
1# _GCC_PICFLAG(FLAG, DISPATCH)
2# ----------------------------
3# Store PIC flag corresponding to DISPATCH triplet in FLAG.
4# Explit use of -fpic in CFLAGS corresponding to FLAG overrides default.
5AC_DEFUN([_GCC_PICFLAG], [
6
7case "${$2}" in
8    # PIC is the default on some targets or must not be used.
9    *-*-darwin*)
10	# PIC is the default on this platform
11	# Common symbols not allowed in MH_DYLIB files
12	$1=-fno-common
13	;;
14    alpha*-dec-osf5*)
15	# PIC is the default.
16	;;
17    hppa*64*-*-hpux*)
18	# PIC is the default for 64-bit PA HP-UX.
19	;;
20    i[[34567]]86-*-cygwin* | i[[34567]]86-*-mingw* | x86_64-*-mingw*)
21	;;
22    i[[34567]]86-*-interix[[3-9]]*)
23	# Interix 3.x gcc -fpic/-fPIC options generate broken code.
24	# Instead, we relocate shared libraries at runtime.
25	;;
26    i[[34567]]86-*-nto-qnx*)
27	# QNX uses GNU C++, but need to define -shared option too, otherwise
28	# it will coredump.
29	$1='-fPIC -shared'
30	;;
31    i[[34567]]86-pc-msdosdjgpp*)
32	# DJGPP does not support shared libraries at all.
33	;;
34    ia64*-*-hpux*)
35	# On IA64 HP-UX, PIC is the default but the pic flag
36	# sets the default TLS model and affects inlining.
37	$1=-fPIC
38	;;
39    mips-sgi-irix6*)
40	# PIC is the default.
41	;;
42    rs6000-ibm-aix* | powerpc-ibm-aix*)
43	# All AIX code is PIC.
44	;;
45
46    # Some targets support both -fPIC and -fpic, but prefer the latter.
47    # FIXME: Why?
48    i[[34567]]86-*-* | x86_64-*-*)
49	$1=-fpic
50	;;
51    m68k-*-*)
52	$1=-fpic
53	;;
54    # FIXME: Override -fPIC default in libgcc only?
55    sh-*-linux* | sh[[2346lbe]]*-*-linux*)
56	$1=-fpic
57	;;
58    # FIXME: Simplify to sh*-*-netbsd*?
59    sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
60      sh64-*-netbsd* | sh64l*-*-netbsd*)
61	$1=-fpic
62	;;
63    # Default to -fPIC unless specified otherwise.
64    *)
65	$1=-fPIC
66	;;
67esac
68
69# If the user explicitly uses -fpic/-fPIC, keep that.
70case "${m4_bpatsubsts($1, PICFLAG, CFLAGS)}" in
71    *-fpic*)
72	$1=-fpic
73	;;
74    *-fPIC*)
75	$1=-fPIC
76	;;
77esac
78])
79
80# GCC_PICFLAG
81# -----------
82# Store host PIC flag in PICFLAG.
83AC_DEFUN([GCC_PICFLAG], [
84  AC_REQUIRE([AC_CANONICAL_HOST])
85  _GCC_PICFLAG([PICFLAG], [host])])
86
87# GCC_PICFLAG_FOR_TARGET
88# ----------------------
89# Store target PIC flag in PICFLAG_FOR_TARGET.
90AC_DEFUN([GCC_PICFLAG_FOR_TARGET], [
91  AC_REQUIRE([AC_CANONICAL_TARGET])
92  _GCC_PICFLAG([PICFLAG_FOR_TARGET], [target])])
93