summaryrefslogtreecommitdiff
path: root/source3/lib/replace/libreplace_ld.m4
blob: 79367ba9dbc6a5dfd1858abb271b919e7b3e866b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
AC_DEFUN([AC_LD_EXPORT_DYNAMIC],
[
saved_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
AC_LINK_IFELSE([ int main() { return 0; } ],
[ LD_EXPORT_DYNAMIC=-Wl,--export-dynamic  ],
[ LD_EXPORT_DYNAMIC= ])
AC_SUBST(LD_EXPORT_DYNAMIC)
LDFLAGS="$saved_LDFLAGS"
])

AC_DEFUN([AC_LD_PICFLAG],
[
case "$host_os" in
	*linux*) 
		PICFLAG="-fPIC" 
		;;
	*solaris*)
		if test "${GCC}" = "yes"; then
			PICFLAG="-fPIC"
		else
			PICFLAG="-KPIC"
		fi
		;;
	*sunos*)
		PICFLAG="-KPIC"   # Is this correct for SunOS
		;;
	*netbsd* | *freebsd* | *dragonfly* )  
		PICFLAG="-fPIC -DPIC"
		;;
	*openbsd*)
		PICFLAG="-fPIC"
		;;
	*irix*)
		if test "${GCC}" = "yes"; then
			PICFLAG="-fPIC"
		else 
			PICFLAG="-KPIC"
		fi
		;;
	*aix*)
		# as AIX code is always position independent...
		PICFLAG="-O2"
		;;
	*hpux*)
		if test $ac_cv_prog_cc_Ae = yes; then
			PICFLAG="+z +ESnolit"
		elif test "${GCC}" = "yes"; then
			PICFLAG="-fPIC"
		fi
		if test "$host_cpu" = "ia64"; then
			PICFLAG="+z"
		fi
		;;
	*osf*)
		PICFLAG="-fPIC"
		;;
	*unixware*)
		PICFLAG="-KPIC"
		;;
	*darwin*)
		;;
esac
AC_SUBST(PICFLAG)
])

AC_DEFUN([AC_LD_SHLDFLAGS],
[
	SHLD_FLAGS="-shared"

	case "$host_os" in
		*linux*)
			SHLD_FLAGS="-shared -Wl,-Bsymbolic"
			;;
		*solaris*)
			SHLD_FLAGS="-G"
			if test "${GCC}" = "no"; then
				## ${CFLAGS} added for building 64-bit shared 
				## libs using Sun's Compiler
				SHLD_FLAGS="-G \${CFLAGS}"
			fi
			;;
		*sunos*)
			SHLD_FLAGS="-G"
			;;
		*irix*)
			SHLD_FLAGS="-shared"
			;;
		*aix*)
			SHLD_FLAGS="-Wl,-G,-bexpall,-bbigtoc"
			;;
		*hpux*)
			if test $ac_cv_prog_cc_Ae = yes; then
				SHLD_FLAGS="-b -Wl,-B,symbolic,-b,-z"
			fi
			;;
		*darwin*)
			SHLD_FLAGS="-bundle -flat_namespace -undefined suppress"
			;;
	esac

	AC_SUBST(SHLD_FLAGS)
])

AC_DEFUN([AC_LD_SHLIBEXT],
[
	SHLIBEXT="so"
	case "$host_os" in
		*hpux*)
			if test "$host_cpu" = "ia64"; then
				SHLIBEXT="so"
			else
				SHLIBEXT="sl"
			fi
		;;
		*darwin*)
			SHLIBEXT="dylib"
		;;
	esac
	AC_SUBST(SHLIBEXT)
])