r18262: fix typos
[nivanova/samba-autobuild/.git] / source4 / build / m4 / check_ld.m4
1 dnl SMB Build Environment LD Checks
2 dnl -------------------------------------------------------
3 dnl  Copyright (C) Stefan (metze) Metzmacher 2004
4 dnl  Copyright (C) Jelmer Vernooij 2006
5 dnl  Released under the GNU GPL
6 dnl -------------------------------------------------------
7 dnl
8
9 AC_PATH_PROG(PROG_LD,ld)
10 AC_PROG_LD_GNU
11 AC_PATH_PROG(PROG_AR, ar)
12
13 AC_SUBST(STLD)
14 AC_SUBST(STLD_FLAGS)
15 AC_SUBST(BLDSHARED)
16 AC_SUBST(LD)
17 AC_SUBST(LDFLAGS)
18 AC_SUBST(SHLD)
19 AC_SUBST(SHLD_FLAGS)
20 AC_SUBST(SHLIBEXT)
21 AC_SUBST(SONAMEFLAG)
22 AC_SUBST(PICFLAG)
23
24 # Assume non-shared by default and override below
25 # these are the defaults, good for lots of systems
26 STLD=${PROG_AR}
27 STLD_FLAGS="-rcs"
28 BLDSHARED="false"
29 LD="${CC}"
30 LDFLAGS=""
31 SHLD="${CC}"
32 SHLD_FLAGS="-shared"
33 SHLIBEXT="so"
34 SONAMEFLAG=""
35 PICFLAG=""
36
37 AC_MSG_CHECKING([ability to build shared libraries])
38
39 # and these are for particular systems
40 case "$host_os" in
41         *linux*)
42                 BLDSHARED="true"
43                 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
44                         SHLD_FLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined" 
45                 else
46                         SHLD_FLAGS="-shared -Wl,-Bsymbolic" 
47                 fi
48                 LDFLAGS="-Wl,--export-dynamic"
49                 PICFLAG="-fPIC"
50                 SONAMEFLAG="-Wl,-soname="
51                 ;;
52         *solaris*)
53                 BLDSHARED="true"
54                 SHLD_FLAGS="-G"
55                 SONAMEFLAG="-h "
56                 if test "${GCC}" = "yes"; then
57                         PICFLAG="-fPIC"
58                         SONAMEFLAG="-Wl,-soname="
59                         if test "${ac_cv_prog_gnu_ld}" = "yes"; then
60                                 LDFLAGS="-Wl,-E"
61                         fi
62                 else
63                         PICFLAG="-KPIC"
64                         ## ${CFLAGS} added for building 64-bit shared 
65                         ## libs using Sun's Compiler
66                         SHLD_FLAGS="-G \${CFLAGS}"
67                 fi
68                 ;;
69         *sunos*)
70                 BLDSHARED="true"
71                 SHLD_FLAGS="-G"
72                 SONAMEFLAG="-Wl,-h,"
73                 PICFLAG="-KPIC"   # Is this correct for SunOS
74                 ;;
75         *netbsd* | *freebsd* | *dragonfly* )  
76                 BLDSHARED="true"
77                 LDFLAGS="-Wl,--export-dynamic"
78                 SONAMEFLAG="-Wl,-soname,"
79                 PICFLAG="-fPIC -DPIC"
80                 ;;
81         *openbsd*)
82                 BLDSHARED="true"
83                 LDFLAGS="-Wl,-Bdynamic"
84                 SONAMEFLAG="-Wl,-soname,"
85                 PICFLAG="-fPIC"
86                 ;;
87         *irix*)
88                 BLDSHARED="true"
89                 SHLD_FLAGS="-set_version sgi1.0 -shared"
90                 SONAMEFLAG="-soname "
91                 SHLD="${PROG_LD}"
92                 if test "${GCC}" = "yes"; then
93                         PICFLAG="-fPIC"
94                 else 
95                         PICFLAG="-KPIC"
96                 fi
97                 ;;
98         *aix*)
99                 BLDSHARED="true"
100                 SHLD_FLAGS="-Wl,-G,-bexpall"
101                 LDFLAGS="-Wl,-brtl,-bexpall,-bbigtoc"
102                 # as AIX code is always position independent...
103                 PICFLAG="-O2"
104                 ;;
105         *hpux*)
106                 # Use special PIC flags for the native HP-UX compiler.
107                 if test $ac_cv_prog_cc_Ae = yes; then
108                         BLDSHARED="true"
109                         SHLD_FLAGS="-b -Wl,-B,symbolic,-b,-z"
110                         SONAMEFLAG="-Wl,+h "
111                         PICFLAG="+z"
112                 elif test "${GCC}" = "yes"; then
113                         BLDSHARED="true" # I hope this is correct
114                         PICFLAG="-fPIC"
115                 fi
116                 if test "$host_cpu" = "ia64"; then
117                         SHLIBEXT="so"
118                         LDFLAGS="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
119                 else
120                         SHLIBEXT="sl"
121                         LDFLAGS="-Wl,-E,+b/usr/local/lib:/usr/lib"
122                 fi
123                 ;;
124         *osf*)
125                 BLDSHARED="true"
126                 SONAMEFLAG="-Wl,-soname,"
127                 PICFLAG="-fPIC"
128                 ;;
129         *unixware*)
130                 BLDSHARED="true"
131                 SONAMEFLAG="-Wl,-soname,"
132                 PICFLAG="-KPIC"
133                 ;;
134         *darwin*)
135                 BLDSHARED="true"
136                 SHLD_FLAGS="-bundle -flat_namespace -undefined suppress"
137                 SHLIBEXT="dylib"
138                 ;;
139 esac
140
141 AC_MSG_RESULT($BLDSHARED)
142
143 AC_MSG_CHECKING([LD])
144 AC_MSG_RESULT([$LD])
145 AC_MSG_CHECKING([LDFLAGS])
146 AC_MSG_RESULT([$LDFLAGS])
147
148 AC_MSG_CHECKING([STLD])
149 AC_MSG_RESULT([$STLD])
150 AC_MSG_CHECKING([STLD_FLAGS])
151 AC_MSG_RESULT([$STLD_FLAGS])
152
153 #######################################################
154 # test whether building a shared library actually works
155 if test $BLDSHARED = true; then
156
157 AC_MSG_CHECKING([SHLD])
158 AC_MSG_RESULT([$SHLD])
159 AC_MSG_CHECKING([SHLD_FLAGS])
160 AC_MSG_RESULT([$SHLD_FLAGS])
161
162 AC_MSG_CHECKING([SHLIBEXT])
163 AC_MSG_RESULT([$SHLIBEXT])
164 AC_MSG_CHECKING([SONAMEFLAG])
165 AC_MSG_RESULT([$SONAMEFLAG])
166
167 AC_MSG_CHECKING([PICFLAG])
168 AC_MSG_RESULT([$PICFLAG])
169
170 AC_CACHE_CHECK([whether building shared libraries actually works], 
171                [ac_cv_shlib_works],[
172    ac_cv_shlib_works=no
173    # try building a trivial shared library
174    ${CC} ${CFLAGS} ${PICFLAG} -c ${srcdir-.}/build/tests/shlib.c -o shlib.o &&
175        ${SHLD} `eval echo ${SHLD_FLAGS} ` -o shlib.${SHLIBEXT} shlib.o &&
176        ac_cv_shlib_works=yes
177    rm -f shlib.${SHLIBEXT} shlib.o
178 ])
179 if test $ac_cv_shlib_works = no; then
180    BLDSHARED=false
181 fi
182 fi
183
184 AC_ARG_ENABLE(dso,
185 [  --enable-dso                 Enable building internal libraries as DSO's (experimental)],
186 [ if test x$enable_dso != xyes; then
187         BLDSHARED=false
188   fi], 
189 [BLDSHARED=false])