s4:heimdal_build: heimdal requires u_int32_t and u_char
[kai/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 AC_CHECK_HEADERS([                              \
50         crypt.h                                 \
51         curses.h                                \
52         errno.h                                 \
53         inttypes.h                              \
54         netdb.h                                 \
55         pty.h                                   \
56         signal.h                                \
57         sys/bswap.h                             \
58         sys/file.h                              \
59         sys/stropts.h                           \
60         sys/timeb.h                             \
61         sys/times.h                             \
62         sys/uio.h                               \
63         sys/un.h                                \
64         sys/utsname.h                           \
65         term.h                                  \
66         termcap.h                               \
67         time.h                                  \
68         timezone.h                              \
69         ttyname.h                               \
70         netinet/in.h                            \
71         netinet/in6.h                           \
72         netinet6/in6.h
73 ])
74
75 AC_CHECK_FUNCS([                                \
76         atexit                                  \
77         cgetent                                 \
78         getprogname                             \
79         inet_aton                               \
80         gethostname                             \
81         getnameinfo                             \
82         iruserok                                \
83         putenv                                  \
84         rcmd                                    \
85         readv                                   \
86         sendmsg                                 \
87         setitimer                               \
88         socket                                  \
89         strlwr                                  \
90         strncasecmp                             \
91         strptime                                \
92         strsep                                  \
93         strsep_copy                             \
94         strtok_r                                \
95         strupr                                  \
96         swab                                    \
97         umask                                   \
98         uname                                   \
99         unsetenv                                \
100         closefrom                               \
101         hstrerror                               \
102         err                                     \
103         warn                                    \
104         errx                                    \
105         warnx                                   \
106         flock                                   \
107         getipnodebyname                         \
108         getipnodebyaddr                         \
109         freehostent                             \
110         writev
111 ])
112
113 love_FIND_FUNC(bswap16, [#ifdef HAVE_SYS_BSWAP_H
114 #include <sys/bswap.h>
115 #endif], 0)
116
117 love_FIND_FUNC(bswap32, [#ifdef HAVE_SYS_BSWAP_H
118 #include <sys/bswap.h>
119 #endif], 0)
120
121 AC_DEFUN([AC_KRB_STRUCT_WINSIZE], [
122 AC_MSG_CHECKING(for struct winsize)
123 AC_CACHE_VAL(ac_cv_struct_winsize, [
124 ac_cv_struct_winsize=no
125 for i in sys/termios.h sys/ioctl.h; do
126 AC_EGREP_HEADER(
127 struct[[        ]]*winsize,dnl
128 $i, ac_cv_struct_winsize=yes; break)dnl
129 done
130 ])
131 if test "$ac_cv_struct_winsize" = "yes"; then
132   AC_DEFINE(HAVE_STRUCT_WINSIZE, 1, [define if struct winsize is declared in sys/termios.h])
133 fi
134 AC_MSG_RESULT($ac_cv_struct_winsize)
135 AC_EGREP_HEADER(ws_xpixel, termios.h, 
136         AC_DEFINE(HAVE_WS_XPIXEL, 1, [define if struct winsize has ws_xpixel]))
137 AC_EGREP_HEADER(ws_ypixel, termios.h, 
138         AC_DEFINE(HAVE_WS_YPIXEL, 1, [define if struct winsize has ws_ypixel]))
139 ])
140
141 AC_KRB_STRUCT_WINSIZE
142
143 AC_TYPE_SIGNAL
144 if test "$ac_cv_type_signal" = "void" ; then
145         AC_DEFINE(VOID_RETSIGTYPE, 1, [Define if signal handlers return void.])
146 fi
147 AC_SUBST(VOID_RETSIGTYPE)
148
149
150 m4_include(heimdal/cf/check-var.m4)
151
152 rk_CHECK_VAR(h_errno, 
153 [#ifdef HAVE_SYS_TYPES_H
154 #include <sys/types.h>
155 #endif
156 #ifdef HAVE_NETDB_H
157 #include <netdb.h>
158 #endif])
159
160 m4_include(heimdal/cf/find-func.m4)
161 m4_include(heimdal/cf/find-func-no-libs.m4)
162 m4_include(heimdal/cf/find-func-no-libs2.m4)
163 m4_include(heimdal/cf/resolv.m4)
164
165
166 AC_CHECK_LIB_EXT(util, OPENPTY_LIBS, openpty)
167
168 SMB_ENABLE(OPENPTY,YES)
169
170 SMB_EXT_LIB(OPENPTY,[${OPENPTY_LIBS}],[${OPENPTY_CFLAGS}],[${OPENPTY_CPPFLAGS}],[${OPENPTY_LDFLAGS}])
171
172 smb_save_LIBS=$LIBS
173 RESOLV_LIBS=""
174 LIBS=""
175
176 dnl  This fills in the global LIBS...
177 rk_RESOLV
178
179 dnl AC_CHECK_LIB_EXT(resolv, RESOLV_LIBS, res_search)
180         SMB_ENABLE(RESOLV,YES)
181
182 if test x"$LIBS" != "x"; then
183         RESOLV_LIBS=$LIBS
184 fi
185
186 LIBS=$smb_save_LIBS
187
188 SMB_EXT_LIB(RESOLV,[${RESOLV_LIBS}],[${RESOLV_CFLAGS}],[${RESOLV_CPPFLAGS}],[${RESOLV_LDFLAGS}])
189
190
191 # these are disabled unless heimdal is found below
192 SMB_ENABLE(KERBEROS_LIB, NO)
193 SMB_ENABLE(asn1_compile, NO)
194 SMB_ENABLE(compile_et, NO)
195
196 #
197 # We need bison -y and flex in new versions
198 # Otherwise we get random runtime failures
199 #
200 LEX_YACC_COMBINATIONS=""
201 LEX_YACC_COMBINATIONS="$LEX_YACC_COMBINATIONS flex-2.5.33:bison-2.3"
202 LEX_YACC_COMBINATIONS="$LEX_YACC_COMBINATIONS flex-2.5.34:bison-2.3"
203
204 AC_PROG_LEX
205 LEX_BASENAME=`basename "$LEX"`
206 if test x"$LEX_BASENAME" = x"flex"; then
207         # "flex 2.5.33"
208         FLEX_VERSION=`$LEX --version | cut -d ' ' -f2`
209         AC_MSG_CHECKING(flex version)
210         AC_MSG_RESULT($FLEX_VERSION)
211         FLEX_MAJOR=`echo $FLEX_VERSION | cut -d '.' -f1`
212         FLEX_MINOR=`echo $FLEX_VERSION | cut -d '.' -f2`
213         FLEX_RELEASE=`echo $FLEX_VERSION | cut -d '.' -f3`
214
215         LEX_VERSION="flex-$FLEX_MAJOR.$FLEX_MINOR.$FLEX_RELEASE"
216 fi
217
218 AC_PROG_YACC
219 YACC_BASENAME=`basename "$YACC"`
220 if test x"$YACC_BASENAME" = x"bison -y"; then
221         # bison (GNU Bison) 2.3
222         BISON_VERSION=`$YACC --version | head -1 | cut -d ' ' -f4`
223         AC_MSG_CHECKING(bison version)
224         AC_MSG_RESULT($BISON_VERSION)
225         BISON_MAJOR=`echo $BISON_VERSION | cut -d '.' -f1`
226         BISON_MINOR=`echo $BISON_VERSION | cut -d '.' -f2`
227
228         YACC_VERSION="bison-$BISON_MAJOR.$BISON_MINOR"
229 fi
230
231 AC_MSG_CHECKING(working LEX YACC combination)
232 LEX_YACC="no"
233 if test x"$LEX_VERSION" != x"" -a x"$YACC_VERSION" != x""; then
234         V="$LEX_VERSION:$YACC_VERSION"
235         for C in $LEX_YACC_COMBINATIONS; do
236                 if test x"$V" = x"$C"; then
237                         LEX_YACC=$V
238                         break;
239                 fi
240         done
241 fi
242 if test x"$LEX_YACC" = x"no"; then
243         LEX=false
244         YACC=false
245 fi
246 AC_MSG_RESULT($LEX_YACC)
247
248 # Portions of heimdal kerberos are unpacked into source/heimdal
249 # of the samba source tree.  
250
251 # if we ever get to using a host kerberos, we might add conditionals here
252 AC_DEFINE(HAVE_COM_ERR,1,[Whether com_err is available])
253 HAVE_COM_ERR=YES
254 AC_DEFINE(HAVE_KRB5,1,[Whether kerberos is available])
255 HAVE_KRB5=YES
256 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
257 HAVE_GSSAPI=YES
258 SMB_ENABLE(KERBEROS_LIB, YES)
259 SMB_ENABLE(asn1_compile, YES)
260 SMB_ENABLE(compile_et, YES)
261
262 # only add closefrom if needed
263 SMB_ENABLE(HEIMDAL_ROKEN_CLOSEFROM, NO)
264 if test t$ac_cv_func_closefrom != tyes; then
265         SMB_ENABLE(HEIMDAL_ROKEN_CLOSEFROM, YES)
266 fi
267
268 # only add getprogname if needed
269 SMB_ENABLE(HEIMDAL_ROKEN_GETPROGNAME, NO)
270 SMB_ENABLE(HEIMDAL_ROKEN_GETPROGNAME_H, NO)
271 if test t$ac_cv_func_getprogname != tyes; then
272         SMB_ENABLE(HEIMDAL_ROKEN_GETPROGNAME, YES)
273         SMB_ENABLE(HEIMDAL_ROKEN_GETPROGNAME_H, YES)
274 fi
275
276 VPATH="$VPATH:\$(HEIMDAL_VPATH)"
277
278 AC_DEFINE(SAMBA4_INTERNAL_HEIMDAL,1,[Whether we use in internal heimdal build])
279
280 SMB_INCLUDE_MK(heimdal_build/internal.mk)