~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to lib/replace/libreplace_ld.m4

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# This offers a nice overview how to build shared libraries on all platforms
 
3
#        http://www.fortran-2000.com/ArnaudRecipes/sharedlib.html
 
4
#
 
5
 
 
6
AC_DEFUN([AC_LIBREPLACE_STLD],
 
7
[
 
8
        AC_PATH_PROG(PROG_AR, ar)
 
9
 
 
10
        STLD=${PROG_AR}
 
11
 
 
12
        AC_SUBST(STLD)
 
13
])
 
14
 
 
15
AC_DEFUN([AC_LIBREPLACE_STLD_FLAGS],
 
16
[
 
17
        STLD_FLAGS="-rcs"
 
18
        AC_SUBST(STLD_FLAGS)
 
19
])
 
20
 
 
21
AC_DEFUN([AC_LD_EXPORT_DYNAMIC],
 
22
[
 
23
saved_LDFLAGS="$LDFLAGS"
 
24
if AC_TRY_COMMAND([${CC-cc} $CFLAGS -Wl,--version 2>&1 | grep "GNU ld" >/dev/null]); then
 
25
        LD_EXPORT_DYNAMIC="-Wl,-export-dynamic"
 
26
else
 
27
        case "$host_os" in
 
28
                hpux* )
 
29
                  LD_EXPORT_DYNAMIC="-Wl,-E"
 
30
                  ;;
 
31
                *)
 
32
                  LD_EXPORT_DYNAMIC=""
 
33
                  ;;
 
34
          esac
 
35
fi
 
36
AC_SUBST(LD_EXPORT_DYNAMIC)
 
37
LDFLAGS="$saved_LDFLAGS"
 
38
])
 
39
 
 
40
AC_DEFUN([AC_LD_PICFLAG],
 
41
[
 
42
case "$host_os" in
 
43
        *linux*) 
 
44
                PICFLAG="-fPIC" 
 
45
                ;;
 
46
        *solaris*)
 
47
                if test "${GCC}" = "yes"; then
 
48
                        PICFLAG="-fPIC"
 
49
                else
 
50
                        PICFLAG="-KPIC"
 
51
                fi
 
52
                ;;
 
53
        *sunos*)
 
54
                PICFLAG="-KPIC"   # Is this correct for SunOS
 
55
                ;;
 
56
        *netbsd* | *freebsd* | *dragonfly* )  
 
57
                PICFLAG="-fPIC -DPIC"
 
58
                ;;
 
59
        *openbsd*)
 
60
                PICFLAG="-fPIC"
 
61
                ;;
 
62
        *irix*)
 
63
                if test "${GCC}" = "yes"; then
 
64
                        PICFLAG="-fPIC"
 
65
                else 
 
66
                        PICFLAG="-KPIC"
 
67
                fi
 
68
                ;;
 
69
        *aix*)
 
70
                # as AIX code is always position independent...
 
71
                PICFLAG="-O2"
 
72
                ;;
 
73
        *hpux*)
 
74
                if test $ac_cv_prog_cc_Ae = yes; then
 
75
                        PICFLAG="+z +ESnolit"
 
76
                elif test "${GCC}" = "yes"; then
 
77
                        PICFLAG="-fPIC"
 
78
                fi
 
79
                if test "$host_cpu" = "ia64"; then
 
80
                        PICFLAG="+z"
 
81
                fi
 
82
                ;;
 
83
        *osf*)
 
84
                PICFLAG="-fPIC"
 
85
                ;;
 
86
        *unixware*)
 
87
                PICFLAG="-KPIC"
 
88
                ;;
 
89
        *darwin*)
 
90
                PICFLAG="-fno-common"
 
91
                ;;
 
92
esac
 
93
AC_SUBST(PICFLAG)
 
94
])
 
95
 
 
96
AC_DEFUN([AC_LIBREPLACE_LD_SHLIB_LINKER],
 
97
[
 
98
        LD_SHLIB_LINKER="${CC}"
 
99
 
 
100
        case "$host_os" in
 
101
                *irix*)
 
102
                        LD_SHLIB_LINKER="${PROG_LD}"
 
103
                        ;;
 
104
        esac
 
105
 
 
106
        AC_SUBST(LD_SHLIB_LINKER)
 
107
])
 
108
 
 
109
AC_DEFUN([AC_LIBREPLACE_LD_SHLIB_FLAGS],
 
110
[
 
111
        LD_SHLIB_FLAGS="-shared"
 
112
 
 
113
        case "$host_os" in
 
114
                *linux*)
 
115
                        LD_SHLIB_FLAGS="-shared -Wl,-Bsymbolic"
 
116
                        ;;
 
117
                *solaris*)
 
