s4-waf: another place where broken ln -f on solaris8 matters
[samba.git] / source4 / heimdal_build / internal.m4
1 m4_define([upcase],`echo $1 | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`)dnl
2
3 m4_ifndef([AC_WARNING_ENABLE],[AC_DEFUN([AC_WARNING_ENABLE],[])])
4
5 dnl love_FIND_FUNC(func, includes, arguments)
6 dnl kind of like AC_CHECK_FUNC, but with headerfiles
7 AC_DEFUN([love_FIND_FUNC], [
8
9 AC_MSG_CHECKING([for $1])
10 AC_CACHE_VAL(ac_cv_love_func_$1,
11 [
12 AC_LINK_IFELSE([AC_LANG_PROGRAM([[$2]],[[$1($3)]])],
13 [eval "ac_cv_love_func_$1=yes"],[eval "ac_cv_love_func_$1=no"])])
14
15 eval "ac_res=\$ac_cv_love_func_$1"
16
17 if false; then
18         AC_CHECK_FUNCS($1)
19 fi
20 # $1
21 eval "ac_tr_func=HAVE_[]upcase($1)"
22
23 case "$ac_res" in
24         yes)
25         AC_DEFINE_UNQUOTED($ac_tr_func)
26         AC_MSG_RESULT([yes])
27         ;;
28         no)
29         AC_MSG_RESULT([no])
30         ;;
31 esac
32
33
34 ])
35
36 AC_CHECK_TYPE(u_char, uint8_t)
37 AC_CHECK_TYPE(u_int32_t, uint32_t)
38
39 dnl Not all systems have err.h, so we provide a replacement. Heimdal
40 dnl unconditionally #includes <err.h>, so we need to create an err.h,
41 dnl but we can't just have a static one because we don't want to use
42 dnl it on systems that have a real err.h. If the system has a real
43 dnl err.h, we should use that (eg. on Darwin, the declarations get
44 dnl linker attributes added, so we can't guarantee that our local
45 dnl declarations will be correct). Phew!
46 AC_CHECK_HEADERS([err.h], [],
47         [ cp heimdal/lib/roken/err.hin heimdal_build/err.h ])
48
49 dnl Not all systems have ifaddrs.h, so we provide a replacement. Heimdal
50 dnl unconditionally #includes <ifaddrs.h>, so we need to create an ifaddrs.h,
51 dnl but we can't just have a static one because we don't want to use
52 dnl it on systems that have a real ifaddrs.h. If the system has a real
53 dnl ifaddrs.h. We don't use heimdal's lib/roken/ifaddrs.hin because
54 dnl our libreplace would conflict with it.
55 AC_CHECK_HEADERS([ifaddrs.h], [],
56         [ cp heimdal_build/ifaddrs.hin heimdal_build/ifaddrs.h ])
57
58 AC_CHECK_HEADERS([                              \
59         crypt.h                                 \
60         curses.h                                \
61         errno.h                                 \
62         inttypes.h                              \
63         netdb.h                                 \
64         signal.h                                \
65         sys/bswap.h                             \
66         sys/file.h                              \
67         sys/stropts.h                           \
68         sys/timeb.h                             \
69         sys/times.h                             \
70         sys/uio.h                               \
71         sys/un.h                                \
72         sys/utsname.h                           \
73         term.h                                  \
74         termcap.h                               \
75         time.h                                  \
76         timezone.h                              \
77         ttyname.h                               \
78         netinet/in.h                            \
79         netinet/in6.h                           \
80         netinet6/in6.h                          \
81         libintl.h
82 ])
83
84 AC_CHECK_FUNCS([                                \
85         atexit                                  \
86         cgetent                                 \
87         getprogname                             \
88         setprogname                             \
89         inet_aton                               \
90         gethostname                             \
91         getnameinfo                             \
92         iruserok                                \
93         putenv                                  \
94         rcmd                                    \
95         readv                                   \
96         sendmsg                                 \
97         setitimer                               \
98         socket                                  \
99         strlwr                                  \
100         strncasecmp                             \
101         strptime                                \
102         strsep                                  \
103         strsep_copy                             \
104         strtok_r                                \
105         strupr                                  \
106         swab                                    \
107         umask                                   \
108         uname                                   \
109         unsetenv                                \
110         closefrom                               \
111         hstrerror                               \
112         err                                     \
113         warn                                    \
114         errx                                    \
115         warnx                                   \
116         flock                                   \
117         getipnodebyname                         \
118         getipnodebyaddr                         \
119         freehostent                             \
120         writev
121 ])
122
123 love_FIND_FUNC(bswap16, [#ifdef HAVE_SYS_BSWAP_H
124 #include <sys/bswap.h>
125 #endif], 0)
126
127 love_FIND_FUNC(bswap32, [#ifdef HAVE_SYS_BSWAP_H
128 #include <sys/bswap.h>
129 #endif], 0)
130
131 AC_DEFUN([AC_KRB_STRUCT_WINSIZE], [
132 AC_MSG_CHECKING(for struct winsize)
133 AC_CACHE_VAL(ac_cv_struct_winsize, [
134 ac_cv_struct_winsize=no
135 for i in sys/termios.h sys/ioctl.h; do
136 AC_EGREP_HEADER(
137 struct[[        ]]*winsize,dnl
138 $i, ac_cv_struct_winsize=yes; break)dnl
139 done
140 ])
141 if test "$ac_cv_struct_winsize" = "yes"; then
142   AC_DEFINE(HAVE_STRUCT_WINSIZE, 1, [define if struct winsize is declared in sys/termios.h])
143 fi
144 AC_MSG_RESULT($ac_cv_struct_winsize)
145 AC_EGREP_HEADER(ws_xpixel, termios.h, 
146         AC_DEFINE(HAVE_WS_XPIXEL, 1, [define if struct winsize has ws_xpixel]))
147 AC_EGREP_HEADER(ws_ypixel, termios.h, 
148         AC_DEFINE(HAVE_WS_YPIXEL, 1, [define if struct winsize has ws_ypixel]))
149 ])
150
151 AC_KRB_STRUCT_WINSIZE
152
153 AC_TYPE_SIGNAL
154 if test "$ac_cv_type_signal" = "void" ; then
155         AC_DEFINE(VOID_RETSIGTYPE, 1, [Define if signal handlers return void.])
156 fi
157 AC_SUBST(VOID_RETSIGTYPE)
158
159
160 m4_include(heimdal/cf/check-var.m4)
161
162 rk_CHECK_VAR(h_errno, 
163 [#ifdef HAVE_SYS_TYPES_H
164 #include <sys/types.h>
165 #endif
166 #ifdef HAVE_NETDB_H
167 #include <netdb.h>
168 #endif])
169
170 m4_include(heimdal/cf/find-func.m4)
171 m4_include(heimdal/cf/find-func-no-libs.m4)
172 m4_include(heimdal/cf/find-func-no-libs2.m4)
173 m4_include(heimdal/cf/resolv.m4)
174
175 AC_CHECK_HEADERS([pty.h util.h libutil.h])
176
177 AC_CHECK_LIB_EXT(util, OPENPTY_LIBS, openpty)
178
179 SMB_ENABLE(OPENPTY,YES)
180
181 SMB_EXT_LIB(OPENPTY,[${OPENPTY_LIBS}],[${OPENPTY_CFLAGS}],[${OPENPTY_CPPFLAGS}],[${OPENPTY_LDFLAGS}])
182
183 AC_CHECK_LIB_EXT(intl, INTL_LIBS, gettext)
184
185 SMB_ENABLE(INTL,YES)
186
187 SMB_EXT_LIB(INTL, $INTL_LIBS)
188
189 smb_save_LIBS=$LIBS
190 RESOLV_LIBS=""
191 LIBS=""
192
193 dnl  This fills in the global LIBS...
194 rk_RESOLV
195
196 dnl AC_CHECK_LIB_EXT(resolv, RESOLV_LIBS, res_search)
197         SMB_ENABLE(RESOLV,YES)
198
199 if test x"$LIBS" != "x"; then
200         RESOLV_LIBS=$LIBS
201 fi
202
203 LIBS=$smb_save_LIBS
204
205 SMB_EXT_LIB(RESOLV,[${RESOLV_LIBS}],[${RESOLV_CFLAGS}],[${RESOLV_CPPFLAGS}],[${RESOLV_LDFLAGS}])
206
207
208 # these are disabled unless heimdal is found below
209 SMB_ENABLE(KERBEROS_LIB, NO)
210 SMB_ENABLE(asn1_compile, NO)
211 SMB_ENABLE(compile_et, NO)
212
213 #
214 # We need bison -y and flex in new versions
215 # Otherwise we get random runtime failures
216 #
217 LEX_YACC_COMBINATIONS=""
218 LEX_YACC_COMBINATIONS="$LEX_YACC_COMBINATIONS flex-2.5.33:bison-2.3"
219 LEX_YACC_COMBINATIONS="$LEX_YACC_COMBINATIONS flex-2.5.34:bison-2.3"
220 LEX_YACC_COMBINATIONS="$LEX_YACC_COMBINATIONS flex-2.5.35:bison-2.3"
221 LEX_YACC_COMBINATIONS="$LEX_YACC_COMBINATIONS flex-2.5.35:bison-2.4.1"
222
223 AC_PROG_LEX
224 LEX_BASENAME=`basename "$LEX"`
225 if test x"$LEX_BASENAME" = x"flex"; then
226         # "flex 2.5.33"
227         FLEX_VERSION=`$LEX --version | cut -d ' ' -f2`
228         AC_MSG_CHECKING(flex version)
229         AC_MSG_RESULT($FLEX_VERSION)
230         FLEX_MAJOR=`echo $FLEX_VERSION | cut -d '.' -f1`
231         FLEX_MINOR=`echo $FLEX_VERSION | cut -d '.' -f2`
232         FLEX_RELEASE=`echo $FLEX_VERSION | cut -d '.' -f3`
233
234         LEX_VERSION="flex-$FLEX_MAJOR.$FLEX_MINOR.$FLEX_RELEASE"
235 fi
236
237 AC_PROG_YACC
238 YACC_BASENAME=`basename "$YACC"`
239 if test x"$YACC_BASENAME" = x"bison -y"; then
240         # bison (GNU Bison) 2.3
241         # or
242         # bison (GNU Bison) 2.4.1
243         BISON_VERSION=`$YACC --version | head -1 | cut -d ' ' -f4`
244         AC_MSG_CHECKING(bison version)
245         AC_MSG_RESULT($BISON_VERSION)
246         BISON_MAJOR=`echo $BISON_VERSION | cut -d '.' -f1`
247         BISON_MINOR=`echo $BISON_VERSION | cut -d '.' -f2`
248         BISON_RELEASE=`echo $BISON_VERSION | cut -d '.' -f3`
249
250         if test x"$BISON_RELEASE" != x""; then
251                 YACC_VERSION="bison-$BISON_MAJOR.$BISON_MINOR.$BISON_RELEASE"
252         else
253                 YACC_VERSION="bison-$BISON_MAJOR.$BISON_MINOR"
254         fi
255 fi
256
257 AC_MSG_CHECKING(working LEX YACC combination)
258 LEX_YACC="no"
259 if test x"$LEX_VERSION" != x"" -a x"$YACC_VERSION" != x""; then
260         V="$LEX_VERSION:$YACC_VERSION"
261         for C in $LEX_YACC_COMBINATIONS; do
262                 if test x"$V" = x"$C"; then
263                         LEX_YACC=$V
264                         break;
265                 fi
266         done
267 fi
268 if test x"$LEX_YACC" = x"no"; then
269         LEX=false
270         YACC=false
271 fi
272 AC_MSG_RESULT($LEX_YACC)
273
274 # Portions of heimdal kerberos are unpacked into source/heimdal
275 # of the samba source tree.  
276
277 # if we ever get to using a host kerberos, we might add conditionals here
278 AC_DEFINE(HAVE_COM_ERR,1,[Whether com_err is available])
279 HAVE_COM_ERR=YES
280 AC_DEFINE(HAVE_KRB5,1,[Whether kerberos is available])
281 HAVE_KRB5=YES
282 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
283 HAVE_GSSAPI=YES
284 SMB_ENABLE(KERBEROS_LIB, YES)
285 SMB_ENABLE(asn1_compile, YES)
286 SMB_ENABLE(compile_et, YES)
287
288 # only add closefrom if needed
289 SMB_ENABLE(HEIMDAL_ROKEN_CLOSEFROM, NO)
290 SMB_ENABLE(HEIMDAL_ROKEN_CLOSEFROM_H, NO)
291 if test t$ac_cv_func_closefrom != tyes; then
292         SMB_ENABLE(HEIMDAL_ROKEN_CLOSEFROM, YES)
293         SMB_ENABLE(HEIMDAL_ROKEN_CLOSEFROM_H, YES)
294 fi
295
296 # only add getprogname if needed
297 SMB_ENABLE(HEIMDAL_ROKEN_PROGNAME, NO)
298 SMB_ENABLE(HEIMDAL_ROKEN_PROGNAME_H, NO)
299 if test t$ac_cv_func_getprogname != tyes; then
300         SMB_ENABLE(HEIMDAL_ROKEN_PROGNAME, YES)
301         SMB_ENABLE(HEIMDAL_ROKEN_PROGNAME_H, YES)
302 fi
303
304 VPATH="$VPATH:\$(HEIMDAL_VPATH)"
305
306 AC_DEFINE(SAMBA4_INTERNAL_HEIMDAL,1,[Whether we use in internal heimdal build])
307
308 SMB_INCLUDE_MK(heimdal_build/internal.mk)