nexmon – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | dnl Macros that test for specific features. |
2 | dnl This file is part of the Autoconf packaging for Wireshark. |
||
3 | dnl Copyright (C) 1998-2000 by Gerald Combs. |
||
4 | dnl |
||
5 | dnl This program is free software; you can redistribute it and/or modify |
||
6 | dnl it under the terms of the GNU General Public License as published by |
||
7 | dnl the Free Software Foundation; either version 2, or (at your option) |
||
8 | dnl any later version. |
||
9 | dnl |
||
10 | dnl This program is distributed in the hope that it will be useful, |
||
11 | dnl but WITHOUT ANY WARRANTY; without even the implied warranty of |
||
12 | dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||
13 | dnl GNU General Public License for more details. |
||
14 | dnl |
||
15 | dnl You should have received a copy of the GNU General Public License |
||
16 | dnl along with this program; if not, write to the Free Software |
||
17 | dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA |
||
18 | dnl 02111-1307, USA. |
||
19 | dnl |
||
20 | dnl As a special exception, the Free Software Foundation gives unlimited |
||
21 | dnl permission to copy, distribute and modify the configure scripts that |
||
22 | dnl are the output of Autoconf. You need not follow the terms of the GNU |
||
23 | dnl General Public License when using or distributing such scripts, even |
||
24 | dnl though portions of the text of Autoconf appear in them. The GNU |
||
25 | dnl General Public License (GPL) does govern all other use of the material |
||
26 | dnl that constitutes the Autoconf program. |
||
27 | dnl |
||
28 | dnl Certain portions of the Autoconf source text are designed to be copied |
||
29 | dnl (in certain cases, depending on the input) into the output of |
||
30 | dnl Autoconf. We call these the "data" portions. The rest of the Autoconf |
||
31 | dnl source text consists of comments plus executable code that decides which |
||
32 | dnl of the data portions to output in any given case. We call these |
||
33 | dnl comments and executable code the "non-data" portions. Autoconf never |
||
34 | dnl copies any of the non-data portions into its output. |
||
35 | dnl |
||
36 | dnl This special exception to the GPL applies to versions of Autoconf |
||
37 | dnl released by the Free Software Foundation. When you make and |
||
38 | dnl distribute a modified version of Autoconf, you may extend this special |
||
39 | dnl exception to the GPL to apply to your modified version as well, *unless* |
||
40 | dnl your modified version has the potential to copy into its output some |
||
41 | dnl of the text that was the non-data portion of the version that you started |
||
42 | dnl with. (In other words, unless your change moves or copies text from |
||
43 | dnl the non-data portions to the data portions.) If your modification has |
||
44 | dnl such potential, you must delete any notice of this special exception |
||
45 | dnl to the GPL from your modified version. |
||
46 | dnl |
||
47 | dnl Written by David MacKenzie, with help from |
||
48 | dnl Franc,ois Pinard, Karl Berry, Richard Pixley, Ian Lance Taylor, |
||
49 | dnl Roland McGrath, Noah Friedman, david d zuhn, and many others. |
||
50 | |||
51 | # |
||
52 | # AC_WIRESHARK_ADD_DASH_L |
||
53 | # |
||
54 | # Add to the variable specified as the first argument a "-L" flag for the |
||
55 | # directory specified as the second argument, and, on Solaris, add a |
||
56 | # "-R" flag for it as well. |
||
57 | # |
||
58 | # XXX - IRIX, and other OSes, may require some flag equivalent to |
||
59 | # "-R" here. |
||
60 | # |
||
61 | AC_DEFUN([AC_WIRESHARK_ADD_DASH_L], |
||
62 | [AX_APPEND_FLAG(-L$2, $1) |
||
63 | case "$host_os" in |
||
64 | solaris*) |
||
65 | AX_APPEND_FLAG(-R$2, $1) |
||
66 | ;; |
||
67 | esac |
||
68 | ]) |
||
69 | |||
70 | # |
||
71 | # AC_WIRESHARK_PUSH_FLAGS |
||
72 | # |
||
73 | # Push our flags to CFLAGS/etc. |
||
74 | # |
||
75 | AC_DEFUN([AC_WIRESHARK_PUSH_FLAGS], |
||
76 | [ |
||
77 | ac_ws_CPPLAGS_saved="$CPPFLAGS" |
||
78 | ac_ws_CFLAGS_saved="$CFLAGS" |
||
79 | ac_ws_CXXFLAGS_saved="$CXXFLAGS" |
||
80 | ac_ws_LDFLAGS_saved="$LDFLAGS" |
||
81 | CPPFLAGS="$WS_CPPFLAGS $CPPFLAGS" |
||
82 | CFLAGS="$WS_CFLAGS $CFLAGS" |
||
83 | CXXFLAGS="$WS_CXXFLAGS $CXXFLAGS" |
||
84 | LDFLAGS="$WS_LDFLAGS $LDFLAGS" |
||
85 | ]) |
||
86 | |||
87 | # |
||
88 | # AC_WIRESHARK_POP_FLAGS |
||
89 | # |
||
90 | # Restore user build flags. |
||
91 | # |
||
92 | AC_DEFUN([AC_WIRESHARK_POP_FLAGS], |
||
93 | [ |
||
94 | CPPFLAGS="$ac_ws_CPPLAGS_saved" |
||
95 | CFLAGS="$ac_ws_CFLAGS_saved" |
||
96 | CXXFLAGS="$ac_ws_CXXFLAGS_saved" |
||
97 | LDFLAGS="$ac_ws_LDFLAGS_saved" |
||
98 | ]) |
||
99 | |||
100 | |||
101 | # |
||
102 | # AC_WIRESHARK_BREAKLOOP_TRY_LINK |
||
103 | # |
||
104 | AC_DEFUN([AC_WIRESHARK_PCAP_BREAKLOOP_TRY_LINK], |
||
105 | [ |
||
106 | AC_LINK_IFELSE( |
||
107 | [ |
||
108 | AC_LANG_SOURCE( |
||
109 | [[ |
||
110 | # include <pcap.h> |
||
111 | int main(void) |
||
112 | { |
||
113 | pcap_t *pct = NULL; |
||
114 | pcap_breakloop(pct); |
||
115 | return 0; |
||
116 | } |
||
117 | ]]) |
||
118 | ], |
||
119 | [ |
||
120 | ws_breakloop_compiled=yes |
||
121 | ], |
||
122 | [ |
||
123 | ws_breakloop_compiled=no |
||
124 | ]) |
||
125 | ]) |
||
126 | |||
127 | |||
128 | |||
129 | # |
||
130 | # AC_WIRESHARK_PCAP_CHECK |
||
131 | # |
||
132 | AC_DEFUN([AC_WIRESHARK_PCAP_CHECK], |
||
133 | [ |
||
134 | AC_WIRESHARK_PUSH_FLAGS |
||
135 | |||
136 | if test -z "$pcap_dir" |
||
137 | then |
||
138 | # Pcap header checks |
||
139 | # XXX need to set a var AC_CHECK_HEADER(pcap.h,,) |
||
140 | |||
141 | # |
||
142 | # The user didn't specify a directory in which libpcap resides. |
||
143 | # First, look for a pcap-config script. |
||
144 | # |
||
145 | AC_PATH_TOOL(PCAP_CONFIG, pcap-config) |
||
146 | |||
147 | if test -n "$PCAP_CONFIG" ; then |
||
148 | # |
||
149 | # Found it. |
||
150 | # |
||
151 | # Now check whether it's the libpcap 1.0 version, which |
||
152 | # put a space after "-L" - on some platforms, that doesn't |
||
153 | # work. |
||
154 | # |
||
155 | AC_MSG_CHECKING(for broken pcap-config) |
||
156 | case "`\"$PCAP_CONFIG\" --libs`" in |
||
157 | |||
158 | "-L "*) |
||
159 | # |
||
160 | # Space after -L. Pretend pcap-config doesn't exist. |
||
161 | # |
||
162 | AC_MSG_RESULT(yes) |
||
163 | PCAP_CONFIG="" |
||
164 | ;; |
||
165 | |||
166 | *) |
||
167 | # |
||
168 | # No space after -L. |
||
169 | # |
||
170 | AC_MSG_RESULT(no) |
||
171 | ;; |
||
172 | esac |
||
173 | fi |
||
174 | if test -n "$PCAP_CONFIG" ; then |
||
175 | # |
||
176 | # Found it, and it's usable; use it to get the include flags |
||
177 | # for libpcap. |
||
178 | # |
||
179 | CPPFLAGS="$CPPFLAGS `\"$PCAP_CONFIG\" --cflags`" |
||
180 | else |
||
181 | # |
||
182 | # Didn't find it; we have to look for libpcap ourselves. |
||
183 | # We assume that the current library search path will work, |
||
184 | # but we may have to look for the header in a "pcap" |
||
185 | # subdirectory of "/usr/include" or "/usr/local/include", |
||
186 | # as some systems apparently put "pcap.h" in a "pcap" |
||
187 | # subdirectory, and we also check "$prefix/include" - and |
||
188 | # "$prefix/include/pcap", in case $prefix is set to |
||
189 | # "/usr/include" or "/usr/local/include". |
||
190 | # |
||
191 | # XXX - should we just add "$prefix/include" to the include |
||
192 | # search path and "$prefix/lib" to the library search path? |
||
193 | # |
||
194 | AC_MSG_CHECKING(for extraneous pcap header directories) |
||
195 | found_pcap_dir="" |
||
196 | pcap_dir_list="/usr/local/include/pcap /usr/include/pcap $prefix/include/pcap $prefix/include" |
||
197 | for pcap_dir in $pcap_dir_list |
||
198 | do |
||
199 | if test -d $pcap_dir ; then |
||
200 | if test x$pcap_dir != x/usr/include -a x$pcap_dir != x/usr/local/include ; then |
||
201 | CPPFLAGS="$CPPFLAGS -I$pcap_dir" |
||
202 | fi |
||
203 | found_pcap_dir=" $found_pcap_dir -I$pcap_dir" |
||
204 | break |
||
205 | fi |
||
206 | done |
||
207 | |||
208 | if test "$found_pcap_dir" != "" ; then |
||
209 | AC_MSG_RESULT(found --$found_pcap_dir added to CFLAGS) |
||
210 | else |
||
211 | AC_MSG_RESULT(not found) |
||
212 | fi |
||
213 | fi |
||
214 | else |
||
215 | # |
||
216 | # The user specified a directory in which libpcap resides, |
||
217 | # so add the "include" subdirectory of that directory to |
||
218 | # the include file search path and the "lib" subdirectory |
||
219 | # of that directory to the library search path. |
||
220 | # |
||
221 | # XXX - if there's also a libpcap in a directory that's |
||
222 | # already in CPPFLAGS or LDFLAGS, this won't make us find |
||
223 | # the version in the specified directory, as the compiler |
||
224 | # and/or linker will search that other directory before it |
||
225 | # searches the specified directory. |
||
226 | # |
||
227 | CPPFLAGS="$CPPFLAGS -I$pcap_dir/include" |
||
228 | AC_WIRESHARK_ADD_DASH_L(LDFLAGS, $pcap_dir/lib) |
||
229 | fi |
||
230 | |||
231 | # Pcap header check |
||
232 | AC_CHECK_HEADER(pcap.h,, |
||
233 | AC_MSG_ERROR([[Header file pcap.h not found; if you installed libpcap |
||
234 | from source, did you also do \"make install-incl\", and if you installed a |
||
235 | binary package of libpcap, is there also a developer's package of libpcap, |
||
236 | and did you also install that package?]])) |
||
237 | |||
238 | if test -n "$PCAP_CONFIG" ; then |
||
239 | # |
||
240 | # We have pcap-config; we assume that means we have libpcap |
||
241 | # installed and that pcap-config will tell us whatever |
||
242 | # libraries libpcap needs. |
||
243 | # |
||
244 | if test x$enable_static = xyes; then |
||
245 | PCAP_LIBS="`\"$PCAP_CONFIG\" --libs --static`" |
||
246 | else |
||
247 | PCAP_LIBS="`\"$PCAP_CONFIG\" --libs`" |
||
248 | fi |
||
249 | AC_DEFINE(HAVE_LIBPCAP, 1, [Define to use libpcap library]) |
||
250 | else |
||
251 | # |
||
252 | # Check to see if we find "pcap_open_live" in "-lpcap". |
||
253 | # Also check for various additional libraries that libpcap might |
||
254 | # require. |
||
255 | # |
||
256 | AC_CHECK_LIB(pcap, pcap_open_live, |
||
257 | [ |
||
258 | PCAP_LIBS=-lpcap |
||
259 | AC_DEFINE(HAVE_LIBPCAP, 1, [Define to use libpcap library]) |
||
260 | ], [ |
||
261 | ac_wireshark_extras_found=no |
||
262 | ac_save_LIBS="$LIBS" |
||
263 | for extras in "-lcfg -lodm" "-lpfring" |
||
264 | do |
||
265 | AC_MSG_CHECKING([for pcap_open_live in -lpcap with $extras]) |
||
266 | LIBS="-lpcap $extras $ac_save_LIBS" |
||
267 | # |
||
268 | # XXX - can't we use AC_CHECK_LIB here? |
||
269 | # |
||
270 | AC_TRY_LINK( |
||
271 | [ |
||
272 | # include <pcap.h> |
||
273 | ], |
||
274 | [ |
||
275 | pcap_open_live(NULL, 0, 0, 0, NULL); |
||
276 | ], |
||
277 | [ |
||
278 | ac_wireshark_extras_found=yes |
||
279 | AC_MSG_RESULT([yes]) |
||
280 | PCAP_LIBS="-lpcap $extras" |
||
281 | AC_DEFINE(HAVE_LIBPCAP, 1, [Define to use libpcap library]) |
||
282 | ], |
||
283 | [ |
||
284 | AC_MSG_RESULT([no]) |
||
285 | ]) |
||
286 | if test x$ac_wireshark_extras_found = xyes |
||
287 | then |
||
288 | break |
||
289 | fi |
||
290 | done |
||
291 | if test x$ac_wireshark_extras_found = xno |
||
292 | then |
||
293 | AC_MSG_ERROR([Can't link with library libpcap.]) |
||
294 | fi |
||
295 | LIBS=$ac_save_LIBS |
||
296 | ]) |
||
297 | fi |
||
298 | AC_SUBST(PCAP_LIBS) |
||
299 | |||
300 | # |
||
301 | # Check whether various variables and functions are defined by |
||
302 | # libpcap. |
||
303 | # |
||
304 | ac_save_LIBS="$LIBS" |
||
305 | LIBS="$PCAP_LIBS $LIBS" |
||
306 | AC_CHECK_FUNCS(pcap_open_dead pcap_freecode) |
||
307 | # |
||
308 | # pcap_breakloop may be present in the library but not declared |
||
309 | # in the pcap.h header file. If it's not declared in the header |
||
310 | # file, attempts to use it will get warnings, and, if we're |
||
311 | # building with warnings treated as errors, that warning will |
||
312 | # cause compilation to fail. |
||
313 | # |
||
314 | # We are therefore first testing whether the function is present |
||
315 | # and then, if we're compiling with warnings as errors, testing |
||
316 | # whether it is usable. It is usable if it compiles without |
||
317 | # a -Wimplicit warning (the "compile with warnings as errors" |
||
318 | # option requires GCC). If it is not usable, we fail and tell |
||
319 | # the user that the pcap.h header needs to be updated. |
||
320 | # |
||
321 | # Ceteris paribus, this should only happen with Mac OS X 10.3[.x] which |
||
322 | # can have an up-to-date pcap library without the corresponding pcap |
||
323 | # header. |
||
324 | # |
||
325 | # However, it might also happen on some others OSes with some erroneous |
||
326 | # system manipulations where multiple versions of libpcap might co-exist |
||
327 | # e.g. hand made symbolic link from libpcap.so -> libpcap.so.0.8 but |
||
328 | # having the pcap header version 0.7. |
||
329 | # |
||
330 | AC_MSG_CHECKING([whether pcap_breakloop is present]) |
||
331 | ac_CFLAGS_saved="$CFLAGS" |
||
332 | AC_WIRESHARK_PCAP_BREAKLOOP_TRY_LINK |
||
333 | if test "x$ws_breakloop_compiled" = "xyes"; then |
||
334 | AC_MSG_RESULT(yes) |
||
335 | AC_DEFINE(HAVE_PCAP_BREAKLOOP, 1, [Define if pcap_breakloop is known]) |
||
336 | if test "x$with_warnings_as_errors" = "xyes"; then |
||
337 | AC_MSG_CHECKING([whether pcap_breakloop is usable]) |
||
338 | CFLAGS="$CFLAGS -Werror -Wimplicit" |
||
339 | AC_WIRESHARK_PCAP_BREAKLOOP_TRY_LINK |
||
340 | if test "x$ws_breakloop_compiled" = "xyes"; then |
||
341 | AC_MSG_RESULT(yes) |
||
342 | else |
||
343 | AC_MSG_RESULT(no) |
||
344 | AC_MSG_ERROR( |
||
345 | [Your pcap library is more recent than your pcap header. |
||
346 | As you are building with compiler warnings treated as errors, Wireshark |
||
347 | won't be able to use functions not declared in that header. |
||
348 | If you wish to build with compiler warnings treated as errors, You should |
||
349 | install a newer version of the header file.]) |
||
350 | fi |
||
351 | CFLAGS="$ac_CFLAGS_saved" |
||
352 | fi |
||
353 | else |
||
354 | AC_MSG_RESULT(no) |
||
355 | fi |
||
356 | |||
357 | # |
||
358 | # Later versions of Mac OS X 10.3[.x] ship a pcap.h that |
||
359 | # doesn't define pcap_if_t but ship an 0.8[.x] libpcap, |
||
360 | # so the library has "pcap_findalldevs()", but pcap.h |
||
361 | # doesn't define "pcap_if_t" so you can't actually *use* |
||
362 | # "pcap_findalldevs()". |
||
363 | # |
||
364 | # That even appears to be true of systems shipped with |
||
365 | # 10.3.4, so it doesn't appear only to be a case of |
||
366 | # Software Update not updating header files. |
||
367 | # |
||
368 | # (You can work around this by installing the 0.8 header |
||
369 | # files.) |
||
370 | # |
||
371 | AC_CACHE_CHECK([whether pcap_findalldevs is present and usable], |
||
372 | [ac_cv_func_pcap_findalldevs], |
||
373 | [ |
||
374 | AC_LINK_IFELSE( |
||
375 | [ |
||
376 | AC_LANG_SOURCE( |
||
377 | [[ |
||
378 | #include <pcap.h> |
||
379 | main() |
||
380 | { |
||
381 | pcap_if_t *devpointer; |
||
382 | char errbuf[1]; |
||
383 | |||
384 | pcap_findalldevs(&devpointer, errbuf); |
||
385 | } |
||
386 | ]]) |
||
387 | ], |
||
388 | [ |
||
389 | ac_cv_func_pcap_findalldevs=yes |
||
390 | ], |
||
391 | [ |
||
392 | ac_cv_func_pcap_findalldevs=no |
||
393 | ]) |
||
394 | ]) |
||
395 | # |
||
396 | # Don't check for other new routines that showed up after |
||
397 | # "pcap_findalldevs()" if we don't have a usable |
||
398 | # "pcap_findalldevs()", so we don't end up using them if the |
||
399 | # "pcap.h" is crufty and old and doesn't declare them. |
||
400 | # |
||
401 | if test $ac_cv_func_pcap_findalldevs = "yes" ; then |
||
402 | AC_DEFINE(HAVE_PCAP_FINDALLDEVS, 1, |
||
403 | [Define to 1 if you have the `pcap_findalldevs' function and a pcap.h that declares pcap_if_t.]) |
||
404 | AC_CHECK_FUNCS(pcap_datalink_val_to_name pcap_datalink_name_to_val) |
||
405 | AC_CHECK_FUNCS(pcap_datalink_val_to_description) |
||
406 | AC_CHECK_FUNCS(pcap_list_datalinks pcap_set_datalink pcap_lib_version) |
||
407 | AC_CHECK_FUNCS(pcap_get_selectable_fd pcap_free_datalinks) |
||
408 | AC_CHECK_FUNC(pcap_create, |
||
409 | [ |
||
410 | AC_DEFINE(HAVE_PCAP_CREATE, 1, |
||
411 | [Define to 1 if you have the `pcap_create' function.]) |
||
412 | AC_DEFINE(CAN_SET_CAPTURE_BUFFER_SIZE, 1, |
||
413 | [Define to 1 if the capture buffer size can be set.]) |
||
414 | ]) |
||
415 | AC_CHECK_FUNCS(bpf_image pcap_set_tstamp_precision) |
||
416 | fi |
||
417 | |||
418 | AC_WIRESHARK_POP_FLAGS |
||
419 | LIBS="$ac_save_LIBS" |
||
420 | ]) |
||
421 | |||
422 | AC_DEFUN([AC_WIRESHARK_PCAP_REMOTE_CHECK], |
||
423 | [ |
||
424 | ac_save_LIBS="$LIBS" |
||
425 | LIBS="$PCAP_LIBS $LIBS" |
||
426 | AC_DEFINE(HAVE_REMOTE, 1, [Define to 1 to enable remote |
||
427 | capturing feature in WinPcap library]) |
||
428 | AC_CHECK_FUNCS(pcap_open) |
||
429 | if test $ac_cv_func_pcap_open = "yes" ; then |
||
430 | AC_DEFINE(HAVE_PCAP_REMOTE, 1, |
||
431 | [Define to 1 if you have WinPcap remote capturing support and prefer to use these new API features.]) |
||
432 | fi |
||
433 | AC_CHECK_FUNCS(pcap_setsampling) |
||
434 | LIBS="$ac_save_LIBS" |
||
435 | ]) |
||
436 | |||
437 | # |
||
438 | # AC_WIRESHARK_ZLIB_CHECK |
||
439 | # |
||
440 | AC_DEFUN([AC_WIRESHARK_ZLIB_CHECK], |
||
441 | [ |
||
442 | AC_WIRESHARK_PUSH_FLAGS |
||
443 | |||
444 | if test "x$zlib_dir" != "x" |
||
445 | then |
||
446 | # |
||
447 | # The user specified a directory in which zlib resides, |
||
448 | # so add the "include" subdirectory of that directory to |
||
449 | # the include file search path and the "lib" subdirectory |
||
450 | # of that directory to the library search path. |
||
451 | # |
||
452 | # XXX - if there's also a zlib in a directory that's |
||
453 | # already in CPPFLAGS or LDFLAGS, this won't make us find |
||
454 | # the version in the specified directory, as the compiler |
||
455 | # and/or linker will search that other directory before it |
||
456 | # searches the specified directory. |
||
457 | # |
||
458 | CPPFLAGS="$CPPFLAGS -I$zlib_dir/include" |
||
459 | AC_WIRESHARK_ADD_DASH_L(LDFLAGS, $zlib_dir/lib) |
||
460 | fi |
||
461 | |||
462 | # |
||
463 | # Make sure we have "zlib.h". If we don't, it means we probably |
||
464 | # don't have zlib, so don't use it. |
||
465 | # |
||
466 | AC_CHECK_HEADER(zlib.h,, |
||
467 | [ |
||
468 | if test "x$zlib_dir" != "x" |
||
469 | then |
||
470 | # |
||
471 | # The user used "--with-zlib=" to specify a directory |
||
472 | # containing zlib, but we didn't find the header file |
||
473 | # there; that either means they didn't specify the |
||
474 | # right directory or are confused about whether zlib |
||
475 | # is, in fact, installed. Report the error and give up. |
||
476 | # |
||
477 | AC_MSG_ERROR([zlib header not found in directory specified in --with-zlib]) |
||
478 | else |
||
479 | if test "x$want_zlib" = "xyes" |
||
480 | then |
||
481 | # |
||
482 | # The user tried to force us to use the library, but we |
||
483 | # couldn't find the header file; report an error. |
||
484 | # |
||
485 | AC_MSG_ERROR(Header file zlib.h not found.) |
||
486 | else |
||
487 | # |
||
488 | # We couldn't find the header file; don't use the |
||
489 | # library, as it's probably not present. |
||
490 | # |
||
491 | want_zlib=no |
||
492 | fi |
||
493 | fi |
||
494 | ]) |
||
495 | |||
496 | if test "x$want_zlib" != "xno" |
||
497 | then |
||
498 | # |
||
499 | # Well, we at least have the zlib header file. |
||
500 | # We link with zlib to support uncompression of |
||
501 | # gzipped network traffic, e.g. in an HTTP request |
||
502 | # or response body. |
||
503 | # |
||
504 | if test "x$zlib_dir" != "x" |
||
505 | then |
||
506 | WS_CPPFLAGS="$WS_CPPFLAGS -I$zlib_dir/include" |
||
507 | AC_WIRESHARK_ADD_DASH_L(WS_LDFLAGS, $zlib_dir/lib) |
||
508 | fi |
||
509 | LIBS="-lz $LIBS" |
||
510 | AC_DEFINE(HAVE_ZLIB, 1, [Define to use zlib library]) |
||
511 | # |
||
512 | # Check for "inflatePrime()" in zlib, which we need |
||
513 | # in order to read compressed capture files. |
||
514 | # |
||
515 | AC_CHECK_FUNCS(inflatePrime) |
||
516 | |||
517 | if test "x$ac_cv_func_inflatePrime" = "xyes" ; then |
||
518 | # |
||
519 | # Now check for "inflatePrime()" in zlib when |
||
520 | # linking with the linker flags for GTK+ |
||
521 | # applications; people often grab XFree86 source |
||
522 | # and build and install it on their systems, |
||
523 | # and they appear sometimes to misconfigure |
||
524 | # XFree86 so that, even on systems with zlib, |
||
525 | # it assumes there is no zlib, so the XFree86 |
||
526 | # build process builds and installs its |
||
527 | # own zlib in the X11 library directory. |
||
528 | # |
||
529 | # The zlib in at least some versions of XFree86 |
||
530 | # is an older version that may lack "inflatePrime()", |
||
531 | # and that's the zlib with which Wireshark gets |
||
532 | # linked, so the build of Wireshark fails. |
||
533 | # |
||
534 | AC_MSG_CHECKING([for inflatePrime missing when linking with X11]) |
||
535 | AC_TRY_LINK_FUNC(inflatePrime, AC_MSG_RESULT(no), |
||
536 | [ |
||
537 | AC_MSG_RESULT(yes) |
||
538 | AC_MSG_ERROR(old zlib found when linking with X11 - get rid of old zlib.) |
||
539 | ]) |
||
540 | fi |
||
541 | fi |
||
542 | |||
543 | AC_WIRESHARK_POP_FLAGS |
||
544 | ]) |
||
545 | |||
546 | # |
||
547 | # AC_WIRESHARK_LIBLUA_CHECK |
||
548 | # |
||
549 | # Sets $have_lua to yes or no. |
||
550 | # If it's yes, it also sets $LUA_CFLAGS and $LUA_LIBS. |
||
551 | AC_DEFUN([AC_WIRESHARK_LIBLUA_CHECK],[ |
||
552 | |||
553 | AC_WIRESHARK_PUSH_FLAGS |
||
554 | |||
555 | if test "x$want_lua_dir" = "x" |
||
556 | then |
||
557 | # The user didn't tell us where to find Lua. Let's go look for it. |
||
558 | |||
559 | # First, try the standard (pkg-config) way. |
||
560 | # Unfortunately Lua's pkg-config file isn't standardly named. |
||
561 | # Some distributions allow installation of multiple versions of |
||
562 | # Lua at the same time. On such systems each version has its |
||
563 | # own package name. |
||
564 | # |
||
565 | # We use a for loop instead of giving all the package names to |
||
566 | # PKG_CHECK_MODULES because doing the latter doesn't appear to |
||
567 | # work reliably (some package names are not searched for). |
||
568 | for pkg in "lua < 5.3" lua5.2 lua-5.2 lua52 lua5.1 lua-5.1 lua51 lua5.0 lua-5.0 lua50 |
||
569 | do |
||
570 | AC_MSG_CHECKING(if you have $pkg) |
||
571 | PKG_CHECK_EXISTS($pkg, |
||
572 | [ |
||
573 | AC_MSG_RESULT(yes) |
||
574 | have_lua=yes |
||
575 | ], |
||
576 | [ |
||
577 | AC_MSG_RESULT(no) |
||
578 | ]) |
||
579 | |||
580 | if test "x$have_lua" = "xyes" |
||
581 | then |
||
582 | PKG_WIRESHARK_CHECK_SYSTEM_MODULES(LUA, $pkg) |
||
583 | CPPFLAGS="$LUA_CFLAGS $CPPFLAGS" |
||
584 | AC_CHECK_HEADERS(lua.h lualib.h lauxlib.h) |
||
585 | break |
||
586 | fi |
||
587 | done |
||
588 | fi |
||
589 | |||
590 | if test "x$have_lua" != "xyes" |
||
591 | then |
||
592 | # We don't have pkg-config or the user specified the path to |
||
593 | # Lua (in $want_lua_dir). |
||
594 | # Let's look for the header file. |
||
595 | |||
596 | AC_MSG_CHECKING(for the location of lua.h) |
||
597 | if test "x$want_lua_dir" = "x" |
||
598 | then |
||
599 | # The user didn't tell us where to look so we'll look in some |
||
600 | # standard locations. |
||
601 | want_lua_dir="/usr/local /usr $prefix" |
||
602 | fi |
||
603 | for dir in $want_lua_dir |
||
604 | do |
||
605 | if test -r "$dir/include/lua.h" |
||
606 | then |
||
607 | header_dir="$dir/include" |
||
608 | lua_dir=$dir |
||
609 | break |
||
610 | fi |
||
611 | |||
612 | for ver in 5.2 52 5.1 51 5.0 50 |
||
613 | do |
||
614 | if test -r "$dir/include/lua$ver/lua.h" |
||
615 | then |
||
616 | header_dir="$dir/include/lua$ver" |
||
617 | lua_dir=$dir |
||
618 | break |
||
619 | fi |
||
620 | done |
||
621 | done |
||
622 | |||
623 | if test "x$header_dir" = "x" |
||
624 | then |
||
625 | have_lua=no |
||
626 | AC_MSG_RESULT(not found) |
||
627 | else |
||
628 | AC_MSG_RESULT($header_dir) |
||
629 | |||
630 | AC_MSG_CHECKING(the Lua version) |
||
631 | lua_ver=`$AWK AS_ESCAPE('/LUA_VERSION_NUM/ { print $NF; }' $header_dir/lua.h | sed 's/0/./')` |
||
632 | |||
633 | if test "x$lua_ver" = "x5.3" |
||
634 | then |
||
635 | # Wireshark doesn't compile with Lua 5.3 today |
||
636 | AC_MSG_RESULT($lua_ver - disabling Lua support) |
||
637 | have_lua=no |
||
638 | else |
||
639 | AC_MSG_RESULT($lua_ver) |
||
640 | |||
641 | CPPFLAGS="$CPPFLAGS -I$header_dir" |
||
642 | AC_CHECK_HEADERS(lua.h lualib.h lauxlib.h, , |
||
643 | [ |
||
644 | have_lua=no |
||
645 | ]) |
||
646 | fi |
||
647 | |||
648 | if test "x$have_lua" = "x" |
||
649 | then |
||
650 | # Set LUA_CFLAGS |
||
651 | LUA_CFLAGS="-I$header_dir" |
||
652 | |||
653 | # We have the header files and they work. Now let's check if we |
||
654 | # have the library and it works. |
||
655 | # |
||
656 | # XXX - if there's also a liblua in a directory that's |
||
657 | # already in CPPFLAGS or LDFLAGS, this won't make us find |
||
658 | # the version in the specified directory, as the compiler |
||
659 | # and/or linker will search that other directory before it |
||
660 | # searches the specified directory. |
||
661 | # |
||
662 | # XXX - lib64? |
||
663 | LDFLAGS="-L$lua_dir/lib $LDFLAGS" |
||
664 | AC_SEARCH_LIBS(luaL_openlibs, [lua-${lua_ver} lua${lua_ver} lua], |
||
665 | [ |
||
666 | LUA_LIBS="-L$lua_dir/lib $ac_cv_search_luaL_openlibs -lm" |
||
667 | have_lua=yes |
||
668 | ],[ |
||
669 | have_lua=no |
||
670 | ], -lm) |
||
671 | fi |
||
672 | fi |
||
673 | fi |
||
674 | |||
675 | AC_WIRESHARK_POP_FLAGS |
||
676 | ]) |
||
677 | |||
678 | # |
||
679 | # AC_WIRESHARK_LIBPORTAUDIO_CHECK |
||
680 | # |
||
681 | AC_DEFUN([AC_WIRESHARK_LIBPORTAUDIO_CHECK],[ |
||
682 | |||
683 | AC_WIRESHARK_PUSH_FLAGS |
||
684 | wireshark_save_LIBS="$LIBS" |
||
685 | |||
686 | if test "x$portaudio_dir" != "x" |
||
687 | then |
||
688 | # |
||
689 | # The user specified a directory in which libportaudio |
||
690 | # resides, so add the "include" subdirectory of that directory to |
||
691 | # the include file search path and the "lib" subdirectory |
||
692 | # of that directory to the library search path. |
||
693 | # |
||
694 | # XXX - if there's also a libportaudio in a directory that's |
||
695 | # already in CPPFLAGS or LDFLAGS, this won't make us find |
||
696 | # the version in the specified directory, as the compiler |
||
697 | # and/or linker will search that other directory before it |
||
698 | # searches the specified directory. |
||
699 | # |
||
700 | CPPFLAGS="$CPPFLAGS -I$portaudio_dir/include" |
||
701 | LDFLAGS="$LDFLAGS -L$portaudio_dir/lib" |
||
702 | fi |
||
703 | LIBS="-lportaudio $LIBS" |
||
704 | |||
705 | # |
||
706 | # Make sure we have "portaudio.h". If we don't, it means we probably |
||
707 | # don't have libportaudio, so don't use it. |
||
708 | # |
||
709 | AC_CHECK_HEADERS(portaudio.h,, |
||
710 | [ |
||
711 | if test "x$portaudio_dir" != "x" |
||
712 | then |
||
713 | # |
||
714 | # The user used "--with-portaudio=" to specify a directory |
||
715 | # containing libportaudio, but we didn't find the header file |
||
716 | # there; that either means they didn't specify the |
||
717 | # right directory or are confused about whether libportaudio |
||
718 | # is, in fact, installed. Report the error and give up. |
||
719 | # |
||
720 | AC_MSG_ERROR([libportaudio header not found in directory specified in --with-portaudio]) |
||
721 | else |
||
722 | if test "x$want_portaudio" = "xyes" |
||
723 | then |
||
724 | # |
||
725 | # The user tried to force us to use the library, but we |
||
726 | # couldn't find the header file; report an error. |
||
727 | # |
||
728 | AC_MSG_ERROR(Header file portaudio.h not found.) |
||
729 | else |
||
730 | # |
||
731 | # We couldn't find the header file; don't use the |
||
732 | # library, as it's probably not present. |
||
733 | # |
||
734 | want_portaudio=no |
||
735 | fi |
||
736 | fi |
||
737 | ]) |
||
738 | |||
739 | # |
||
740 | # Check whether we have the right version of portaudio |
||
741 | # |
||
742 | if test "x$want_portaudio" != "xno" |
||
743 | then |
||
744 | AC_CHECK_TYPE(PortAudioStream, |
||
745 | AC_DEFINE(PORTAUDIO_API_1, 1, [Define if we are using version of of the Portaudio library API]), |
||
746 | , |
||
747 | [#include <portaudio.h>]) |
||
748 | fi |
||
749 | |||
750 | if test "x$want_portaudio" != "xno" |
||
751 | then |
||
752 | # |
||
753 | # Well, we at least have the portaudio header file. |
||
754 | # |
||
755 | # let's check if the libs are there |
||
756 | # |
||
757 | PORTAUDIO_LIBS="" |
||
758 | PORTAUDIO_INCLUDES="" |
||
759 | |||
760 | AC_CHECK_LIB(portaudio, Pa_Initialize, |
||
761 | [ |
||
762 | if test "x$portaudio_dir" != "x" |
||
763 | then |
||
764 | # |
||
765 | # Put the "-I" and "-L" flags for portaudio |
||
766 | # into PORTAUDIO_INCLUDES and PORTAUDIO_LIBS, |
||
767 | # respectively. |
||
768 | # |
||
769 | PORTAUDIO_LIBS="-L$portaudio_dir/lib -lportaudio" |
||
770 | PORTAUDIO_INCLUDES="-I$portaudio_dir/include" |
||
771 | else |
||
772 | PORTAUDIO_LIBS="-lportaudio" |
||
773 | fi |
||
774 | AC_DEFINE(HAVE_LIBPORTAUDIO, 1, [Define to use libportaudio library]) |
||
775 | want_portaudio=yes |
||
776 | ],[ |
||
777 | # User requested --with-portaudio but it isn't available |
||
778 | if test "x$want_portaudio" = "xyes" |
||
779 | then |
||
780 | AC_MSG_ERROR(Linking with libportaudio failed.) |
||
781 | fi |
||
782 | want_portaudio=no |
||
783 | ]) |
||
784 | AC_SUBST(PORTAUDIO_LIBS) |
||
785 | AC_SUBST(PORTAUDIO_INCLUDES) |
||
786 | |||
787 | fi |
||
788 | |||
789 | LIBS="$wireshark_save_LIBS" |
||
790 | AC_WIRESHARK_POP_FLAGS |
||
791 | ]) |
||
792 | |||
793 | |||
794 | # |
||
795 | # AC_WIRESHARK_C_ARES_CHECK |
||
796 | # |
||
797 | AC_DEFUN([AC_WIRESHARK_C_ARES_CHECK], |
||
798 | [ |
||
799 | want_c_ares=defaultyes |
||
800 | |||
801 | if test "x$want_c_ares" = "xdefaultyes"; then |
||
802 | want_c_ares=yes |
||
803 | fi |
||
804 | |||
805 | if test "x$want_c_ares" = "xyes"; then |
||
806 | AC_CHECK_LIB(cares, ares_init, |
||
807 | [ |
||
808 | C_ARES_LIBS=-lcares |
||
809 | AC_DEFINE(HAVE_C_ARES, 1, [Define to use c-ares library]) |
||
810 | have_good_c_ares=yes |
||
811 | ]) |
||
812 | else |
||
813 | AC_MSG_RESULT(not required) |
||
814 | fi |
||
815 | ]) |
||
816 | |||
817 | |||
818 | # |
||
819 | # AC_WIRESHARK_LIBCAP_CHECK |
||
820 | # |
||
821 | AC_DEFUN([AC_WIRESHARK_LIBCAP_CHECK], |
||
822 | [ |
||
823 | want_libcap=defaultyes |
||
824 | |||
825 | if test "x$want_libcap" = "xdefaultyes"; then |
||
826 | want_libcap=yes |
||
827 | fi |
||
828 | |||
829 | if test "x$want_libcap" = "xyes"; then |
||
830 | AC_CHECK_LIB(cap, cap_set_flag, |
||
831 | [ |
||
832 | LIBCAP_LIBS=-lcap |
||
833 | AC_DEFINE(HAVE_LIBCAP, 1, [Define to use the libcap library]) |
||
834 | have_good_libcap=yes |
||
835 | ],, |
||
836 | ) |
||
837 | else |
||
838 | AC_MSG_RESULT(not required) |
||
839 | fi |
||
840 | ]) |
||
841 | |||
842 | |||
843 | # |
||
844 | # AC_WIRESHARK_KRB5_CHECK |
||
845 | # |
||
846 | AC_DEFUN([AC_WIRESHARK_KRB5_CHECK], |
||
847 | [ |
||
848 | AC_WIRESHARK_PUSH_FLAGS |
||
849 | wireshark_save_LIBS="$LIBS" |
||
850 | |||
851 | if test "x$krb5_dir" != "x" |
||
852 | then |
||
853 | # |
||
854 | # The user specified a directory in which kerberos resides, |
||
855 | # so add the "include" subdirectory of that directory to |
||
856 | # the include file search path and the "lib" subdirectory |
||
857 | # of that directory to the library search path. |
||
858 | # |
||
859 | # XXX - if there's also a kerberos in a directory that's |
||
860 | # already in CPPFLAGS or LDFLAGS, this won't make us find |
||
861 | # the version in the specified directory, as the compiler |
||
862 | # and/or linker will search that other directory before it |
||
863 | # searches the specified directory. |
||
864 | # |
||
865 | KRB5_CFLAGS="-I$krb5_dir/include" |
||
866 | ac_heimdal_version=`grep heimdal $krb5_dir/include/krb5.h | head -n 1 | sed 's/^.*heimdal.*$/HEIMDAL/'` |
||
867 | # MIT Kerberos moved krb5.h to krb5/krb5.h starting with release 1.5 |
||
868 | ac_mit_version_olddir=`grep 'Massachusetts' $krb5_dir/include/krb5.h | head -n 1 | sed 's/^.*Massachusetts.*$/MIT/'` |
||
869 | ac_mit_version_newdir=`grep 'Massachusetts' $krb5_dir/include/krb5/krb5.h | head -n 1 | sed 's/^.*Massachusetts.*$/MIT/'` |
||
870 | ac_krb5_version="$ac_heimdal_version$ac_mit_version_olddir$ac_mit_version_newdir" |
||
871 | if test "x$ac_krb5_version" = "xHEIMDAL" |
||
872 | then |
||
873 | KRB5_LIBS="-L$krb5_dir/lib -lkrb5 -lasn1 $SSL_LIBS -lroken -lcrypt" |
||
874 | else |
||
875 | KRB5_LIBS="-L$krb5_dir/lib -lkrb5 -lk5crypto -lcom_err" |
||
876 | fi |
||
877 | if test "x$ac_krb5_version" = "xMIT" |
||
878 | then |
||
879 | AC_DEFINE(HAVE_MIT_KERBEROS, 1, [Define to use MIT kerberos]) |
||
880 | fi |
||
881 | else |
||
882 | AC_PATH_TOOL(KRB5_CONFIG, krb5-config) |
||
883 | if test -x "$KRB5_CONFIG" |
||
884 | then |
||
885 | KRB5_CFLAGS=`"$KRB5_CONFIG" --cflags` |
||
886 | KRB5_LIBS=`"$KRB5_CONFIG" --libs` |
||
887 | # |
||
888 | # If -lcrypto is in KRB5_FLAGS, we require it to build |
||
889 | # with Heimdal/MIT. We don't want to built with it by |
||
890 | # default, due to annoying license incompatibilities |
||
891 | # between the OpenSSL license and the GPL, so: |
||
892 | # |
||
893 | # if SSL_LIBS is set to a non-empty string, we |
||
894 | # remove -lcrypto from KRB5_LIBS and replace |
||
895 | # it with SSL_LIBS; |
||
896 | # |
||
897 | # if SSL_LIBS is not set to a non-empty string |
||
898 | # we fail with an appropriate error message. |
||
899 | # |
||
900 | case "$KRB5_LIBS" in |
||
901 | *-lcrypto*) |
||
902 | if test ! -z "$SSL_LIBS" |
||
903 | then |
||
904 | KRB5_LIBS=`echo $KRB5_LIBS | sed 's/-lcrypto//'` |
||
905 | KRB5_LIBS="$KRB5_LIBS $SSL_LIBS" |
||
906 | else |
||
907 | AC_MSG_ERROR([Kerberos library requires -lcrypto, so you must specify --with-ssl]) |
||
908 | fi |
||
909 | ;; |
||
910 | esac |
||
911 | ac_krb5_version=`"$KRB5_CONFIG" --version | head -n 1 | sed -e 's/^.*heimdal.*$/HEIMDAL/' -e 's/^Kerberos .*$/MIT/' -e 's/^Solaris Kerberos .*$/MIT/'` |
||
912 | fi |
||
913 | fi |
||
914 | |||
915 | CPPFLAGS="$CPPFLAGS $KRB5_CFLAGS" |
||
916 | |||
917 | # |
||
918 | # Make sure we have "krb5.h". If we don't, it means we probably |
||
919 | # don't have kerberos, so don't use it. |
||
920 | # |
||
921 | AC_CHECK_HEADER(krb5.h,, |
||
922 | [ |
||
923 | if test "x$krb5_dir" != "x" |
||
924 | then |
||
925 | # |
||
926 | # The user used "--with-krb5=" to specify a directory |
||
927 | # containing kerberos, but we didn't find the header file |
||
928 | # there; that either means they didn't specify the |
||
929 | # right directory or are confused about whether kerberos |
||
930 | # is, in fact, installed. Report the error and give up. |
||
931 | # |
||
932 | AC_MSG_ERROR([kerberos header not found in directory specified in --with-krb5]) |
||
933 | else |
||
934 | if test "x$want_krb5" = "xyes" |
||
935 | then |
||
936 | # |
||
937 | # The user tried to force us to use the library, but we |
||
938 | # couldn't find the header file; report an error. |
||
939 | # |
||
940 | AC_MSG_ERROR(Header file krb5.h not found.) |
||
941 | else |
||
942 | # |
||
943 | # We couldn't find the header file; don't use the |
||
944 | # library, as it's probably not present. |
||
945 | # |
||
946 | KRB5_CFLAGS="" |
||
947 | KRB5_LIBS="" |
||
948 | want_krb5=no |
||
949 | AC_MSG_RESULT(No Heimdal or MIT header found - disabling dissection for some kerberos data in packet decoding) |
||
950 | fi |
||
951 | fi |
||
952 | ]) |
||
953 | |||
954 | if test "x$want_krb5" != "xno" |
||
955 | then |
||
956 | # |
||
957 | # Well, we at least have the krb5 header file. |
||
958 | # Check whether this is Heimdal or MIT. |
||
959 | # |
||
960 | AC_MSG_CHECKING(whether the Kerberos library is Heimdal or MIT) |
||
961 | if test "x$ac_krb5_version" = "xHEIMDAL" -o "x$ac_krb5_version" = "xMIT" |
||
962 | then |
||
963 | # |
||
964 | # Yes. |
||
965 | # Check whether we have krb5_kt_resolve - and whether |
||
966 | # we need to link with -lresolv when linking with |
||
967 | # the Kerberos library. |
||
968 | # |
||
969 | AC_MSG_RESULT($ac_krb5_version) |
||
970 | found_krb5_kt_resolve=no |
||
971 | for extras in "" "-lresolv" |
||
972 | do |
||
973 | LIBS="$KRB5_LIBS $extras $wireshark_save_LIBS" |
||
974 | if test -z "$extras" |
||
975 | then |
||
976 | AC_MSG_CHECKING([whether $ac_krb5_version includes krb5_kt_resolve]) |
||
977 | else |
||
978 | AC_MSG_CHECKING([whether $ac_krb5_version includes krb5_kt_resolve (linking with $extras)]) |
||
979 | fi |
||
980 | AC_TRY_LINK( |
||
981 | [ |
||
982 | ], |
||
983 | [ |
||
984 | krb5_kt_resolve(); |
||
985 | ], |
||
986 | [ |
||
987 | # |
||
988 | # We found "krb5_kt_resolve()". |
||
989 | # |
||
990 | AC_MSG_RESULT(yes) |
||
991 | if test -n "$extras"; then |
||
992 | KRB5_LIBS="$KRB5_LIBS $extras" |
||
993 | fi |
||
994 | AC_DEFINE(HAVE_KERBEROS, 1, [Define to use kerberos]) |
||
995 | if test "x$ac_krb5_version" = "xHEIMDAL" |
||
996 | then |
||
997 | AC_DEFINE(HAVE_HEIMDAL_KERBEROS, 1, [Define to use heimdal kerberos]) |
||
998 | elif test "x$ac_krb5_version" = "xMIT" |
||
999 | then |
||
1000 | AC_DEFINE(HAVE_MIT_KERBEROS, 1, [Define to use MIT kerberos]) |
||
1001 | fi |
||
1002 | found_krb5_kt_resolve=yes |
||
1003 | break |
||
1004 | ], |
||
1005 | [ |
||
1006 | AC_MSG_RESULT(no) |
||
1007 | ]) |
||
1008 | done |
||
1009 | if test "$found_krb5_kt_resolve" = no |
||
1010 | then |
||
1011 | # |
||
1012 | # We didn't find "krb5_kt_resolve()" in the |
||
1013 | # Kerberos library, even when we tried linking |
||
1014 | # with -lresolv; we can't link with kerberos. |
||
1015 | # |
||
1016 | if test "x$want_krb5" = "xyes" |
||
1017 | then |
||
1018 | # |
||
1019 | # The user tried to force us to use the library, |
||
1020 | # but we can't do so; report an error. |
||
1021 | # |
||
1022 | AC_MSG_ERROR(Usable $ac_krb5_version not found) |
||
1023 | else |
||
1024 | # |
||
1025 | # Don't use |
||
1026 | # |
||
1027 | AC_MSG_RESULT(Usable $ac_krb5_version not found - disabling dissection for some kerberos data in packet decoding) |
||
1028 | KRB5_CFLAGS="" |
||
1029 | KRB5_LIBS="" |
||
1030 | want_krb5=no |
||
1031 | fi |
||
1032 | else |
||
1033 | # |
||
1034 | # We can link with Kerberos; see whether krb5.h |
||
1035 | # defines KEYTYPE_ARCFOUR_56 (where "defines" means |
||
1036 | # "as a #define or as an enum member). |
||
1037 | # |
||
1038 | AC_MSG_CHECKING([whether krb5.h defines KEYTYPE_ARCFOUR_56]) |
||
1039 | AC_COMPILE_IFELSE( |
||
1040 | [ |
||
1041 | AC_LANG_SOURCE( |
||
1042 | [[ |
||
1043 | #include <krb5.h> |
||
1044 | #include <stdio.h> |
||
1045 | |||
1046 | main() |
||
1047 | { |
||
1048 | printf("%u\n", KEYTYPE_ARCFOUR_56); |
||
1049 | } |
||
1050 | ]]) |
||
1051 | ], |
||
1052 | [ |
||
1053 | AC_MSG_RESULT(yes) |
||
1054 | AC_DEFINE(HAVE_KEYTYPE_ARCFOUR_56, 1, [Define if krb5.h defines KEYTYPE_ARCFOUR_56]) |
||
1055 | ], |
||
1056 | [ |
||
1057 | AC_MSG_RESULT(no) |
||
1058 | ]) |
||
1059 | fi |
||
1060 | else |
||
1061 | # |
||
1062 | # It's not Heimdal or MIT. |
||
1063 | # |
||
1064 | AC_MSG_RESULT(no) |
||
1065 | if test "x$want_krb5" = "xyes" |
||
1066 | then |
||
1067 | # |
||
1068 | # The user tried to force us to use the library, |
||
1069 | # but we can't do so; report an error. |
||
1070 | # |
||
1071 | AC_MSG_ERROR(Kerberos not found) |
||
1072 | else |
||
1073 | # |
||
1074 | # Don't use. |
||
1075 | # |
||
1076 | AC_MSG_RESULT(Kerberos not found - disabling dissection for some kerberos data in packet decoding) |
||
1077 | KRB5_CFLAGS="" |
||
1078 | KRB5_LIBS="" |
||
1079 | want_krb5=no |
||
1080 | fi |
||
1081 | fi |
||
1082 | else |
||
1083 | # |
||
1084 | # The user asked us not to use Kerberos, or they didn't |
||
1085 | # say whether they wanted us to use it but we found |
||
1086 | # that we couldn't. |
||
1087 | # |
||
1088 | KRB5_CFLAGS="" |
||
1089 | KRB5_LIBS="" |
||
1090 | want_krb5=no |
||
1091 | fi |
||
1092 | AC_SUBST(KRB5_CFLAGS) |
||
1093 | AC_SUBST(KRB5_LIBS) |
||
1094 | |||
1095 | LIBS="$wireshark_save_LIBS" |
||
1096 | AC_WIRESHARK_POP_FLAGS |
||
1097 | ]) |
||
1098 | |||
1099 | # |
||
1100 | # AC_WIRESHARK_GEOIP_CHECK |
||
1101 | # |
||
1102 | AC_DEFUN([AC_WIRESHARK_GEOIP_CHECK], |
||
1103 | [ |
||
1104 | want_geoip=defaultyes |
||
1105 | |||
1106 | if test "x$want_geoip" = "xdefaultyes"; then |
||
1107 | want_geoip=yes |
||
1108 | fi |
||
1109 | |||
1110 | if test "x$want_geoip" = "xyes"; then |
||
1111 | AC_CHECK_LIB(GeoIP, GeoIP_new, |
||
1112 | [ |
||
1113 | GEOIP_LIBS=-lGeoIP |
||
1114 | AC_DEFINE(HAVE_GEOIP, 1, [Define to use GeoIP library]) |
||
1115 | have_good_geoip=yes |
||
1116 | ],, |
||
1117 | ) |
||
1118 | if test "x$have_good_geoip" = "xyes"; then |
||
1119 | AC_CHECK_LIB(GeoIP, GeoIP_country_name_by_ipnum_v6, |
||
1120 | [ |
||
1121 | AC_DEFINE(HAVE_GEOIP_V6, 1, [Define if GeoIP supports IPv6 (GeoIP 1.4.5 and later)]) |
||
1122 | ],, |
||
1123 | ) |
||
1124 | fi |
||
1125 | else |
||
1126 | AC_MSG_RESULT(not required) |
||
1127 | fi |
||
1128 | ]) |
||
1129 | |||
1130 | # |
||
1131 | # AC_WIRESHARK_LIBSSH_CHECK |
||
1132 | # |
||
1133 | AC_DEFUN([AC_WIRESHARK_LIBSSH_CHECK], |
||
1134 | [ |
||
1135 | want_libssh=defaultyes |
||
1136 | |||
1137 | if test "x$want_libssh" = "xdefaultyes"; then |
||
1138 | want_libssh=yes |
||
1139 | fi |
||
1140 | |||
1141 | if test "x$want_libssh" = "xyes"; then |
||
1142 | AC_CHECK_LIB(ssh, ssh_new, |
||
1143 | [ |
||
1144 | LIBSSH_LIBS=-lssh |
||
1145 | AC_DEFINE(HAVE_LIBSSH, 1, [Define to use libssh library]) |
||
1146 | have_good_libssh=yes |
||
1147 | ],, |
||
1148 | ) |
||
1149 | AC_MSG_CHECKING([whether libssh >= 0.6.0 for sshdump, ciscodump]) |
||
1150 | PKG_CHECK_EXISTS([libssh >= 0.6.0], |
||
1151 | [ |
||
1152 | AC_MSG_RESULT(yes) |
||
1153 | AC_DEFINE(HAVE_LIBSSH_POINTSIX, 1, [Defined if libssh >= 0.6.0]) |
||
1154 | have_libssh_pointsix=yes |
||
1155 | ], |
||
1156 | [AC_MSG_RESULT(no)] |
||
1157 | ) |
||
1158 | if test "x$have_libssh_pointsix" = "xyes"; then |
||
1159 | # ssh_userauth_agent exists only >= 0.6.0, but not on Windows |
||
1160 | # so check explicitly |
||
1161 | AC_CHECK_LIB(ssh, ssh_userauth_agent, |
||
1162 | [ |
||
1163 | AC_DEFINE(HAVE_SSH_USERAUTH_AGENT, 1, [Libssh library has ssh_userauth_agent]) |
||
1164 | have_ssh_userauth_agent=yes |
||
1165 | ],, |
||
1166 | ) |
||
1167 | fi |
||
1168 | else |
||
1169 | AC_MSG_RESULT(not required) |
||
1170 | fi |
||
1171 | ]) |
||
1172 | |||
1173 | #AC_WIRESHARK_LDFLAGS_CHECK |
||
1174 | # |
||
1175 | # $1 : ldflag(s) to test |
||
1176 | # |
||
1177 | # We attempt to compile and link a test program with the specified linker |
||
1178 | # flag. The defined flag is added to LDFLAGS only if the link succeeds. |
||
1179 | # |
||
1180 | AC_DEFUN([AC_WIRESHARK_LDFLAGS_CHECK], |
||
1181 | [LD_OPTION="$1" |
||
1182 | AC_MSG_CHECKING(whether we can add $LD_OPTION to LDFLAGS) |
||
1183 | AC_WIRESHARK_PUSH_FLAGS |
||
1184 | LDFLAGS="$LDFLAGS $LD_OPTION" |
||
1185 | can_add_to_ldflags="" |
||
1186 | AC_LINK_IFELSE( |
||
1187 | [ |
||
1188 | AC_LANG_SOURCE([[main() { return; }]]) |
||
1189 | ], |
||
1190 | [ |
||
1191 | AC_MSG_RESULT(yes) |
||
1192 | AX_APPEND_FLAG([$LD_OPTION], [WS_LDFLAGS]) |
||
1193 | can_add_to_ldflags=yes |
||
1194 | ], |
||
1195 | [ |
||
1196 | AC_MSG_RESULT(no) |
||
1197 | can_add_to_ldflags=no |
||
1198 | ]) |
||
1199 | AC_WIRESHARK_POP_FLAGS |
||
1200 | ]) |
||
1201 | |||
1202 | dnl |
||
1203 | dnl Check whether, if you pass an unknown warning option to the |
||
1204 | dnl compiler, it fails or just prints a warning message and succeeds. |
||
1205 | dnl Set ac_wireshark_unknown_warning_option_error to the appropriate flag |
||
1206 | dnl to force an error if it would otherwise just print a warning message |
||
1207 | dnl and succeed. |
||
1208 | dnl |
||
1209 | AC_DEFUN([AC_WIRESHARK_CHECK_UNKNOWN_WARNING_OPTION_ERROR], |
||
1210 | [ |
||
1211 | AC_MSG_CHECKING([whether the compiler fails when given an unknown warning option]) |
||
1212 | AC_WIRESHARK_PUSH_FLAGS |
||
1213 | CFLAGS="$CFLAGS -Wxyzzy-this-will-never-succeed-xyzzy" |
||
1214 | AC_TRY_COMPILE( |
||
1215 | [], |
||
1216 | [return 0], |
||
1217 | [ |
||
1218 | AC_MSG_RESULT([no, adding -Werror=unknown-warning-option]) |
||
1219 | # |
||
1220 | # We're assuming this is clang, where |
||
1221 | # -Werror=unknown-warning-option is the appropriate |
||
1222 | # option to force the compiler to fail. |
||
1223 | # |
||
1224 | ac_wireshark_unknown_warning_option_error="-Werror=unknown-warning-option" |
||
1225 | ], |
||
1226 | [ |
||
1227 | AC_MSG_RESULT([yes]) |
||
1228 | ]) |
||
1229 | AC_WIRESHARK_POP_FLAGS |
||
1230 | ]) |
||
1231 | |||
1232 | dnl |
||
1233 | dnl Check whether, if you pass a valid-for-C-but-not-C++ option to the |
||
1234 | dnl compiler, it fails or just prints a warning message and succeeds. |
||
1235 | dnl Set ac_wireshark_non_cxx_warning_option_error to the appropriate flag |
||
1236 | dnl to force an error if it would otherwise just print a warning message |
||
1237 | dnl and succeed. |
||
1238 | dnl |
||
1239 | AC_DEFUN([AC_WIRESHARK_CHECK_NON_CXX_WARNING_OPTION_ERROR], |
||
1240 | [ |
||
1241 | AC_MSG_CHECKING([whether the compiler fails when given an warning option not supported for C++]) |
||
1242 | # |
||
1243 | # Some C+ compilers warn about -Wmissing-prototypes, and some warn |
||
1244 | # about -Wmissing-declarations. Check both. |
||
1245 | # |
||
1246 | AC_LANG_PUSH(C++) |
||
1247 | AC_WIRESHARK_PUSH_FLAGS |
||
1248 | save_CXXFLAGS="$CXXFLAGS" |
||
1249 | for flag in -Wmissing-prototypes -Wmissing-declarations; do |
||
1250 | CXXFLAGS="$save_CXXFLAGS $flag" |
||
1251 | AC_TRY_COMPILE( |
||
1252 | [], |
||
1253 | [return 0], |
||
1254 | [ |
||
1255 | # |
||
1256 | # We're assuming this is g++, where -Werror is the |
||
1257 | # appropriate option to force the compiler to fail. |
||
1258 | # Check whether it fails with -Werror. |
||
1259 | # |
||
1260 | # NOTE: it's important to put -Werror *before* |
||
1261 | # the flag, otherwise, when it sees the flag, |
||
1262 | # it doesn't yet know that warnings should be |
||
1263 | # treated as errors, and doesn't treat the |
||
1264 | # "that's C-only" warning as an error. |
||
1265 | # |
||
1266 | CXXFLAGS="$save_CXXFLAGS -Werror $flag" |
||
1267 | AC_TRY_COMPILE( |
||
1268 | [], |
||
1269 | [return 0], |
||
1270 | [ |
||
1271 | # |
||
1272 | # No, so this option is actually OK |
||
1273 | # with our C++ compiler. |
||
1274 | # |
||
1275 | # (We need an empty command here to |
||
1276 | # prevent some versions of autoconf |
||
1277 | # from generating a script with an |
||
1278 | # empty "then" clause for an if statement.) |
||
1279 | # |
||
1280 | : |
||
1281 | ], |
||
1282 | [ |
||
1283 | # |
||
1284 | # Yes, so we need -Werror for the tests. |
||
1285 | # |
||
1286 | ac_wireshark_non_cxx_warning_option_error="-Werror" |
||
1287 | break |
||
1288 | ]) |
||
1289 | ]) |
||
1290 | done |
||
1291 | AC_WIRESHARK_POP_FLAGS |
||
1292 | AC_LANG_POP |
||
1293 | if test x$ac_wireshark_non_cxx_warning_option_error = x; then |
||
1294 | AC_MSG_RESULT([yes]) |
||
1295 | else |
||
1296 | AC_MSG_RESULT([no, adding -Werror]) |
||
1297 | fi |
||
1298 | ]) |
||
1299 | |||
1300 | # |
||
1301 | # AC_WIRESHARK_COMPILER_FLAGS_CHECK |
||
1302 | # |
||
1303 | # $1 : flags to test |
||
1304 | # $2 : if supplied, C for C-only flags, CXX for C++-only flags |
||
1305 | # $3 : if supplied, a program to try to compile with the flag |
||
1306 | # and, if the compile fails when -Werror is turned on, |
||
1307 | # we don't add the flag - used for warning flags that |
||
1308 | # issue incorrect or non-useful warnings with some |
||
1309 | # compiler versions |
||
1310 | # $4 : must be supplied if $3 is supplied - a message describing |
||
1311 | # for what the test program is testing |
||
1312 | # |
||
1313 | # The macro first determines if the compiler supports GCC-style flags. |
||
1314 | # Then it attempts to compile with the defined cflags. The defined |
||
1315 | # flags are added to WS_CHECKED_CFLAGS only if the compilation succeeds. |
||
1316 | # CFLAGS remains unchanged. can_add_to_cflags is set to "no" when the |
||
1317 | # flag is checked but unavailable. (Like-wise for CXXFLAGS.) |
||
1318 | # |
||
1319 | # We do this because not all such options are necessarily supported by |
||
1320 | # the version of the particular compiler we're using. |
||
1321 | # |
||
1322 | AC_DEFUN([AC_WIRESHARK_COMPILER_FLAGS_CHECK], |
||
1323 | [GCC_OPTION="$1" |
||
1324 | can_add_to_cflags="" |
||
1325 | can_add_to_cxxflags="" |
||
1326 | if test "x$ac_supports_gcc_flags" = "xyes" ; then |
||
1327 | if test "$2" != CXX ; then |
||
1328 | # |
||
1329 | # Not C++-only; if this can be added to the C compiler flags, add them. |
||
1330 | # |
||
1331 | # If the option begins with "-W", add |
||
1332 | # $ac_wireshark_unknown_warning_option_error to make sure that |
||
1333 | # we'll get an error if it's an unknown warning option; not all |
||
1334 | # compilers treat unknown warning options as errors (I'm looking at |
||
1335 | # you, clang). |
||
1336 | # |
||
1337 | # If the option begins with "-f" or "-m", add -Werror to make sure |
||
1338 | # that we'll get an error if we get "argument unused during compilation" |
||
1339 | # warnings, as those will either cause a failure for files compiled |
||
1340 | # with -Werror or annoying noise for files compiled without it. |
||
1341 | # (Yeah, you, clang.) |
||
1342 | # |
||
1343 | AC_MSG_CHECKING(whether we can add $GCC_OPTION to CFLAGS) |
||
1344 | AC_WIRESHARK_PUSH_FLAGS |
||
1345 | if expr "x$GCC_OPTION" : "x-W.*" >/dev/null |
||
1346 | then |
||
1347 | CFLAGS="$CFLAGS $ac_wireshark_unknown_warning_option_error $GCC_OPTION" |
||
1348 | elif expr "x$GCC_OPTION" : "x-f.*" >/dev/null |
||
1349 | then |
||
1350 | CFLAGS="$CFLAGS -Werror $GCC_OPTION" |
||
1351 | elif expr "x$GCC_OPTION" : "x-m.*" >/dev/null |
||
1352 | then |
||
1353 | CFLAGS="$CFLAGS -Werror $GCC_OPTION" |
||
1354 | else |
||
1355 | CFLAGS="$CFLAGS $GCC_OPTION" |
||
1356 | fi |
||
1357 | AC_COMPILE_IFELSE( |
||
1358 | [ |
||
1359 | AC_LANG_SOURCE([[int foo;]]) |
||
1360 | ], |
||
1361 | [ |
||
1362 | AC_MSG_RESULT(yes) |
||
1363 | can_add_to_cflags=yes |
||
1364 | # |
||
1365 | # OK, do we have a test program? If so, check |
||
1366 | # whether it fails with this option and -Werror, |
||
1367 | # and, if so, don't include it. |
||
1368 | # |
||
1369 | # We test arg 4 here because arg 3 is a program which |
||
1370 | # could contain quotes (breaking the comparison). |
||
1371 | # |
||
1372 | if test "x$4" != "x" ; then |
||
1373 | CFLAGS="$CFLAGS -Werror" |
||
1374 | AC_MSG_CHECKING(whether $GCC_OPTION $4) |
||
1375 | AC_COMPILE_IFELSE( |
||
1376 | [AC_LANG_SOURCE($3)], |
||
1377 | [ |
||
1378 | AC_MSG_RESULT(no) |
||
1379 | # |
||
1380 | # Remove "force an error for a warning" options, if we |
||
1381 | # added them, by setting CFLAGS to the saved value plus |
||
1382 | # just the new option. |
||
1383 | # |
||
1384 | AX_APPEND_FLAG([$GCC_OPTION], [WS_CFLAGS]) |
||
1385 | if test "$CC" = "$CC_FOR_BUILD"; then |
||
1386 | # |
||
1387 | # We're building the build tools with the same compiler |
||
1388 | # with which we're building Wireshark, so add the flags |
||
1389 | # to the flags for that compiler as well. |
||
1390 | # |
||
1391 | AX_APPEND_FLAG([$GCC_OPTION], [WS_CFLAGS_FOR_BUILD]) |
||
1392 | fi |
||
1393 | ], |
||
1394 | [ |
||
1395 | AC_MSG_RESULT(yes) |
||
1396 | ]) |
||
1397 | else |
||
1398 | # |
||
1399 | # Remove "force an error for a warning" options, if we |
||
1400 | # added them, by setting CFLAGS to the saved value plus |
||
1401 | # just the new option. |
||
1402 | # |
||
1403 | AX_APPEND_FLAG([$GCC_OPTION], [WS_CFLAGS]) |
||
1404 | if test "$CC" = "$CC_FOR_BUILD"; then |
||
1405 | # |
||
1406 | # We're building the build tools with the same compiler |
||
1407 | # with which we're building Wireshark, so add the flags |
||
1408 | # to the flags for that compiler as well. |
||
1409 | # |
||
1410 | AX_APPEND_FLAG([$GCC_OPTION], [WS_CFLAGS_FOR_BUILD]) |
||
1411 | fi |
||
1412 | fi |
||
1413 | ], |
||
1414 | [ |
||
1415 | AC_MSG_RESULT(no) |
||
1416 | can_add_to_cflags=no |
||
1417 | ]) |
||
1418 | AC_WIRESHARK_POP_FLAGS |
||
1419 | fi |
||
1420 | # |
||
1421 | # Did we find a C++ compiler? |
||
1422 | # |
||
1423 | if test "x$CXX" != "x" ; then |
||
1424 | # |
||
1425 | # Yes. Is this option only for the C compiler? |
||
1426 | # |
||
1427 | if test "$2" != C ; then |
||
1428 | # |
||
1429 | # Not C-only; if this option can be added to the C++ compiler |
||
1430 | # options, add it. |
||
1431 | # |
||
1432 | # If the option begins with "-W", add |
||
1433 | # $ac_wireshark_unknown_warning_option_error, as per the above, and |
||
1434 | # also add $ac_wireshark_non_cxx_warning_option_error, because at |
||
1435 | # lease some versions of g++ whine about -Wmissing-prototypes, the |
||
1436 | # fact that at least one of those versions refuses to warn about |
||
1437 | # function declarations without an earlier declaration nonwithstanding; |
||
1438 | # perhaps there's a reason not to warn about that with C++ even though |
||
1439 | # warning about it can be a Good Idea with C, but it's not obvious to |
||
1440 | # me). |
||
1441 | # |
||
1442 | # If the option begins with "-f" or "-m", add -Werror to make sure |
||
1443 | # that we'll get an error if we get "argument unused during compilation" |
||
1444 | # warnings, as those will either cause a failure for files compiled |
||
1445 | # with -Werror or annoying noise for files compiled without it. |
||
1446 | # (Yeah, you, clang++.) |
||
1447 | # |
||
1448 | AC_MSG_CHECKING(whether we can add $GCC_OPTION to CXXFLAGS) |
||
1449 | AC_WIRESHARK_PUSH_FLAGS |
||
1450 | if expr "x$GCC_OPTION" : "x-W.*" >/dev/null |
||
1451 | then |
||
1452 | CXXFLAGS="$CXXFLAGS $ac_wireshark_unknown_warning_option_error $ac_wireshark_non_cxx_warning_option_error $GCC_OPTION" |
||
1453 | elif expr "x$GCC_OPTION" : "x-f.*" >/dev/null |
||
1454 | then |
||
1455 | CXXFLAGS="$CXXFLAGS -Werror $GCC_OPTION" |
||
1456 | elif expr "x$GCC_OPTION" : "x-m.*" >/dev/null |
||
1457 | then |
||
1458 | CXXFLAGS="$CXXFLAGS -Werror $GCC_OPTION" |
||
1459 | else |
||
1460 | CXXFLAGS="$CXXFLAGS $GCC_OPTION" |
||
1461 | fi |
||
1462 | AC_LANG_PUSH([C++]) |
||
1463 | AC_COMPILE_IFELSE( |
||
1464 | [ |
||
1465 | AC_LANG_SOURCE([[int foo;]]) |
||
1466 | ], |
||
1467 | [ |
||
1468 | AC_MSG_RESULT(yes) |
||
1469 | can_add_to_cxxflags=yes |
||
1470 | # |
||
1471 | # OK, do we have a test program? If so, check |
||
1472 | # whether it fails with this option and -Werror, |
||
1473 | # and, if so, don't include it. |
||
1474 | # |
||
1475 | # We test arg 4 here because arg 3 is a program which |
||
1476 | # could contain quotes (breaking the comparison). |
||
1477 | # |
||
1478 | if test "x$4" != "x" ; then |
||
1479 | CXXFLAGS="$CXXFLAGS -Werror" |
||
1480 | AC_MSG_CHECKING(whether $GCC_OPTION $4) |
||
1481 | AC_COMPILE_IFELSE( |
||
1482 | [AC_LANG_SOURCE($3)], |
||
1483 | [ |
||
1484 | AC_MSG_RESULT(no) |
||
1485 | # |
||
1486 | # Remove "force an error for a warning" options, if we |
||
1487 | # added them, by setting CXXFLAGS to the saved value plus |
||
1488 | # just the new option. |
||
1489 | # |
||
1490 | AX_APPEND_FLAG([$GCC_OPTION], [WS_CXXFLAGS]) |
||
1491 | ], |
||
1492 | [ |
||
1493 | AC_MSG_RESULT(yes) |
||
1494 | ]) |
||
1495 | else |
||
1496 | # |
||
1497 | # Remove "force an error for a warning" options, if we |
||
1498 | # added them, by setting CXXFLAGS to the saved value plus |
||
1499 | # just the new option. |
||
1500 | # |
||
1501 | AX_APPEND_FLAG([$GCC_OPTION], [WS_CXXFLAGS]) |
||
1502 | fi |
||
1503 | ], |
||
1504 | [ |
||
1505 | AC_MSG_RESULT(no) |
||
1506 | can_add_to_cxxflags=no |
||
1507 | ]) |
||
1508 | AC_WIRESHARK_POP_FLAGS |
||
1509 | AC_LANG_POP([C++]) |
||
1510 | fi |
||
1511 | if test "(" "$can_add_to_cflags" = "yes" -a "$can_add_to_cxxflags" = "no" ")" \ |
||
1512 | -o "(" "$can_add_to_cflags" = "no" -a "$can_add_to_cxxflags" = "yes" ")" |
||
1513 | then |
||
1514 | # |
||
1515 | # Confusingly, some C++ compilers like -Wmissing-prototypes but |
||
1516 | # don't like -Wmissing-declarations and others like |
||
1517 | # -Wmissing-declarations but don't like -Wmissing-prototypes, |
||
1518 | # the fact that the corresponding C compiler likes both. Don't |
||
1519 | # warn about them. |
||
1520 | # |
||
1521 | if test "(" x$GCC_OPTION != x-Wmissing-prototypes ")" \ |
||
1522 | -a "(" x$GCC_OPTION != x-Wmissing-declarations ")" |
||
1523 | then |
||
1524 | AC_MSG_WARN([$CC and $CXX appear to be a mismatched pair]) |
||
1525 | fi |
||
1526 | fi |
||
1527 | fi |
||
1528 | fi |
||
1529 | ]) |
||
1530 | |||
1531 | # AC_WIRESHARK_GCC_FORTIFY_SOURCE_CHECK |
||
1532 | # |
||
1533 | # Checks if '-D_FORTIFY_SOURCE=...' is OK to use in CPPFLAGS. |
||
1534 | # Use '-D_FORTIFY_SOURCE=...' in CPPFLAGS only if the GCC 'optimization level' is > 0. |
||
1535 | # The use of '-D_FORTIFY_SOURCE=...' will cause a warning with at least some versions |
||
1536 | # of glibc if the GCC "optimization level" is 0 (default or -O or -O0) |
||
1537 | # when using GCC to compile a source file which references the macro definition. |
||
1538 | # |
||
1539 | # See: http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html |
||
1540 | # See: http://sourceware.org/bugzilla/show_bug.cgi?id=13979 |
||
1541 | # |
||
1542 | # We'll use '-D_FORTIFY_SOURCE=2' only if there's no warning; Among other things this means |
||
1543 | # that the use of '-D_FORTIFY_SOURCE=2' with '-Werror' and '-O0' won't cause |
||
1544 | # the compiler to stop on error. |
||
1545 | # Assumption: CFLAGS already contains whatever optimization option including none) is |
||
1546 | # to be used. |
||
1547 | # |
||
1548 | |||
1549 | AC_DEFUN([AC_WIRESHARK_GCC_FORTIFY_SOURCE_CHECK], |
||
1550 | [ |
||
1551 | if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then |
||
1552 | AC_MSG_CHECKING([whether -D_FORTIFY_SOURCE=2 can be used (without generating a warning)]) |
||
1553 | AC_WIRESHARK_PUSH_FLAGS |
||
1554 | CFLAGS="$CFLAGS -Werror" |
||
1555 | CPPFLAGS="$CPPFLAGS -D_FORTIFY_SOURCE=2" |
||
1556 | AC_COMPILE_IFELSE([ |
||
1557 | AC_LANG_SOURCE([[ |
||
1558 | #include <stdio.h> |
||
1559 | int foo; |
||
1560 | ]])], |
||
1561 | [ |
||
1562 | AC_MSG_RESULT(yes) |
||
1563 | AX_APPEND_FLAG([-D_FORTIFY_SOURCE=2], [WS_CPPFLAGS]) |
||
1564 | ], |
||
1565 | [ |
||
1566 | AC_MSG_RESULT(no) |
||
1567 | ]) |
||
1568 | AC_WIRESHARK_POP_FLAGS |
||
1569 | fi |
||
1570 | ]) |
||
1571 | |||
1572 | # |
||
1573 | # AC_WIRESHARK_GCC_SYSTEM_INCLUDE |
||
1574 | # |
||
1575 | # Replace -I include flag for -isystem in FLAGS argument |
||
1576 | # |
||
1577 | AC_DEFUN([AC_WIRESHARK_GCC_SYSTEM_INCLUDE], |
||
1578 | [ |
||
1579 | if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then |
||
1580 | $1=`echo " $$1" \ |
||
1581 | | sed -e 's/ *-I *\// -isystem\//g' -e 's/^ *//'` |
||
1582 | fi |
||
1583 | ]) |
||
1584 | |||
1585 | # |
||
1586 | # PKG_WIRESHARK_CHECK_SYSTEM_MODULES |
||
1587 | # |
||
1588 | AC_DEFUN([PKG_WIRESHARK_CHECK_SYSTEM_MODULES], |
||
1589 | [ |
||
1590 | PKG_CHECK_MODULES($@) |
||
1591 | AC_WIRESHARK_GCC_SYSTEM_INCLUDE($1_CFLAGS) |
||
1592 | ]) |
||
1593 | |||
1594 | # Based on AM_PATH_GTK in gtk-2.0.m4. |
||
1595 | |||
1596 | dnl AC_WIRESHARK_QT_MODULE_CHECK_WITH_QT_VERSION([MODULE, MINIMUM-VERSION, |
||
1597 | dnl REQUESTED-MAJOR_VERSION, [ACTION-IF-FOUND, [ACTION-IF-NOT-FOUND]]]) |
||
1598 | dnl Test for a particular Qt module, for a particular Qt major version, |
||
1599 | dnl and, if we find it add the flags and libraries for it to Qt_CFLAGS |
||
1600 | dnl and Qt_LIBS. |
||
1601 | dnl |
||
1602 | AC_DEFUN([AC_WIRESHARK_QT_MODULE_CHECK_WITH_QT_VERSION], |
||
1603 | [ |
||
1604 | case "$3" in |
||
1605 | |||
1606 | 4) |
||
1607 | # |
||
1608 | # Check for Qt 4. |
||
1609 | # |
||
1610 | modprefix="Qt" |
||
1611 | # |
||
1612 | # Version of the module we're checking for. |
||
1613 | # Default to 4.0.0. |
||
1614 | # |
||
1615 | min_qt_version=ifelse([$2], ,4.0.0,$2) |
||
1616 | ;; |
||
1617 | |||
1618 | 5) |
||
1619 | # |
||
1620 | # Check for Qt 5. |
||
1621 | # |
||
1622 | modprefix="Qt5" |
||
1623 | # |
||
1624 | # Version of the module we're checking for. |
||
1625 | # Default to 5.0.0. |
||
1626 | # |
||
1627 | min_qt_version=5.0.0 |
||
1628 | ;; |
||
1629 | |||
1630 | *) |
||
1631 | AC_MSG_ERROR([Qt version $3 is not a known Qt version]) |
||
1632 | ;; |
||
1633 | esac |
||
1634 | |||
1635 | pkg_config_module="${modprefix}$1" |
||
1636 | AC_MSG_CHECKING(for $pkg_config_module - version >= $min_qt_version) |
||
1637 | if $PKG_CONFIG --atleast-version $min_qt_version $pkg_config_module; then |
||
1638 | mod_version=`$PKG_CONFIG --modversion $pkg_config_module` |
||
1639 | AC_MSG_RESULT(yes (version $mod_version)) |
||
1640 | mod_cflags=`$PKG_CONFIG --cflags $pkg_config_module` |
||
1641 | AC_WIRESHARK_GCC_SYSTEM_INCLUDE(mod_cflags) |
||
1642 | Qt_CFLAGS="$Qt_CFLAGS $mod_cflags" |
||
1643 | Qt_LIBS="$Qt_LIBS `$PKG_CONFIG --libs $pkg_config_module`" |
||
1644 | # Run Action-If-Found |
||
1645 | ifelse([$4], , :, [$4]) |
||
1646 | else |
||
1647 | AC_MSG_RESULT(no) |
||
1648 | # Run Action-If-Not-Found |
||
1649 | ifelse([$5], , :, [$5]) |
||
1650 | fi |
||
1651 | ]) |
||
1652 | |||
1653 | dnl AC_WIRESHARK_QT_MODULE_CHECK([MODULE, MINIMUM-VERSION, |
||
1654 | dnl REQUESTED-MAJOR_VERSION, [ACTION-IF-FOUND, [ACTION-IF-NOT-FOUND]]]) |
||
1655 | dnl Test for a particular Qt module and add the flags and libraries |
||
1656 | dnl for it to Qt_CFLAGS and Qt_LIBS. |
||
1657 | dnl |
||
1658 | AC_DEFUN([AC_WIRESHARK_QT_MODULE_CHECK], |
||
1659 | [ |
||
1660 | # |
||
1661 | # Prior to Qt 5, modules were named QtXXX. |
||
1662 | # In Qt 5, they're named Qt5XXX. |
||
1663 | # This will need to change to handle future major Qt releases. |
||
1664 | # |
||
1665 | case "$3" in |
||
1666 | |||
1667 | yes|unspecified) |
||
1668 | # |
||
1669 | # Check for all versions of Qt we support. |
||
1670 | # Try the Qt 5 version first. |
||
1671 | # |
||
1672 | versions="5 4" |
||
1673 | ;; |
||
1674 | |||
1675 | 4) |
||
1676 | # |
||
1677 | # Check for Qt 4. |
||
1678 | # |
||
1679 | versions="4" |
||
1680 | ;; |
||
1681 | |||
1682 | 5) |
||
1683 | # |
||
1684 | # Check for Qt 5. |
||
1685 | # |
||
1686 | versions="5" |
||
1687 | ;; |
||
1688 | |||
1689 | *) |
||
1690 | AC_MSG_ERROR([Qt version $3 is not a known Qt version]) |
||
1691 | ;; |
||
1692 | esac |
||
1693 | |||
1694 | for version in $versions |
||
1695 | do |
||
1696 | AC_WIRESHARK_QT_MODULE_CHECK_WITH_QT_VERSION($1, $2, |
||
1697 | $version, [foundit=yes], [foundit=no]) |
||
1698 | if test "x$foundit" = "xyes"; then |
||
1699 | break |
||
1700 | fi |
||
1701 | done |
||
1702 | |||
1703 | if test "x$foundit" = "xyes"; then |
||
1704 | # Remember which version of Qt we found |
||
1705 | qt_version=$version |
||
1706 | # Run Action-If-Found |
||
1707 | ifelse([$4], , :, [$4]) |
||
1708 | else |
||
1709 | # Run Action-If-Not-Found |
||
1710 | ifelse([$5], , :, [$5]) |
||
1711 | fi |
||
1712 | ]) |
||
1713 | |||
1714 | AC_DEFUN([AC_WIRESHARK_QT_ADD_PIC_IF_NEEDED], |
||
1715 | [ |
||
1716 | AC_LANG_PUSH([C++]) |
||
1717 | AC_WIRESHARK_PUSH_FLAGS |
||
1718 | CPPFLAGS="$CPPFLAGS $Qt_CFLAGS" |
||
1719 | AC_MSG_CHECKING([whether Qt works without -fPIC]) |
||
1720 | AC_PREPROC_IFELSE( |
||
1721 | [AC_LANG_SOURCE([[#include <QtCore>]])], |
||
1722 | [AC_MSG_RESULT(yes)], |
||
1723 | [ |
||
1724 | AC_MSG_RESULT(no) |
||
1725 | AC_MSG_CHECKING([whether Qt works with -fPIC]) |
||
1726 | CPPFLAGS="$CPPFLAGS -fPIC" |
||
1727 | AC_PREPROC_IFELSE( |
||
1728 | [AC_LANG_SOURCE([[#include <QtCore>]])], |
||
1729 | [ |
||
1730 | AC_MSG_RESULT(yes) |
||
1731 | Qt_CFLAGS="$Qt_CFLAGS -fPIC" |
||
1732 | ], |
||
1733 | [ |
||
1734 | AC_MSG_RESULT(no) |
||
1735 | AC_MSG_ERROR(Couldn't compile Qt without -fPIC nor with -fPIC) |
||
1736 | ]) |
||
1737 | ]) |
||
1738 | AC_WIRESHARK_POP_FLAGS |
||
1739 | AC_LANG_POP([C++]) |
||
1740 | ]) |
||
1741 | |||
1742 | dnl AC_WIRESHARK_QT_CHECK([MINIMUM-VERSION, REQUESTED-MAJOR_VERSION, |
||
1743 | dnl [ACTION-IF-FOUND, [ACTION-IF-NOT-FOUND]]]) |
||
1744 | dnl Test for Qt and define Qt_CFLAGS and Qt_LIBS. |
||
1745 | dnl |
||
1746 | AC_DEFUN([AC_WIRESHARK_QT_CHECK], |
||
1747 | [ |
||
1748 | qt_version_to_check="$2" |
||
1749 | |||
1750 | # |
||
1751 | # Check for the Core module; if we don't have that, |
||
1752 | # we don't have Qt. If we *do* have it, we know what |
||
1753 | # version it is, so only check for that version of |
||
1754 | # other modules. |
||
1755 | # |
||
1756 | AC_WIRESHARK_QT_MODULE_CHECK(Core, $1, $qt_version_to_check, |
||
1757 | [ |
||
1758 | qt_version_to_check=$qt_version |
||
1759 | QT_VERSION=$mod_version |
||
1760 | QT_VERSION_MAJOR=`echo "$QT_VERSION" | cut -f1 -d.` |
||
1761 | QT_VERSION_MINOR=`echo "$QT_VERSION" | cut -f2 -d.` |
||
1762 | QT_VERSION_MICRO=`echo "$QT_VERSION" | cut -f3 -d.` |
||
1763 | |||
1764 | # Qt 5.7 and later requires C++11 |
||
1765 | AS_IF([test $QT_VERSION_MAJOR -eq 5 -a $QT_VERSION_MINOR -ge 7], |
||
1766 | [AS_IF([test "$HAVE_CXX11" -eq 0], [AC_MSG_ERROR([Qt 5.7 and later requires C++11])])]) |
||
1767 | |||
1768 | ], |
||
1769 | [no_qt=yes]) |
||
1770 | |||
1771 | if test x"$no_qt" = x ; then |
||
1772 | # |
||
1773 | # We need the Gui module as well. |
||
1774 | # |
||
1775 | AC_WIRESHARK_QT_MODULE_CHECK(Gui, $1, $qt_version_to_check, , |
||
1776 | [no_qt=yes]) |
||
1777 | fi |
||
1778 | |||
1779 | if test x"$no_qt" = x ; then |
||
1780 | # |
||
1781 | # Qt 5.0 appears to move the widgets out of Qt GUI |
||
1782 | # to Qt Widgets; look for the Widgets module, but |
||
1783 | # don't fail if we don't have it. |
||
1784 | # |
||
1785 | AC_WIRESHARK_QT_MODULE_CHECK(Widgets, $1, $qt_version_to_check) |
||
1786 | |||
1787 | # |
||
1788 | # Qt 5.0 also appears to move the printing support into |
||
1789 | # the Qt PrintSupport module. |
||
1790 | # |
||
1791 | AC_WIRESHARK_QT_MODULE_CHECK(PrintSupport, $1, $qt_version_to_check) |
||
1792 | |||
1793 | # |
||
1794 | # Qt 5.0 added multimedia in the Qt |
||
1795 | # Multimedia module. |
||
1796 | # |
||
1797 | have_qt_multimedia_lib=no |
||
1798 | AC_WIRESHARK_QT_MODULE_CHECK(Multimedia, $1, $qt_version_to_check, |
||
1799 | have_qt_multimedia_lib=yes |
||
1800 | AC_DEFINE(QT_MULTIMEDIA_LIB, 1, [Define if we have QtMultimedia])) |
||
1801 | |||
1802 | # |
||
1803 | # While we're at it, look for QtMacExtras. (Presumably |
||
1804 | # if we're not building for OS X, it won't be present.) |
||
1805 | # |
||
1806 | # XXX - is there anything in QtX11Extras or QtWinExtras |
||
1807 | # that we should be using? |
||
1808 | # |
||
1809 | AC_WIRESHARK_QT_MODULE_CHECK(MacExtras, $1, $qt_version_to_check, |
||
1810 | AC_DEFINE(QT_MACEXTRAS_LIB, 1, [Define if we have QtMacExtras])) |
||
1811 | |||
1812 | AC_WIRESHARK_QT_ADD_PIC_IF_NEEDED |
||
1813 | |||
1814 | # Run Action-If-Found |
||
1815 | ifelse([$3], , :, [$3]) |
||
1816 | else |
||
1817 | # Run Action-If-Not-Found |
||
1818 | ifelse([$4], , :, [$4]) |
||
1819 | fi |
||
1820 | |||
1821 | ]) |
||
1822 | |||
1823 | dnl AC_WIRESHARK_QT_TOOL_CHECK([TOOLPATHVAR, TOOL, REQUESTED-MAJOR_VERSION]) |
||
1824 | dnl Test for a particular Qt tool for some specific version of Qt |
||
1825 | dnl |
||
1826 | AC_DEFUN([AC_WIRESHARK_QT_TOOL_CHECK], |
||
1827 | [ |
||
1828 | # |
||
1829 | # At least in some versions of Debian/Ubuntu, and perhaps |
||
1830 | # other OSes, the Qt build tools are just links to a |
||
1831 | # program called "qtchooser", and even if you want to |
||
1832 | # build with Qt 5, running the tool might give you the |
||
1833 | # Qt 4 version of the tool unless you run the tool with |
||
1834 | # a -qt=5 argument. |
||
1835 | # |
||
1836 | # So we look for qtchooser and, if we find it, use the |
||
1837 | # -qt={version} argument, otherwise we look for particular |
||
1838 | # tool versions using tool name suffixes. |
||
1839 | # |
||
1840 | AC_PATH_PROG(QTCHOOSER, qtchooser) |
||
1841 | if test ! -z "$QTCHOOSER"; then |
||
1842 | # |
||
1843 | # We found qtchooser; we assume that means that |
||
1844 | # the tool is linked to qtchooser, so that we |
||
1845 | # can run it with the -qt={version} flag to get |
||
1846 | # the appropriate version of the tool. |
||
1847 | # |
||
1848 | AC_PATH_PROG($1, $2) |
||
1849 | if test "x$$1" = x; then |
||
1850 | # |
||
1851 | # We can't build Qt Wireshark without that |
||
1852 | # tool.. |
||
1853 | # |
||
1854 | AC_MSG_ERROR(I couldn't find $2; make sure it's installed and in your path) |
||
1855 | fi |
||
1856 | |||
1857 | # |
||
1858 | # Add the -qt={version} argument to it. |
||
1859 | # |
||
1860 | $1="$$1 -qt=$qt_version" |
||
1861 | else |
||
1862 | # |
||
1863 | # Annoyingly, on some Linux distros (e.g. Debian) |
||
1864 | # the Qt 5 tools have no suffix and the Qt 4 tools |
||
1865 | # have suffix -qt4. On other distros (e.g. openSUSE) |
||
1866 | # the Qt 5 tools have suffix -qt5 and the Qt 4 tools |
||
1867 | # have no suffix. |
||
1868 | # |
||
1869 | # So we check for the tool first with the -qtN suffix |
||
1870 | # and then with no suffix. |
||
1871 | # |
||
1872 | AC_PATH_PROGS($1, [$2-qt$qt_version $2]) |
||
1873 | if test "x$$1" = x; then |
||
1874 | # |
||
1875 | # We can't build Qt Wireshark without that |
||
1876 | # tool.. |
||
1877 | # |
||
1878 | AC_MSG_ERROR(I couldn't find $2-qt$qt_version or $2; make sure it's installed and in your path) |
||
1879 | fi |
||
1880 | fi |
||
1881 | ]) |
||
1882 | |||
1883 | AC_DEFUN([AC_WIRESHARK_QT_TOOL_CHECK_LRELEASE], |
||
1884 | [ |
||
1885 | AC_WIRESHARK_QT_TOOL_CHECK(LRELEASE, lrelease, $2) |
||
1886 | AC_MSG_CHECKING(whether lrelease -version works) |
||
1887 | lrelease_version=`$LRELEASE -version 2>&AS_MESSAGE_LOG_FD` |
||
1888 | AS_IF([test $? -ne 0], |
||
1889 | [ |
||
1890 | AC_MSG_RESULT(no) |
||
1891 | AC_MSG_ERROR([$LRELEASE -version returned non-zero exit status]) |
||
1892 | ]) |
||
1893 | AC_MSG_RESULT([ok, $lrelease_version]) |
||
1894 | ]) |