118
                        LD_SHLIB_FLAGS="-G"
 
119
                        if test "${GCC}" = "no"; then
 
120
                                ## ${CFLAGS} added for building 64-bit shared 
 
121
                                ## libs using Sun's Compiler
 
122
                                LD_SHLIB_FLAGS="-G \${CFLAGS}"
 
123
                        fi
 
124
                        ;;
 
125
                *sunos*)
 
126
                        LD_SHLIB_FLAGS="-G"
 
127
                        ;;
 
128
                *irix*)
 
129
                        LD_SHLIB_FLAGS="-shared"
 
130
                        ;;
 
131
                *aix*)
 
132
                        LD_SHLIB_FLAGS="-Wl,-G,-bexpall,-bbigtoc"
 
133
                        ;;
 
134
                *hpux*)
 
135
                        if test "${GCC}" = "yes"; then
 
136
                                LD_SHLIB_FLAGS="-shared"
 
137
                        else
 
138
                                LD_SHLIB_FLAGS="-b"
 
139
                        fi
 
140
                        ;;
 
141
                *osf*)
 
142
                        LD_SHLIB_FLAGS="-shared"
 
143
                        ;;
 
144
                *darwin*)
 
145
                        LD_SHLIB_FLAGS="-dynamiclib -Wl,-search_paths_first"
 
146
                        ;;
 
147
        esac
 
148
 
 
149
        AC_SUBST(LD_SHLIB_FLAGS)
 
150
])
 
151
 
 
152
AC_DEFUN([AC_LIBREPLACE_LD_SHLIB_DISALLOW_UNDEF_FLAG],
 
153
[
 
154
        LD_SHLIB_DISALLOW_UNDEF_FLAG=""
 
155
 
 
156
        #
 
157
        # TODO: enforce error not only warnings
 
158
        #
 
159
        # NOTE: -Wl,--no-allow-shlib-undefined isn't what we want...
 
160
        #       as it bails out on broken system libraries
 
161
        #
 
162
        case "$host_os" in
 
163
                *osf*)
 
164
                        LD_SHLIB_DISALLOW_UNDEF_FLAG="-warning_unresolved"
 
165
                        ;;
 
166
                *darwin*)
 
167
                        LD_SHLIB_DISALLOW_UNDEF_FLAG="-undefined error"
 
168
                        ;;
 
169
        esac
 
170
 
 
171
        AC_SUBST(LD_SHLIB_DISALLOW_UNDEF_FLAG)
 
172
])
 
173
 
 
174
AC_DEFUN([AC_LIBREPLACE_SHLD],
 
175
[
 
176
        AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_LINKER])
 
177
        SHLD="$LD_SHLIB_LINKER"
 
178
        AC_SUBST(SHLD)
 
179
])
 
180
 
 
181
AC_DEFUN([AC_LIBREPLACE_SHLD_FLAGS],
 
182
[
 
183
        AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_FLAGS])
 
184
        AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_DISALLOW_UNDEF_FLAG])
 
185
        SHLD_FLAGS="$LD_SHLIB_FLAGS $LD_SHLIB_DISALLOW_UNDEF_FLAG"
 
186
        AC_SUBST(SHLD_FLAGS)
 
187
])
 
188
 
 
189
AC_DEFUN([AC_LD_SHLIBEXT],
 
190
[
 
191
        SHLIBEXT="so"
 
192
        case "$host_os" in
 
193
                *hpux*)
 
194
                        if test "$host_cpu" = "ia64"; then
 
195
                                SHLIBEXT="so"
 
196
                        else
 
197
                                SHLIBEXT="sl"
 
198
                        fi
 
199
                ;;
 
200
                *darwin*)
 
201
                        SHLIBEXT="dylib"
 
202
                ;;
 
203
        esac
 
204
        AC_SUBST(SHLIBEXT)
 
205
])
 
206
 
 
207
AC_DEFUN([AC_LD_SONAMEFLAG],
 
208
[
 
209
        AC_SUBST(SONAMEFLAG)
 
210
        SONAMEFLAG=""
 
211
        case "$host_os" in 
 
212
                *linux*)
 
213
                        SONAMEFLAG="-Wl,-soname="
 
214
                        ;;
 
215
                *solaris*)
 
216
                        SONAMEFLAG="-h "
 
217
                        if test "${GCC}" = "yes"; then
 
218
                                SONAMEFLAG="-Wl,-soname="
 
219
                        fi
 
220
                        ;;
 
221
                *sunos*)
 
222
                        SONAMEFLAG="-Wl,-h,"
 
223
                        ;;
 
224
                *netbsd* | *freebsd* | *dragonfly* )
 
225
                        SONAMEFLAG="-Wl,-soname,"
 
226
                        ;;
 
227
                *openbsd*)
 
228
                        SONAMEFLAG="-Wl,-soname,"
 
229
                        ;;
 
230
                *irix*)
 
231
                        SONAMEFLAG="-Wl,-soname,"
 
232
                        ;;
 
233
                *hpux*)
 
234
                        SONAMEFLAG="-Wl,+h,"
 
235
                        ;;
 
236
                *osf*)
 
237
                        SONAMEFLAG="-Wl,-soname,"
 
238
                        ;;
 
239
                *unixware*)
 
240
                        SONAMEFLAG="-Wl,-soname,"
 
241
                        ;;
 
242
                *darwin*)
 
243
                        SONAMEFLAG="#"
 
244
                        ;;
 
245
                *aix*)
 
246
                        # Not supported
 
247
                        SONAMEFLAG="#"
 
248
                        ;;
 
249
                esac
 
250
])
 
251
 
 
252
AC_DEFUN([AC_LIBREPLACE_MDLD],
 
253
[
 
254
        AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_LINKER])
 
255
        MDLD="$LD_SHLIB_LINKER"
 
256
        AC_SUBST(MDLD)
 
257
])
 
258
 
 
259
AC_DEFUN([AC_LIBREPLACE_LD_SHLIB_ALLOW_UNDEF_FLAG],
 
260
[
 
261
        LD_ALLOW_SHLIB_UNDEF_FLAG=""
 
262
 
 
263
        case "$host_os" in
 
264
                *linux*)
 
265
                        LD_SHLIB_ALLOW_UNDEF_FLAG="-Wl,--allow-shlib-undefined"
 
266
                        ;;
 
267
                *osf*)
 
268
                        LD_SHLIB_ALLOW_UNDEF_FLAG="-Wl,-expect_unresolved,\"*\""
 
269
                        ;;
 
270
                *darwin*)
 
271
                        LD_SHLIB_ALLOW_UNDEF_FLAG="-undefined dynamic_lookup"
 
272
                        ;;
 
273
                *aix*)
 
274
                        LD_SHLIB_ALLOW_UNDEF_FLAG="-Wl,-bnoentry"
 
275
                        ;;
 
276
        esac
 
277
 
 
278
        AC_SUBST(LD_SHLIB_ALLOW_UNDEF_FLAG)
 
279
])
 
280
 
 
281
AC_DEFUN([AC_LIBREPLACE_MDLD_FLAGS],
 
282
[
 
283
        AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_FLAGS])
 
284
        AC_REQUIRE([AC_LIBREPLACE_LD_SHLIB_ALLOW_UNDEF_FLAG])
 
285
        MDLD_FLAGS="$LD_SHLIB_FLAGS $LD_SHLIB_ALLOW_UNDEF_FLAG"
 
286
        AC_SUBST(MDLD_FLAGS)
 
287
])
 
288
 
 
289
AC_DEFUN([AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR],
 
290
[
 
291
        case "$host_os" in
 
292
                *linux*)
 
293
                        LIB_PATH_VAR=LD_LIBRARY_PATH
 
294
                ;;
 
295
                *bsd*)
 
296
                        LIB_PATH_VAR=LD_LIBRARY_PATH
 
297
                ;;
 
298
                *solaris*)
 
299
                        LIB_PATH_VAR=LD_LIBRARY_PATH
 
300
                ;;
 
301
                *hpux*)
 
302
                        LIB_PATH_VAR=SHLIB_PATH
 
303
                ;;
 
304
                *osf*)
 
305
                        LIB_PATH_VAR=LD_LIBRARY_PATH
 
306
                ;;
 
307
                *aix*)
 
308
                        LIB_PATH_VAR=LIB_PATH
 
309
                        ;;
 
310
                *irix*)
 
311
                        LIB_PATH_VAR=LD_LIBRARY_PATH
 
312
                        ;;
 
313
                *darwin*)
 
314
                        LIB_PATH_VAR=DYLD_LIBRARY_PATH
 
315
                        ;;
 
316
        esac
 
317
 
 
318
        AC_SUBST(LIB_PATH_VAR)
 
319
])