1# configure.in
2# (c) 2002 Mikulas Patocka, Karel 'Clock' Kulhavy, Petr 'Brain' Kulhavy,
3#          Martin 'PerM' Pergel
4# This file is a part of the Links program, released under GPL.
5
6AC_INIT(main.c)
7
8AM_INIT_AUTOMAKE(links, 2.25)
9
10ACLOCAL="./missing aclocal"
11AUTOCONF="./missing autoconf"
12AUTOMAKE="./missing automake"
13AUTOHEADER="./missing autoheader"
14
15export CC
16export CPPFLAGS
17export CFLAGS
18export LDFLAGS
19export LIBS
20
21AM_CONFIG_HEADER(config.h)
22
23dnl Checks for programs.
24AC_PROG_CC
25
26dnl AC_PROG_CXX
27dnl AC_PROG_AWK
28dnl AM_PROG_LEX
29dnl AC_PROG_YACC
30
31image_formats="GIF PNG XBM"
32
33static_link=0
34if test -n "`echo "$CC" "$LDFLAGS" "$CFLAGS" "$LIBS" | grep 'static\>'`"; then
35	static_link=1
36fi
37
38if test -n "`uname|grep -i bsd`"; then
39	CPPFLAGS="$CPPFLAGS -I/usr/local/include"
40	LDFLAGS="$LDFLAGS -L/usr/local/lib"
41fi
42
43AC_HEADER_STDC
44AC_PROG_GCC_TRADITIONAL
45
46dnl Check for libraries
47
48AC_CACHE_CHECK([for EMX], ac_cv_have_emx,
49	AC_TRY_COMPILE(, [#ifndef __EMX__
50	kill me!
51	#endif ], ac_cv_have_emx=yes, ac_cv_have_emx=no)
52)
53if test "$ac_cv_have_emx" = yes; then
54	LDFLAGS="`echo "$LDFLAGS" | sed "s/-Zexe//g" | sed "s/-Zbin-files//g"`"
55	test "$static_link" = 0 && LDFLAGS="$LDFLAGS -Zcrtdll"
56	ac_cv_type_pid_t=yes
57	ac_cv_type_size_t=yes
58fi
59
60AC_CACHE_CHECK([for OpenWatcom], ac_cv_have_watcom,
61	AC_TRY_COMPILE(, [#ifndef __WATCOMC__
62	kill me!
63	#endif ], ac_cv_have_watcom=yes, ac_cv_have_watcom=no)
64)
65test "$ac_cv_have_watcom" = yes && ac_cv_lib_dir_opendir=no
66
67AC_CACHE_CHECK([for DJGPP], ac_cv_have_djgpp,
68	AC_TRY_COMPILE(, [#ifndef __DJGPP
69	kill me!
70	#endif ], ac_cv_have_djgpp=yes, ac_cv_have_djgpp=no)
71)
72
73if test "$ac_cv_have_djgpp" = yes; then
74	static_link=1
75	test -n "$DJDIR" && test -d "$DJDIR/net/watt/inc" && CPPFLAGS="-I$DJDIR/net/watt/inc $CPPFLAGS"
76	test -n "$DJDIR" && test -d "$DJDIR/net/watt/lib" && LDFLAGS="-L$DJDIR/net/watt/lib $LDFLAGS"
77fi
78
79AC_CACHE_CHECK([for ARM64 ILP32], ac_cv_have_arm64_ilp32,
80	AC_TRY_COMPILE(, [#if !(defined(__aarch64__) && defined(__ILP32__))
81	kill me!
82	#endif ], ac_cv_have_arm64_ilp32=yes, ac_cv_have_arm64_ilp32=no)
83)
84test "$ac_cv_have_arm64_ilp32" = yes && disable_openmp=yes
85
86AC_CACHE_CHECK([for volatile], ac_cv_have_volatile,
87	AC_TRY_COMPILE([], [
88		volatile int a = 0;
89		return a;
90	], ac_cv_have_volatile=yes, ac_cv_have_volatile=no)
91)
92if test "$ac_cv_have_volatile" = yes; then
93	AC_DEFINE(HAVE_VOLATILE)
94fi
95
96AC_CACHE_CHECK([for restrict], ac_cv_have_restrict,
97	AC_TRY_COMPILE([
98		static void f(int * restrict a, int * restrict b)
99		{
100		}
101	], [
102		int a, b;
103		f(&a, &b);
104		return 0;
105	], ac_cv_have_restrict=yes, ac_cv_have_restrict=no)
106)
107if test "$ac_cv_have_restrict" = yes; then
108	AC_DEFINE(HAVE_RESTRICT)
109fi
110
111AC_CACHE_CHECK([for __restrict], ac_cv_have___restrict,
112	AC_TRY_COMPILE([
113		static void f(int * __restrict a, int * __restrict b)
114		{
115		}
116	], [
117		int a, b;
118		f(&a, &b);
119		return 0;
120	], ac_cv_have___restrict=yes, ac_cv_have___restrict=no)
121)
122if test "$ac_cv_have___restrict" = yes; then
123	AC_DEFINE(HAVE___RESTRICT)
124fi
125
126AC_CACHE_CHECK([for long long], ac_cv_have_long_long,
127	AC_TRY_COMPILE(, [unsigned long long a; ], ac_cv_have_long_long=yes, ac_cv_have_long_long=no)
128)
129test "$ac_cv_have_long_long" = yes && AC_DEFINE(HAVE_LONG_LONG)
130
131AC_CACHE_CHECK([for pointer comparison bug], ac_cv_pointer_comparison_bug,
132	AC_TRY_RUN([
133	int main()
134	{
135		void *p = (void *)-1L;
136		return p != (void *)-1L;
137	}
138	], ac_cv_pointer_comparison_bug=no, ac_cv_pointer_comparison_bug=yes,
139		[if test -n "`echo "$CC"|grep ^tcc`"; then
140			ac_cv_pointer_comparison_bug=yes
141		else
142			ac_cv_pointer_comparison_bug=no
143		fi]
144	)
145)
146test "$ac_cv_pointer_comparison_bug" = yes && AC_DEFINE(HAVE_POINTER_COMPARISON_BUG)
147
148if test "$ac_cv_have_long_long" = yes -a "$ac_cv_have_volatile" = yes; then
149	AC_CACHE_CHECK([for maxint conversion bug], ac_cv_maxint_conversion_bug,
150		AC_TRY_RUN([
151		int main()
152		{
153			volatile long long q = 0x7FFFFFEF;
154			return q < 0;
155		}
156		], ac_cv_maxint_conversion_bug=no, ac_cv_maxint_conversion_bug=yes,
157			[if test -n "`echo "$CC"|grep ^cc`" -a "`uname -s`" = HP-UX; then
158				ac_cv_maxint_conversion_bug=yes
159			else
160				ac_cv_maxint_conversion_bug=no
161			fi]
162		)
163	)
164	test "$ac_cv_maxint_conversion_bug" = yes && AC_DEFINE(HAVE_MAXINT_CONVERSION_BUG)
165fi
166
167dnl AC_CACHE_CHECK([for _FILE_OFFSET_BITS 64], ac_cv_have_file_offset_bits,
168dnl 	AC_TRY_COMPILE([
169dnl 	#define _FILE_OFFSET_BITS 64
170dnl 	#include <stdio.h>
171dnl 	], [
172dnl 		return 0;
173dnl 	], ac_cv_have_file_offset_bits=yes, ac_cv_have_file_offset_bits=no)
174dnl )
175dnl test "$ac_cv_have_file_offset_bits" = yes && AC_DEFINE(HAVE_FILE_OFFSET_BITS)
176
177dnl note: HAVE_STDLIB_H clashes with defines in jpeglib.h,
178dnl so we must use a different name
179AC_CACHE_CHECK([for stdlib.h], ac_cv_have_stdlib_h,
180	AC_TRY_COMPILE([#include <stdlib.h>],[],
181		ac_cv_have_stdlib_h=yes, ac_cv_have_stdlib_h=no)
182)
183if test "$ac_cv_have_stdlib_h" = yes; then
184	AC_DEFINE(HAVE_STDLIB_H_X)
185fi
186
187
188dnl Checks for header files.
189AC_HEADER_DIRENT
190AC_HEADER_SYS_WAIT
191AC_CHECK_HEADERS(alloca.h arpa/inet.h bsd/string.h cygwin/process.h cygwin/version.h fcntl.h grp.h ieee.h interix/interix.h inttypes.h io.h langinfo.h limits.h linux/falloc.h locale.h malloc.h math.h net/socket.h netinet/in_system.h netinet/in_systm.h netinet/ip.h poll.h process.h pwd.h search.h setjmp.h sgtty.h stdarg.h string.h strings.h sys/cygwin.h sys/file.h sys/fmutex.h sys/ioctl.h sys/resource.h sys/select.h sys/time.h sys/un.h sys/utsname.h termios.h time.h umalloc.h unistd.h unixlib.h utime.h uwin.h values.h)
192
193if test "$ac_cv_header_stdarg_h" != yes; then
194	AC_ERROR([stdarg.h not present])
195fi
196
197dnl Checks for typedefs, structures, and compiler characteristics.
198AC_C_CONST
199AC_C_INLINE
200AC_TYPE_SIZE_T
201AC_TYPE_PID_T
202AC_CACHE_CHECK([for socklen_t], ac_cv_have_socklen_t,
203	AC_TRY_COMPILE([
204	#include <sys/types.h>
205	#include <sys/socket.h>
206	], [
207		socklen_t a = 0;
208		return a;
209	], ac_cv_have_socklen_t=yes, ac_cv_have_socklen_t=no)
210)
211if test "$ac_cv_have_socklen_t" = yes; then
212	AC_DEFINE(HAVE_SOCKLEN_T)
213fi
214AC_CACHE_CHECK([for errno], ac_cv_have_errno,
215	AC_TRY_COMPILE([
216	#include <errno.h>
217	], [
218		errno = 0;
219		return errno;
220	], ac_cv_have_errno=yes, ac_cv_have_errno=no)
221)
222if test "$ac_cv_have_errno" = yes; then
223	AC_DEFINE(HAVE_ERRNO)
224fi
225
226AC_HEADER_TIME
227AC_STRUCT_TM
228
229if test "$ac_cv_have_emx" = yes; then
230	default_short=2
231	default_int=4
232	default_long=4
233	default_long_long=8
234else
235	default_short=0
236	default_int=0
237	default_long=0
238	default_long_long=0
239fi
240
241dnl Check for compiler type sizes
242dnl AC_CHECK_SIZEOF(short, "$default_short")
243AC_CHECK_SIZEOF(unsigned short, "$default_short")
244dnl AC_CHECK_SIZEOF(int, "$default_int")
245AC_CHECK_SIZEOF(unsigned, "$default_int")
246dnl AC_CHECK_SIZEOF(long, "$default_long")
247AC_CHECK_SIZEOF(unsigned long, "$default_long")
248if test "$ac_cv_have_long_long" = yes; then
249dnl 	AC_CHECK_SIZEOF(long long, "$default_long_long")
250	AC_CHECK_SIZEOF(unsigned long long, "$default_long_long")
251fi
252if test "$ac_cv_sizeof_unsigned" -ne 0 && test "$ac_cv_sizeof_unsigned" -lt 4; then
253	AC_ERROR([integer must have at least 32 bits])
254fi
255AC_CACHE_CHECK([for big endian], ac_cv_big_endian,
256	AC_TRY_RUN([
257	long l;
258	char *c = (char *)&l;
259	int main()
260	{
261		l = 0x12345678L;
262		return !(c[[sizeof(long) - 1]] == 0x78 && c[[sizeof(long) - 2]] == 0x56 && c[[sizeof(long) - 3]] == 0x34 && c[[sizeof(long) - 4]] == 0x12);
263	}
264	], ac_cv_big_endian=yes, ac_cv_big_endian=no, ac_cv_big_endian=no)
265)
266AC_CACHE_CHECK([for little endian], ac_cv_little_endian,
267	AC_TRY_RUN([
268	long l;
269	char *c = (char *)&l;
270	int main()
271	{
272		l = 0x12345678L;
273		return !(c[[0]] == 0x78 && c[[1]] == 0x56 && c[[2]] == 0x34 && c[[3]] == 0x12);
274	}
275	], ac_cv_little_endian=yes, ac_cv_little_endian=no, ac_cv_little_endian="$ac_cv_have_emx")
276)
277
278if test "$ac_cv_big_endian" = yes; then
279	AC_DEFINE(C_BIG_ENDIAN)
280else if test "$ac_cv_little_endian" = yes; then
281	AC_DEFINE(C_LITTLE_ENDIAN)
282fi
283fi
284
285AC_CACHE_CHECK([if rename can replace existing files], ac_cv_rename_over_existing_files,
286	AC_TRY_RUN([
287	#include <fcntl.h>
288	#include <stdio.h>
289	#include <unistd.h>
290
291	int main()
292	{
293		int ret;
294		close(creat("conftest.rename1", 0600));
295		close(creat("conftest.rename2", 0600));
296		ret = rename("conftest.rename1", "conftest.rename2");
297		unlink("conftest.rename1");
298		unlink("conftest.rename2");
299		return !!ret;
300	}
301	], ac_cv_rename_over_existing_files=yes, ac_cv_rename_over_existing_files=no, ac_cv_rename_over_existing_files=no)
302)
303
304if test "$ac_cv_rename_over_existing_files" = yes; then
305	AC_DEFINE(RENAME_OVER_EXISTING_FILES)
306fi
307
308dnl Checks for library functions.
309AC_TYPE_SIGNAL
310AC_FUNC_STRFTIME
311AC_FUNC_VPRINTF
312AC_HAVE_FUNCS(bcmp bcopy bzero calloc cfmakeraw chmod cygwin_conv_path cygwin_conv_to_full_win32_path dirfd fallocate freelocale getcwd getgrgid gethostname getpagesize getpid getpwuid getrlimit gettimeofday gmtime kqueue malloc_trim mallopt mktime newlocale nl_langinfo poll popen posix_fallocate raise select setlocale setpgid setrlimit setsid sigaction sigblock sigdelset sigprocmask sigsetmask snprintf strdup strerror_l strptime strtod strtoimax strtol strtoll strtoq strtoul sysconf tdelete tempnam tfind timegm tsearch uname unixpath2win utime utimes uwin_path winpath2unix _heapmin _msize _ucreate _udefault _udestroy _uopen __strtoll)
313
314
315AC_HAVE_FUNCS(strlen)
316AC_CACHE_CHECK([for strlen], ac_cv_have_strlen,
317	AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; return strlen(str);], ac_cv_have_strlen=yes, ac_cv_have_strlen=no)
318)
319if test "$ac_cv_have_strlen" = yes; then
320	AC_DEFINE(HAVE_STRLEN)
321fi
322
323AC_HAVE_FUNCS(strnlen)
324AC_CACHE_CHECK([for strnlen], ac_cv_have_strnlen,
325	AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; return strnlen(str, 3);], ac_cv_have_strnlen=yes, ac_cv_have_strnlen=no)
326)
327if test "$ac_cv_have_strnlen" = yes; then
328	AC_DEFINE(HAVE_STRNLEN)
329fi
330
331AC_HAVE_FUNCS(strcpy)
332AC_CACHE_CHECK([for strcpy], ac_cv_have_strcpy,
333	AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; char a[[100]]; strcpy(a, str); return a[[0]];], ac_cv_have_strcpy=yes, ac_cv_have_strcpy=no)
334)
335if test "$ac_cv_have_strcpy" = yes; then
336	AC_DEFINE(HAVE_STRCPY)
337fi
338
339AC_HAVE_FUNCS(strncpy)
340AC_CACHE_CHECK([for strncpy], ac_cv_have_strncpy,
341	AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; char a[[100]]; volatile int l = 1; strncpy(a, str, l); return a[[0]];], ac_cv_have_strncpy=yes, ac_cv_have_strncpy=no)
342)
343if test "$ac_cv_have_strncpy" = yes; then
344	AC_DEFINE(HAVE_STRNCPY)
345fi
346
347AC_HAVE_FUNCS(strchr)
348AC_CACHE_CHECK([for strchr], ac_cv_have_strchr,
349	AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; return !!strchr(str, 0);], ac_cv_have_strchr=yes, ac_cv_have_strchr=no)
350)
351if test "$ac_cv_have_strchr" = yes; then
352	AC_DEFINE(HAVE_STRCHR)
353fi
354
355AC_HAVE_FUNCS(strrchr)
356AC_CACHE_CHECK([for strrchr], ac_cv_have_strrchr,
357	AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; return !!strrchr(str, 0);], ac_cv_have_strrchr=yes, ac_cv_have_strrchr=no)
358)
359if test "$ac_cv_have_strrchr" = yes; then
360	AC_DEFINE(HAVE_STRRCHR)
361fi
362
363AC_HAVE_FUNCS(strcmp)
364AC_CACHE_CHECK([for strcmp], ac_cv_have_strcmp,
365	AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; char * volatile str2 = ""; return strcmp(str2, str);], ac_cv_have_strcmp=yes, ac_cv_have_strcmp=no)
366)
367if test "$ac_cv_have_strcmp" = yes; then
368	AC_DEFINE(HAVE_STRCMP)
369fi
370
371AC_HAVE_FUNCS(strncmp)
372AC_CACHE_CHECK([for strncmp], ac_cv_have_strncmp,
373	AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; char * volatile str2 = ""; volatile int l = 1; return strncmp(str2, str, l);], ac_cv_have_strncmp=yes, ac_cv_have_strncmp=no)
374)
375if test "$ac_cv_have_strncmp" = yes; then
376	AC_DEFINE(HAVE_STRNCMP)
377fi
378
379AC_HAVE_FUNCS(strcspn)
380AC_CACHE_CHECK([for strcspn], ac_cv_have_strcspn,
381	AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; char * volatile str2 = ""; return strcspn(str2, str);], ac_cv_have_strcspn=yes, ac_cv_have_strcspn=no)
382)
383if test "$ac_cv_have_strcspn" = yes; then
384	AC_DEFINE(HAVE_STRCSPN)
385fi
386
387AC_HAVE_FUNCS(strspn)
388AC_CACHE_CHECK([for strspn], ac_cv_have_strspn,
389	AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; char * volatile str2 = ""; return strspn(str2, str);], ac_cv_have_strspn=yes, ac_cv_have_strspn=no)
390)
391if test "$ac_cv_have_strspn" = yes; then
392	AC_DEFINE(HAVE_STRSPN)
393fi
394
395AC_HAVE_FUNCS(strstr)
396AC_CACHE_CHECK([for strstr], ac_cv_have_strstr,
397	AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; char * volatile str2 = ""; return !!strstr(str2, str);], ac_cv_have_strstr=yes, ac_cv_have_strstr=no)
398)
399if test "$ac_cv_have_strstr" = yes; then
400	AC_DEFINE(HAVE_STRSTR)
401fi
402
403AC_HAVE_FUNCS(memchr)
404AC_CACHE_CHECK([for memchr], ac_cv_have_memchr,
405	AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; volatile int l = 1; return !!memchr(str, 0, l);], ac_cv_have_memchr=yes, ac_cv_have_memchr=no)
406)
407if test "$ac_cv_have_memchr" = yes; then
408	AC_DEFINE(HAVE_MEMCHR)
409fi
410
411AC_HAVE_FUNCS(memrchr)
412AC_CACHE_CHECK([for memrchr], ac_cv_have_memrchr,
413	AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; volatile int l = 1; return !!memrchr(str, 0, l);], ac_cv_have_memrchr=yes, ac_cv_have_memrchr=no)
414)
415if test "$ac_cv_have_memrchr" = yes; then
416	AC_DEFINE(HAVE_MEMRCHR)
417fi
418
419AC_HAVE_FUNCS(memcmp)
420AC_CACHE_CHECK([for memcmp], ac_cv_have_memcmp,
421	AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; char * volatile str2 = ""; volatile int l = 1; return memcmp(str2, str, l);], ac_cv_have_memcmp=yes, ac_cv_have_memcmp=no)
422)
423if test "$ac_cv_have_memcmp" = yes; then
424	AC_DEFINE(HAVE_MEMCMP)
425fi
426
427AC_HAVE_FUNCS(memcpy)
428AC_CACHE_CHECK([for memcpy], ac_cv_have_memcpy,
429	AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; char a[[100]]; volatile int l = 1; memcpy(a, str, l); return a[[0]];], ac_cv_have_memcpy=yes, ac_cv_have_memcpy=no)
430)
431if test "$ac_cv_have_memcpy" = yes; then
432	AC_DEFINE(HAVE_MEMCPY)
433fi
434
435AC_HAVE_FUNCS(memmove)
436AC_CACHE_CHECK([for memmove], ac_cv_have_memmove,
437	AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; char a[[100]]; volatile int l = 1; memmove(a, str, l); return a[[0]];], ac_cv_have_memmove=yes, ac_cv_have_memmove=no)
438)
439if test "$ac_cv_have_memmove" = yes; then
440	AC_DEFINE(HAVE_MEMMOVE)
441fi
442
443AC_HAVE_FUNCS(memset)
444AC_CACHE_CHECK([for memset], ac_cv_have_memset,
445	AC_TRY_LINK([#include <string.h>], [char a[[100]]; char * volatile str = a; volatile int l = 1; memset(str, 0, l); return a[[0]];], ac_cv_have_memset=yes, ac_cv_have_memset=no)
446)
447if test "$ac_cv_have_memset" = yes; then
448	AC_DEFINE(HAVE_MEMSET)
449fi
450
451AC_HAVE_FUNCS(memmem)
452AC_CACHE_CHECK([for memmem], ac_cv_have_memmem,
453	AC_TRY_LINK([#define _GNU_SOURCE
454#include <string.h>], [char * volatile str = ""; char * volatile str2 = ""; volatile int l = 1; volatile int l2 = 1; return !!memmem(str2, l2, str, l);], ac_cv_have_memmem=yes, ac_cv_have_memmem=no)
455)
456if test "$ac_cv_have_memmem" = yes; then
457	AC_DEFINE(HAVE_MEMMEM)
458fi
459
460AC_HAVE_FUNCS(strerror)
461AC_CACHE_CHECK([for strerror], ac_cv_have_strerror,
462	AC_TRY_LINK([#include <string.h>], [volatile int e = 1; return strerror(e)[[0]];], ac_cv_have_strerror=yes, ac_cv_have_strerror=no)
463)
464if test "$ac_cv_have_strerror" = yes; then
465	AC_DEFINE(HAVE_STRERROR)
466fi
467
468AC_CACHE_CHECK([for sigfillset], ac_cv_have_sigfillset,
469	AC_TRY_LINK([#include <signal.h>], [sigset_t set; sigfillset(&set);], ac_cv_have_sigfillset=yes, ac_cv_have_sigfillset=no)
470)
471if test "$ac_cv_have_sigfillset" = yes; then
472	AC_DEFINE(HAVE_SIGFILLSET)
473fi
474
475AC_CACHE_CHECK([for sigsetjmp/siglongjmp], ac_cv_have_sigsetjmp,
476	AC_TRY_LINK([#include <setjmp.h>], [sigjmp_buf env;sigsetjmp(env, 1);siglongjmp(env, 2);], ac_cv_have_sigsetjmp=yes, ac_cv_have_sigsetjmp=no)
477)
478if test "$ac_cv_have_sigsetjmp" = yes; then
479	AC_DEFINE(HAVE_SIGSETJMP)
480fi
481
482AC_CACHE_CHECK([for gcc assembler], ac_cv_have_gcc_assembler,
483	AC_TRY_RUN([
484int main(void)
485{
486	void *o = (void *)0, *i = (void *)-1L;
487	__asm__ volatile ("" : "=r"(o) : "0"(i) : "memory");
488	if (o != (void *)-1L)
489		return 1;
490#if defined(__i386__) || defined(__x86_64__)
491	{
492		int x = (int)((unsigned)-1 >> 1);
493		int y = 1;
494		int result = 0;
495		unsigned char ovf = 0;
496		__asm__ ("addl %2, %0; seto %1":"=r"(result), "=q"(ovf):"g"(y),"0"(x));
497		if (result != ~x || ovf != 1)
498			return 1;
499	}
500#endif
501#if defined(__x86_64__) && !defined(__TINYC__)
502	{
503		static const unsigned char zero;
504		__asm__ ("jmp 1f; movntdqa %0, %%xmm0; 1:" : : "m"(zero) : "xmm0");
505	}
506#endif
507#if defined(__alpha__)
508	__asm__ volatile (".p2align 3; nop; .p2align 3" ::: "memory");
509#endif
510	return 0;
511}
512], ac_cv_have_gcc_assembler=yes, ac_cv_have_gcc_assembler=no, ac_cv_have_gcc_assembler="$ac_cv_have_emx")
513)
514if test "$ac_cv_have_gcc_assembler" = yes; then
515	AC_DEFINE(HAVE_GCC_ASSEMBLER)
516fi
517
518AC_CACHE_CHECK([for __builtin_add_overflow], ac_cv_have___builtin_add_overflow,
519	AC_TRY_LINK([], [volatile int a = 1, b = 2; int c; return __builtin_add_overflow(a, b, &c);], ac_cv_have___builtin_add_overflow=yes, ac_cv_have___builtin_add_overflow=no)
520)
521if test "$ac_cv_have___builtin_add_overflow" = yes; then
522	AC_DEFINE(HAVE___BUILTIN_ADD_OVERFLOW)
523fi
524
525AC_CACHE_CHECK([for __builtin_clz], ac_cv_have___builtin_clz,
526	AC_TRY_LINK([], [volatile unsigned a = 1; return __builtin_clz(a);], ac_cv_have___builtin_clz=yes, ac_cv_have___builtin_clz=no)
527)
528if test "$ac_cv_have___builtin_clz" = yes; then
529	AC_DEFINE(HAVE___BUILTIN_CLZ)
530fi
531
532
533if test "$ac_cv_func_select" != yes; then
534	AC_ERROR([select function not present])
535fi
536
537AC_CHECK_LIB(bsd, strmode)
538
539dnl User option
540
541AC_MSG_CHECKING([for requested debug level])
542AC_ARG_ENABLE(debuglevel, [  --enable-debuglevel     set internal checking level
543	-1 - recover from segmentation faults
544	 0 - no checks (fastest)
545	 1 - check memory leaks
546	 2 - check memory leaks, red zone
547	 3 - check memory leaks, red zone, pattern filling], cf_debuglevel="$enableval", cf_debuglevel=0)
548if test "$cf_debuglevel" = no; then cf_debuglevel=0; fi
549if test "$cf_debuglevel" = yes; then cf_debuglevel=2; fi
550AC_MSG_RESULT($cf_debuglevel)
551if test "$cf_debuglevel" != -1 && test "$cf_debuglevel" != 0 && test "$cf_debuglevel" != 1 && test "$cf_debuglevel" != 2 && test "$cf_debuglevel" != 3; then
552	AC_ERROR([Invalid debuglevel specified])
553fi
554AC_DEFINE_UNQUOTED(DEBUGLEVEL, $cf_debuglevel)
555
556AC_MSG_CHECKING([if you want to enable javascript])
557cf_use_javascript=no
558AC_ARG_ENABLE(javascript, [  --enable-javascript     DELETE1], cf_use_javascript="$enableval")
559AC_MSG_RESULT($cf_use_javascript)
560if test "$cf_use_javascript" = yes; then
561	AC_DEFINE(JS)
562	AC_MSG_CHECKING([if you want to link with system libfl])
563	cf_use_libfl=no
564	AC_ARG_WITH(libfl, [  --with-libfl            DELETE2], cf_use_libfl="$withval")
565	AC_MSG_RESULT($cf_use_libfl)
566	if test "$cf_use_libfl" != no; then
567		LIBS="$LIBS -lfl"
568	else
569		AC_DEFINE(CHCEME_FLEXI_LIBU)
570	fi
571
572	reg_exp_mode="NONE"
573	PKG_CHECK_MODULES(LIBPCRE, libpcre, pkgconfig_libpcre=yes, pkgconfig_libpcre=no)
574	if test "$pkgconfig_libpcre" = "yes"; then
575		CPPFLAGS="$CPPFLAGS $LIBPCRE_CFLAGS"
576		LIBS="$LIBPCRE_LIBS $LIBS"
577	fi
578	AC_CHECK_LIB(pcre, pcre_compile)
579	AC_CHECK_HEADERS(pcre.h)
580	if test "$ac_cv_lib_pcre_pcre_compile" = yes && test "$ac_cv_header_pcre_h" = yes; then
581		AC_DEFINE(HAVE_PCRE)
582		reg_exp_mode="PCRE"
583	else
584		AC_HAVE_FUNCS(regcomp)
585		AC_CHECK_HEADERS(regex.h)
586		if test "$ac_cv_func_regcomp" = yes && test "$ac_cv_header_regex_h" = yes; then
587			AC_DEFINE(HAVE_REGEX)
588			reg_exp_mode="LIBC"
589		fi
590	fi
591	AC_CHECK_LIB(m, fmod)
592fi
593
594cf_use_graphics=no
595AC_MSG_CHECKING([if you want to use graphics])
596AC_ARG_ENABLE(graphics, [  --enable-graphics       use graphics], cf_use_graphics="$enableval" )
597AC_MSG_RESULT($cf_use_graphics)
598
599AC_MSG_CHECKING([if you want to enable UTF-8 terminal])
600cf_enable_utf8=yes
601AC_ARG_ENABLE(utf8, [  --disable-utf8          disable UTF-8 terminal (saves memory)], cf_enable_utf8="$enableval" )
602test "$ac_cv_have_emx" = yes && cf_enable_utf8=no
603test "$ac_cv_have_djgpp" = yes && cf_enable_utf8=no
604AC_MSG_RESULT($cf_enable_utf8)
605
606if test "$cf_enable_utf8" != no; then
607	AC_DEFINE(ENABLE_UTF8)
608fi
609
610
611dnl Checks for libraries.
612
613AC_HAVE_FUNCS(clock_gettime)
614if test $ac_cv_func_clock_gettime = no; then
615	AC_CHECK_LIB(rt, clock_gettime)
616	if test $ac_cv_lib_rt_clock_gettime = yes; then
617		AC_DEFINE(HAVE_CLOCK_GETTIME)
618	fi
619fi
620
621AC_CHECK_FUNC(socket, cf_result=yes, cf_result=no)
622if test "$cf_result" = no; then
623	AC_CHECK_LIB(socket, socket)
624	if test "$ac_cv_lib_socket_socket" = no; then
625		AC_CHECK_LIB(xnet, socket)
626		if test "$ac_cv_lib_xnet_socket" = no; then
627			AC_CHECK_LIB(network, socket)
628			if test "$ac_cv_lib_network_socket" = no; then
629				AC_CHECK_LIB(watt, socket)
630				if test "$ac_cv_lib_watt_socket" = no; then
631					AC_ERROR([socket function not present])
632				fi
633			fi
634		fi
635	fi
636fi
637AC_CHECK_FUNC(setsockopt, cf_result=yes, cf_result=no)
638if test "$cf_result" = no; then
639	AC_CHECK_LIB(socket, setsockopt)
640fi
641
642AC_CHECK_FUNC(gethostbyname, cf_result=yes, cf_result=no)
643if test "$cf_result" = no; then
644	AC_CHECK_LIB(socket, gethostbyname)
645	cf_result="$ac_cv_lib_socket_gethostbyname"
646	if test "$ac_cv_lib_socket_gethostbyname" = no; then
647		AC_CHECK_LIB(nsl, gethostbyname)
648		cf_result="$ac_cv_lib_nsl_gethostbyname"
649	fi
650fi
651test "$cf_result" = yes && AC_DEFINE(HAVE_GETHOSTBYNAME)
652
653if test "$cf_result" = yes && test "$ac_cv_have_watcom" = yes -o "`uname -s`" = SunOS; then
654	AC_CACHE_CHECK([for flawed gethostbyname], ac_cv_gethostbyname_bug,
655		AC_TRY_RUN([
656		#include <netdb.h>
657		int main()
658		{
659			return !gethostbyname("www.gnu.org");
660		}
661		], ac_cv_gethostbyname_bug=no, ac_cv_gethostbyname_bug=yes, ac_cv_gethostbyname_bug="$ac_cv_have_watcom")
662	)
663	test "$ac_cv_gethostbyname_bug" = yes && AC_DEFINE(HAVE_GETHOSTBYNAME_BUG)
664fi
665
666AC_ARG_WITH(getaddrinfo, [  --without-getaddrinfo   compile without getaddrinfo function],[if test "$withval" = no; then disable_getaddrinfo=yes; else disable_getaddrinfo=no; fi])
667
668if test "$disable_getaddrinfo" != yes; then
669	AC_HAVE_FUNCS(getaddrinfo freeaddrinfo gai_strerror)
670	if test "$ac_cv_func_getaddrinfo" = yes -a "$ac_cv_func_freeaddrinfo" = yes; then
671		cf_have_getaddrinfo=yes
672	else
673		cf_have_getaddrinfo=no
674	fi
675else
676	cf_have_getaddrinfo=no
677fi
678
679AC_HAVE_FUNCS(inet_ntop inet_pton herror)
680
681AC_ARG_WITH(ipv6, [  --without-ipv6          compile without ipv6],[if test "$withval" = no; then disable_ipv6=yes; else disable_ipv6=no; fi])
682
683AC_CACHE_CHECK([for ipv6], ac_cv_have_ipv6,
684	AC_TRY_COMPILE([
685		#include <sys/types.h>
686		#include <sys/socket.h>
687		#include <netinet/in.h>
688	], [
689		struct sockaddr_in6 sin6;
690		sin6.sin6_family = AF_INET6;
691	], ac_cv_have_ipv6=yes, ac_cv_have_ipv6=no)
692)
693if test "$disable_ipv6" != yes -a "$ac_cv_have_ipv6" = yes -a "$cf_have_getaddrinfo" = yes; then
694	cf_have_ipv6=yes
695	AC_DEFINE(SUPPORT_IPV6)
696else
697	cf_have_ipv6=no
698fi
699AC_CACHE_CHECK([for sockaddr_in6.sin6_scope_id], ac_cv_have_sin6_scope_id,
700	AC_TRY_COMPILE([
701		#include <sys/types.h>
702		#include <sys/socket.h>
703		#include <netinet/in.h>
704	], [
705		struct sockaddr_in6 sin6;
706		sin6.sin6_scope_id = 0;
707	], ac_cv_have_sin6_scope_id=yes, ac_cv_have_sin6_scope_id=no)
708)
709test "$ac_cv_have_sin6_scope_id" = yes && AC_DEFINE(SUPPORT_IPV6_SCOPE)
710
711AC_ARG_WITH(libevent, [  --without-libevent      compile without libevent],[if test "$withval" = no; then disable_libevent=yes; else disable_libevent=no; fi])
712
713cf_have_libevent=no
714if test "$disable_libevent" != yes; then
715	AC_CHECK_HEADERS(event.h ev-event.h)
716	if test "$ac_cv_header_event_h" = yes; then
717		AC_CHECK_LIB(event, event_loop)
718		if test "$ac_cv_lib_event_event_loop" = yes; then
719			cf_have_libevent=libevent
720		fi
721	fi
722	if test "$cf_have_libevent" = no; then
723		if test "$ac_cv_header_event_h" = yes -o "$ac_cv_header_ev_event_h" = yes; then
724			AC_CHECK_LIB(ev, event_loop)
725			if test "$ac_cv_lib_ev_event_loop" = yes; then
726				cf_have_libevent=libev
727			fi
728		fi
729	fi
730fi
731if test "$cf_have_libevent" != no; then
732	AC_HAVE_FUNCS(event_base_set event_get_version event_get_method event_base_free event_base_new event_reinit event_base_get_method event_config_set_flag event_get_struct_event_size)
733fi
734
735if test "$cf_use_graphics" != no; then
736	AC_CHECK_LIB(m, pow)
737	if test "$ac_cv_lib_m_pow" = no; then
738		AC_CHECK_LIB(m, main)
739	fi
740	AC_CACHE_CHECK([for pow], ac_cv_have_pow,
741		AC_TRY_LINK([#include <math.h>], [volatile double a = 1.1; volatile double b = 2.2; return pow(a, b);], ac_cv_have_pow=yes, ac_cv_have_pow=no)
742	)
743	if test "$ac_cv_have_pow" = yes; then
744		AC_DEFINE(HAVE_POW)
745	fi
746	AC_CACHE_CHECK([for powf], ac_cv_have_powf,
747		AC_TRY_LINK([#include <math.h>], [volatile float a = 1.1; volatile float b = 2.2; return powf(a, b);], ac_cv_have_powf=yes, ac_cv_have_powf=no)
748	)
749	if test "$ac_cv_have_powf" = yes; then
750		AC_DEFINE(HAVE_POWF)
751	fi
752	if test "$ac_cv_have_pow" != yes -a "$ac_cv_have_powf" != yes; then
753		AC_ERROR([pow and powf functions not present])
754	fi
755fi
756
757AC_ARG_WITH(gpm, [  --without-gpm           compile without gpm mouse],[if test "$withval" = no; then disable_gpm=yes; else disable_gpm=no; fi])
758
759if test "$disable_gpm" != yes -a "$ac_cv_have_djgpp" != yes; then
760	AC_CHECK_HEADERS(gpm.h)
761	AC_CHECK_LIB(gpm, Gpm_Open)
762	AC_HAVE_FUNCS(Gpm_GetLibVersion)
763	if test "$ac_cv_lib_gpm_Gpm_Open" = yes && test "$ac_cv_header_gpm_h" = yes; then
764		cf_have_gpm=yes
765		AC_CACHE_CHECK([for Gpm_Event wdx and wdy], ac_cv_have_wdx_wdy,
766			AC_TRY_COMPILE([
767#include <sys/time.h>
768#include <gpm.h>
769], [
770	Gpm_Event e;
771	e.wdx = 1;
772	e.wdy = 2;
773	return e.wdx + e.wdy
774], ac_cv_have_wdx_wdy=yes, ac_cv_have_wdx_wdy=no)
775		)
776		if test "$ac_cv_have_wdx_wdy" = yes; then
777			AC_DEFINE(HAVE_WDX_WDY)
778		fi
779	else
780		cf_have_gpm=no
781	fi
782else
783	cf_have_gpm=no
784fi
785
786AC_CACHE_CHECK([for OS/2 threads], ac_cv_have_beginthread,
787	CFLAGS_X="$CFLAGS"
788	CFLAGS="$CFLAGS -Zmt"
789	AC_TRY_LINK([#include <stdlib.h>], [_beginthread(NULL, NULL, 0, NULL)], ac_cv_have_beginthread=yes, ac_cv_have_beginthread=no)
790	CFLAGS="$CFLAGS_X"
791)
792if test "$ac_cv_have_beginthread" = yes; then
793	CFLAGS="$CFLAGS -Zmt"
794	AC_DEFINE(HAVE_BEGINTHREAD)
795fi
796AC_CHECK_HEADERS(atheos/threads.h)
797AC_HAVE_FUNCS(spawn_thread resume_thread)
798
799AC_HAVE_FUNCS(MouOpen _read_kbd)
800AC_CACHE_CHECK([for XFree for OS/2], ac_cv_have_x2,
801	CPPFLAGS_X="$CPPFLAGS"
802	LIBS_X="$LIBS"
803	ac_cv_have_x2=no
804	if test -n "$X11ROOT"; then
805		CPPFLAGS="$CPPFLAGS_X -I$X11ROOT/XFree86/include"
806		LIBS="$LIBS_X -L$X11ROOT/XFree86/lib -lxf86_gcc"
807		AC_TRY_LINK([#include <pty.h>], [struct winsize win;ptioctl(1, TIOCGWINSZ, &win)], ac_cv_have_x2=xf86_gcc, ac_cv_have_x2=no)
808		if test "$ac_cv_have_x2" = no; then
809			LIBS="$LIBS_X -L$X11ROOT/XFree86/lib -lxf86"
810			AC_TRY_LINK([#include <pty.h>], [struct winsize win;ptioctl(1, TIOCGWINSZ, &win)], ac_cv_have_x2=xf86, ac_cv_have_x2=no)
811		fi
812	fi
813	CPPFLAGS="$CPPFLAGS_X"
814	LIBS="$LIBS_X"
815)
816if test "$ac_cv_have_x2" != no; then
817	CPPFLAGS="$CPPFLAGS -I$X11ROOT/XFree86/include"
818	LIBS="$LIBS -L$X11ROOT/XFree86/lib -l$ac_cv_have_x2"
819	AC_DEFINE(X2)
820fi
821
822cf_result=no
823#ifdef HAVE_SSL
824ssld=yes
825withval=
826AC_ARG_WITH(ssl, [  --with-ssl(=directory)  enable SSL support
827  --with-ssl=nss          enable SSL support through NSS OpenSSL emulation], [if test "$withval" = no; then disable_ssl=yes; else ssld="$withval"; fi])
828AC_ARG_ENABLE(ssl-pkgconfig, [  --disable-ssl-pkgconfig don't use pkgconfig when searching for openssl], cf_openssl_pkgconfig="$enableval", cf_openssl_pkgconfig=yes)
829if test -z "$disable_ssl"; then
830	CPPFLAGS_X="$CPPFLAGS"
831	LIBS_X="$LIBS"
832	if test "$static_link" != 0; then
833		AC_CHECK_LIB(dl, dlopen)
834		AC_CHECK_LIB(z, inflate)
835	fi
836	CPPFLAGS_XX="$CPPFLAGS"
837	LIBS_XX="$LIBS"
838	if test "$cf_result" = no && test "$ssld" = yes -o "$ssld" = openssl; then
839		if test "$cf_openssl_pkgconfig" = no; then
840			pkgconfig_openssl=no
841		else
842			PKG_CHECK_MODULES(OPENSSL, openssl, pkgconfig_openssl=yes, pkgconfig_openssl=no)
843			if test "$PKG_CONFIG" != no -a "$pkgconfig_openssl" = no; then
844				AC_MSG_RESULT(no)
845			fi
846		fi
847		if test "$pkgconfig_openssl" = yes; then
848			AC_MSG_CHECKING([for OpenSSL])
849			CPPFLAGS="$CPPFLAGS_XX $OPENSSL_CFLAGS"
850			LIBS="$OPENSSL_LIBS $LIBS_XX"
851			AC_TRY_LINK([#include <stdio.h>
852#include <openssl/ssl.h>], [SSL_CTX_new((void *)0)], cf_result=openssl, cf_result=no)
853			AC_MSG_RESULT($cf_result)
854		fi
855	fi
856
857	if test "$cf_result" = no && test "$ssld" != nss; then
858		AC_MSG_CHECKING([for OpenSSL])
859		if test "$ssld" = yes -o "$ssld" = openssl; then
860			ssld=". /usr /usr/local /usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/local/www /usr/lib/ssl /usr/local /usr/pkg /opt /opt/openssl"
861		fi
862		for ssldir in $ssld; do
863			if test "$cf_result" = no; then
864				if test ! -z "$ssldir" && test "$ssldir" != /usr && test "$ssldir" != .; then
865					LIBS="-L$ssldir/lib -lssl -lcrypto $LIBS_XX"
866					CPPFLAGS="$CPPFLAGS_XX -I$ssldir/include"
867				else
868					LIBS="-lssl -lcrypto $LIBS_XX"
869					CPPFLAGS="$CPPFLAGS_XX"
870				fi
871				AC_TRY_LINK([#include <stdio.h>
872#include <openssl/ssl.h>], [SSL_CTX_new((void *)0)], cf_result=openssl, cf_result=no)
873			fi
874		done
875		AC_MSG_RESULT($cf_result)
876	fi
877
878	if test "$cf_result" = no && test "$ssld" = yes -o "$ssld" = nss; then
879		if test "$cf_openssl_pkgconfig" = no; then
880			pkgconfig_nss=no
881		else
882			PKG_CHECK_MODULES(NSS, nss, pkgconfig_nss=yes, pkgconfig_nss=no)
883			if test "$PKG_CONFIG" != no -a "$pkgconfig_nss" = no; then
884				AC_MSG_RESULT(no)
885			fi
886		fi
887		if test "$pkgconfig_nss" = no; then
888			NSS_CFLAGS=""
889			NSS_LIBS=""
890		fi
891		CPPFLAGS="$CPPFLAGS_X $NSS_CFLAGS"
892		LIBS="-lnss_compat_ossl $NSS_LIBS $LIBS_X"
893		AC_MSG_CHECKING([for NSS-compat-ossl])
894		AC_TRY_LINK([#include <nss_compat_ossl/nss_compat_ossl.h>], [SSL_CTX_new((void *)0)], cf_result=nss, cf_result=no)
895		AC_MSG_RESULT($cf_result)
896	fi
897
898	if test "$cf_result" = no; then
899		if test -n "$withval" -a "$withval" != no; then
900			AC_MSG_ERROR("OpenSSL not found")
901		fi
902	        CPPFLAGS="$CPPFLAGS_X"
903        	LIBS="$LIBS_X"
904	else
905		AC_DEFINE(HAVE_SSL)
906		if test "$cf_result" = openssl; then
907			AC_DEFINE(HAVE_OPENSSL)
908			AC_CHECK_HEADERS(openssl/x509v3.h)
909		fi
910		if test "$cf_result" = nss; then
911			AC_DEFINE(HAVE_NSS)
912		fi
913		AC_HAVE_FUNCS(ASN1_STRING_get0_data ASN1_STRING_to_UTF8 OPENSSL_cleanup OPENSSL_init_ssl RAND_add RAND_egd RAND_file_name RAND_load_file RAND_write_file SSL_SESSION_is_resumable SSL_get0_verified_chain SSL_get1_peer_certificate SSL_get1_session SSL_load_error_strings SSL_set_security_level X509_check_host X509_check_ip)
914		AC_CACHE_CHECK([for CRYPTO_set_mem_functions without file/line], ac_cv_have_crypto_set_mem_functions_1,
915			AC_TRY_LINK([#include <openssl/crypto.h>
916			static int csmf(void *(*m)(size_t), void *(*r)(void *, size_t), void (*f)(void *)) { return 0; }
917			], [return (int)(CRYPTO_set_mem_functions - csmf);], ac_cv_have_crypto_set_mem_functions_1=yes, ac_cv_have_crypto_set_mem_functions_1=no)
918		)
919		if test "$ac_cv_have_crypto_set_mem_functions_1" = yes; then
920			AC_DEFINE(HAVE_CRYPTO_SET_MEM_FUNCTIONS_1)
921		fi
922		AC_CACHE_CHECK([for CRYPTO_set_mem_functions with file/line], ac_cv_have_crypto_set_mem_functions_2,
923			AC_TRY_LINK([#include <openssl/crypto.h>
924			static int csmf(void *(*m)(size_t, const char *, int), void *(*r)(void *, size_t, const char *, int), void (*f)(void *, const char *, int)) { return 0; }
925			], [return (int)(CRYPTO_set_mem_functions - csmf);], ac_cv_have_crypto_set_mem_functions_2=yes, ac_cv_have_crypto_set_mem_functions_2=no)
926		)
927		if test "$ac_cv_have_crypto_set_mem_functions_2" = yes; then
928			AC_DEFINE(HAVE_CRYPTO_SET_MEM_FUNCTIONS_2)
929		fi
930	fi
931fi
932#endif
933cf_have_ssl=$cf_result
934
935AC_ARG_WITH(zlib, [  --without-zlib          compile without zlib compression],[if test "$withval" = no; then disable_zlib=yes; else disable_zlib=no; fi])
936AC_ARG_WITH(brotli, [  --without-brotli        compile without brotli compression],[if test "$withval" = no; then disable_brotli=yes; else disable_brotli=no; fi])
937AC_ARG_WITH(zstd, [  --without-zstd          compile without zstandard compression],[if test "$withval" = no; then disable_zstd=yes; else disable_zstd=no; fi])
938AC_ARG_WITH(bzip2, [  --without-bzip2         compile without bzip2 compression],[if test "$withval" = no; then disable_bzip2=yes; else disable_bzip2=no; fi])
939AC_ARG_WITH(lzma, [  --without-lzma          compile without lzma compression],[if test "$withval" = no; then disable_lzma=yes; else disable_lzma=no; fi])
940AC_ARG_WITH(lzip, [  --without-lzip          compile without lzip compression],[if test "$withval" = no; then disable_lzip=yes; else disable_lzip=no; fi])
941compression=""
942
943if test "$disable_zlib" != yes; then
944	AC_CHECK_HEADERS(zlib.h)
945	AC_CHECK_LIB(z, inflate)
946	if test "$ac_cv_header_zlib_h" = yes && test "$ac_cv_lib_z_inflate" = yes; then
947		AC_DEFINE(HAVE_ZLIB)
948		compression="$compression ZLIB"
949	fi
950fi
951
952if test "$disable_brotli" != yes; then
953	AC_CHECK_HEADERS(brotli/decode.h)
954	AC_CHECK_LIB(brotlidec, BrotliDecoderDecompressStream)
955	if test "$ac_cv_header_brotli_decode_h" = yes && test "$ac_cv_lib_brotlidec_BrotliDecoderDecompressStream" = yes; then
956		AC_DEFINE(HAVE_BROTLI)
957		compression="$compression BROTLI"
958	fi
959fi
960
961if test "$disable_zstd" != yes; then
962	AC_CHECK_HEADERS(zstd.h)
963	AC_CHECK_LIB(zstd, ZSTD_decompressStream)
964	if test "$ac_cv_header_zstd_h" = yes && test "$ac_cv_lib_zstd_ZSTD_decompressStream" = yes; then
965		AC_HAVE_FUNCS(ZSTD_getErrorCode)
966		AC_DEFINE(HAVE_ZSTD)
967		compression="$compression ZSTD"
968	fi
969fi
970
971if test "$disable_bzip2" != yes; then
972	AC_CHECK_HEADERS(bzlib.h)
973	AC_CHECK_LIB(bz2, BZ2_bzDecompress)
974	if test "$ac_cv_header_bzlib_h" = yes && test "$ac_cv_lib_bz2_BZ2_bzDecompress" = yes; then
975		AC_DEFINE(HAVE_BZIP2)
976		compression="$compression BZIP2"
977	fi
978fi
979
980if test "$disable_lzma" != yes; then
981	AC_CHECK_HEADERS(lzma.h)
982	AC_CHECK_LIB(lzma, lzma_auto_decoder)
983	if test "$ac_cv_header_lzma_h" = yes && test "$ac_cv_lib_lzma_lzma_auto_decoder" = yes; then
984		AC_DEFINE(HAVE_LZMA)
985		compression="$compression LZMA"
986	fi
987fi
988
989if test "$disable_lzip" != yes; then
990	AC_CHECK_HEADERS(lzlib.h)
991	AC_CHECK_LIB(lz, LZ_decompress_open)
992	if test "$ac_cv_header_lzlib_h" = yes && test "$ac_cv_lib_lz_LZ_decompress_open" = yes; then
993		AC_DEFINE(HAVE_LZIP)
994		compression="$compression LZIP"
995	fi
996fi
997
998
999cf_have_atheos=no
1000cf_have_haiku=no
1001
1002if test "$cf_use_graphics" != no; then
1003	AC_DEFINE(G)
1004
1005AC_ARG_WITH(openmp, [  --without-openmp        compile without OpenMP],[if test "$withval" = no; then disable_openmp=yes; else disable_openmp=no; fi])
1006cf_have_openmp=no
1007if test "$disable_openmp" != yes; then
1008	AC_CACHE_CHECK([for OpenMP], ac_cv_have_openmp,
1009		ac_cv_have_openmp=no
1010		for openmp_cflags in "" -fopenmp -openmp -fopenmp=libgomp -mp -xopenmp -omp -qsmp=omp "-mp -lstdc++"; do
1011			CFLAGS_X="$CFLAGS"
1012			CFLAGS="$CFLAGS $openmp_cflags"
1013			AC_TRY_LINK([#include <omp.h>], [
1014			int enabled = 1;
1015			int i = 1;
1016			int j = 3;
1017			omp_set_dynamic(0);
1018			i += omp_get_max_threads();
1019			omp_set_num_threads(4);
1020#pragma omp parallel default(none) firstprivate(i) shared(j) if (enabled)
1021			{
1022				int n;
1023				i += omp_get_num_threads() + omp_get_thread_num();
1024#pragma omp for nowait
1025				for (n = 0; n < 10; n++)
1026					i += j / i;
1027			}
1028			], ac_cv_have_openmp="$openmp_cflags")
1029			CFLAGS="$CFLAGS_X"
1030			if test "$ac_cv_have_openmp" != no; then
1031				break
1032			fi
1033		done
1034	)
1035	if test "$ac_cv_have_openmp" != no; then
1036		CFLAGS="$CFLAGS $ac_cv_have_openmp"
1037		cf_have_openmp=yes
1038		AC_DEFINE(HAVE_OPENMP)
1039	fi
1040fi
1041
1042AC_ARG_WITH(svgalib, [  --without-svgalib       compile without svgalib graphics driver],[if test "$withval" = no; then disable_svgalib=yes; else disable_svgalib=no; fi])
1043AC_ARG_WITH(x, [  --without-x             compile without X Window System graphics driver],[if test "$withval" = no; then disable_x=yes; else disable_x=no; fi])
1044AC_ARG_WITH(fb, [  --without-fb            compile without Linux Framebuffer graphics driver],[if test "$withval" = no; then disable_fb=yes; else disable_fb=no; fi])
1045AC_ARG_WITH(directfb, [  --without-directfb      compile without DirectFB graphics driver],[if test "$withval" = no; then disable_directfb=yes; else disable_directfb=no; fi])
1046dnl AC_ARG_WITH(sdl, [  --without-sdl           compile without SDL graphics driver],[if test "$withval" = no; then disable_sdl=yes; else disable_sdl=no; fi])
1047AC_ARG_WITH(pmshell, [  --without-pmshell       compile without PMShell graphics driver],[if test "$withval" = no; then disable_pmshell=yes; else disable_pmshell=no; fi])
1048AC_ARG_WITH(windows, [  --without-windows       compile without Windows graphics driver],[if test "$withval" = no; then disable_windows=yes; else disable_windows=no; fi])
1049AC_ARG_WITH(atheos, [  --without-atheos        compile without Atheos graphics driver],[if test "$withval" = no; then disable_atheos=yes; else disable_atheos=no; fi])
1050AC_ARG_WITH(haiku, [  --without-haiku         compile without Haiku graphics driver],[if test "$withval" = no; then disable_haiku=yes; else disable_haiku=no; fi])
1051AC_ARG_WITH(grx, [  --without-grx           compile without DOS GRX graphics driver],[if test "$withval" = no; then disable_grx=yes; else disable_grx=no; fi])
1052
1053	drivers=""
1054
1055if test "$disable_svgalib" != yes; then
1056	LIBS_X="$LIBS"
1057	if test "$static_link" != 0; then
1058		AC_CHECK_LIB(x86, LRMI_init)
1059	fi
1060	LIBS="-lvga $LIBS"
1061	AC_CACHE_CHECK([for svgalib], ac_cv_have_svgalib,
1062		AC_TRY_LINK([#include <vga.h>], [vga_setmode(0)], ac_cv_have_svgalib=yes, ac_cv_have_svgalib=no)
1063	)
1064
1065	if test "$ac_cv_have_svgalib" = yes; then
1066		AC_HAVE_FUNCS(vga_runinbackground_version mouse_getposition_6d)
1067		AC_DEFINE(GRDRV_SVGALIB)
1068		drivers="$drivers SVGALIB"
1069	else
1070		LIBS="$LIBS_X"
1071	fi
1072fi
1073
1074if test "$disable_fb" != yes; then
1075	AC_CHECK_HEADERS(linux/fb.h linux/kd.h linux/vt.h sys/mman.h)
1076	if test "$ac_cv_header_linux_fb_h" = yes && test "$ac_cv_header_linux_kd_h" = yes && test "$ac_cv_header_linux_vt_h" = yes && test "$ac_cv_header_sys_mman_h" = yes && test "$ac_cv_header_sys_ioctl_h" = yes && test "$cf_have_gpm" = yes; then
1077		AC_DEFINE(GRDRV_FB)
1078		drivers="$drivers FB"
1079	fi
1080fi
1081
1082if test "$disable_directfb" != yes; then
1083	AC_PATH_PROG(DIRECTFB_CONFIG, directfb-config, no)
1084	if test "$DIRECTFB_CONFIG" != "no"; then
1085	        AC_MSG_CHECKING(for DirectFB >= 0.9.17)
1086        	directfb_version=`$DIRECTFB_CONFIG --version`
1087		if expr $directfb_version \>= 0.9.17 >/dev/null; then
1088			AC_MSG_RESULT(yes)
1089
1090			DIRECTFB_CFLAGS="`$DIRECTFB_CONFIG --cflags`"
1091			DIRECTFB_LIBS="`$DIRECTFB_CONFIG --libs`"
1092			pkgconfig_directfb=yes
1093		else
1094			AC_MSG_RESULT(no)
1095			pkgconfig_directfb=no
1096		fi
1097	else
1098		PKG_CHECK_MODULES(DIRECTFB, directfb, pkgconfig_directfb=yes, pkgconfig_directfb=no)
1099		if test "$PKG_CONFIG" != no -a "$pkgconfig_directfb" = no; then
1100			AC_MSG_RESULT(no)
1101		fi
1102	fi
1103
1104	if test "$pkgconfig_directfb" = "yes"; then
1105		CPPFLAGS_X="$CPPFLAGS"
1106		LIBS_X="$LIBS"
1107
1108		CPPFLAGS="$CPPFLAGS $DIRECTFB_CFLAGS"
1109		LIBS="$DIRECTFB_LIBS $LIBS"
1110
1111		AC_CACHE_CHECK([for DirectFBInit], ac_cv_have_directfbinit,
1112			AC_TRY_LINK([#include <directfb.h>], [DirectFBInit(NULL, NULL)], ac_cv_have_directfbinit=yes, ac_cv_have_directfbinit=no)
1113		)
1114
1115		if test "$ac_cv_have_directfbinit" = yes; then
1116			AC_DEFINE(GRDRV_DIRECTFB)
1117			drivers="$drivers DIRECTFB"
1118		else
1119			CPPFLAGS="$CPPFLAGS_X"
1120			LIBS="$LIBS_X"
1121		fi
1122	fi
1123fi
1124
1125if test "$disable_x" != yes; then
1126	CPPFLAGS_X="$CPPFLAGS"
1127	LIBS_X="$LIBS"
1128
1129	AC_PATH_X
1130
1131	if test "$static_link" != 0; then
1132		AC_CHECK_LIB(pthread, pthread_create)
1133		AC_CHECK_LIB(dl, dlopen)
1134		AC_CHECK_LIB(Xdmcp, XdmcpWrap)
1135		AC_CHECK_LIB(Xau, XauGetBestAuthByAddr)
1136		AC_CHECK_LIB(xcb, xcb_connect)
1137		AC_CHECK_LIB(xcb-xlib, xcb_get_request_sent)
1138	fi
1139
1140	LIBS="-lX11 $LIBS"
1141	if test "$have_x" = yes; then
1142		test -n "$x_libraries" && LIBS="-L$x_libraries $LIBS"
1143		test -n "$x_includes" && CPPFLAGS="$CPPFLAGS -I$x_includes"
1144	fi
1145
1146	AC_CHECK_HEADERS(X11/Xlib.h X11/X.h X11/Xutil.h X11/Xatom.h X11/Xlocale.h X11/keysymdef.h)
1147
1148	AC_HAVE_FUNCS(XOpenDisplay XOpenIM XCloseIM XCreateIC XDestroyIC XwcLookupString Xutf8LookupString XSupportsLocale XmbTextListToTextProperty)
1149
1150	AC_CACHE_CHECK([for Xsetlocale], ac_cv_have_Xsetlocale,
1151		AC_TRY_LINK([#include <X11/Xlocale.h>], [setlocale(0, NULL); return 0;], ac_cv_have_Xsetlocale=yes, ac_cv_have_Xsetlocale=no)
1152	)
1153	if test "$ac_cv_have_Xsetlocale" = yes; then
1154		AC_DEFINE(HAVE_XSETLOCALE)
1155	fi
1156
1157
1158	if test "$have_x" = yes -o "$ac_cv_have_x2" != no && test "$ac_cv_func_XOpenDisplay" = yes && test "$ac_cv_header_X11_Xlib_h" = yes && test "$ac_cv_header_X11_X_h" = yes && test "$ac_cv_header_X11_Xutil_h" = yes && test "$ac_cv_header_X11_Xatom_h" = yes && test "$ac_cv_header_X11_keysymdef_h" = yes; then
1159		AC_DEFINE(GRDRV_X)
1160		drivers="$drivers X"
1161	else
1162		CPPFLAGS="$CPPFLAGS_X"
1163		LIBS="$LIBS_X"
1164	fi
1165fi
1166
1167dnl if test "$disable_sdl" != yes; then
1168dnl 	AC_PATH_PROG(SDL_CONFIG, sdl-config, no)
1169dnl 	if test "$SDL_CONFIG" != "no"; then
1170dnl 	        AC_MSG_CHECKING(for SDL >= 1.2.0)
1171dnl         	sdl_version="`$SDL_CONFIG --version`"
1172dnl 		if expr "$sdl_version" \>= 1.2.0 >/dev/null; then
1173dnl 			AC_MSG_RESULT(yes)
1174dnl 			SDL_CFLAGS="`$SDL_CONFIG --cflags`"
1175dnl 			SDL_LIBS="`$SDL_CONFIG --libs`"
1176dnl 	           	AC_DEFINE(GRDRV_SDL)
1177dnl         	   	drivers="$drivers SDL"
1178dnl 			CPPFLAGS="$CPPFLAGS $SDL_CFLAGS"
1179dnl 			AC_CHECK_LIB(Xext, XextAddDisplay)
1180dnl 			LIBS="$SDL_LIBS $LIBS"
1181dnl 		else
1182dnl 			AC_MSG_RESULT(no)
1183dnl 		fi
1184dnl 	fi
1185dnl fi
1186
1187if test "$disable_pmshell" != yes && test "$ac_cv_header_sys_fmutex_h" = yes && test "$ac_cv_have_beginthread" = yes; then
1188	AC_CACHE_CHECK([for pmshell], ac_cv_have_pmshell,
1189		AC_TRY_LINK([#define INCL_WIN
1190			#define INCL_GPI
1191			#include <os2.h>
1192			#include <sys/fmutex.h>],
1193			[_fmutex mutex;
1194			WinDrawText(NULLHANDLE, -1, NULL, NULL, 0, 0, 0),
1195			GpiSetPel(NULLHANDLE, NULL)],
1196		ac_cv_have_pmshell=yes, ac_cv_have_pmshell=no)
1197	)
1198
1199	if test "$ac_cv_have_pmshell" = yes; then
1200		AC_DEFINE(GRDRV_PMSHELL)
1201		drivers="$drivers PMSHELL"
1202	fi
1203fi
1204
1205if test "$disable_windows" != yes; then
1206	LIBS_X="$LIBS"
1207	AC_CHECK_HEADERS(windowsx.h)
1208	AC_CACHE_CHECK([for ReleaseDC], ac_cv_have_windows11,
1209		AC_TRY_LINK([
1210			#include <windows.h>
1211			#include <pthread.h>],
1212			[ReleaseDC(NULL, NULL)],
1213		ac_cv_have_windows11=yes, ac_cv_have_windows11=no)
1214	)
1215	if test "$ac_cv_have_windows11" = no; then
1216		LIBS="-luser32 $LIBS"
1217		AC_CACHE_CHECK([for ReleaseDC in -luser32], ac_cv_have_windows12,
1218			AC_TRY_LINK([
1219				#include <windows.h>
1220				#include <pthread.h>],
1221				[ReleaseDC(NULL, NULL)],
1222			ac_cv_have_windows12=yes, ac_cv_have_windows12=no)
1223		)
1224	fi
1225	AC_CACHE_CHECK([for GdiFlush], ac_cv_have_windows21,
1226		AC_TRY_LINK([
1227			#include <windows.h>
1228			#include <pthread.h>],
1229			[GdiFlush()],
1230		ac_cv_have_windows21=yes, ac_cv_have_windows21=no)
1231	)
1232	if test "$ac_cv_have_windows21" = no; then
1233		LIBS="-lgdi32 $LIBS"
1234		AC_CACHE_CHECK([for GdiFlush in -lgdi32], ac_cv_have_windows22,
1235			AC_TRY_LINK([
1236				#include <windows.h>
1237				#include <pthread.h>],
1238				[GdiFlush()],
1239			ac_cv_have_windows22=yes, ac_cv_have_windows22=no)
1240		)
1241	fi
1242	if test "$ac_cv_have_windows11" = yes -o "$ac_cv_have_windows12" = yes &&
1243	   test "$ac_cv_have_windows21" = yes -o "$ac_cv_have_windows22" = yes; then
1244		AC_DEFINE(GRDRV_PMSHELL)
1245		drivers="$drivers WINDOWS"
1246	else
1247		LIBS="$LIBS_X"
1248	fi
1249fi
1250
1251if test "$disable_atheos" != yes; then
1252	old_ext="$ac_ext"
1253	ac_ext=cpp
1254	AC_CHECK_HEADERS(gui/view.h gui/window.h gui/desktop.h gui/bitmap.h util/locker.h util/application.h)
1255	ac_ext="$old_ext"
1256
1257	if test "$ac_cv_header_atheos_threads_h" = yes &&
1258	   test "$ac_cv_header_gui_view_h" = yes &&
1259	   test "$ac_cv_header_gui_window_h" = yes &&
1260	   test "$ac_cv_header_gui_desktop_h" = yes &&
1261	   test "$ac_cv_header_gui_bitmap_h" = yes &&
1262	   test "$ac_cv_header_util_locker_h" = yes &&
1263	   test "$ac_cv_header_util_application_h" = yes; then
1264		AC_CHECK_LIB(stdc++, main)
1265		AC_CHECK_LIB(atheos, main)
1266		if test "$ac_cv_lib_atheos_main" = no; then
1267			AC_CHECK_LIB(syllable, main)
1268		fi
1269		if test "$ac_cv_lib_atheos_main" = yes -o "$ac_cv_lib_syllable_main" = yes; then
1270			AC_PROG_CXX
1271			AC_DEFINE(GRDRV_ATHEOS)
1272			drivers="$drivers ATHEOS"
1273			cf_have_atheos=yes
1274		fi
1275	fi
1276fi
1277
1278if test "$disable_haiku" != yes ; then
1279	old_ext="$ac_ext"
1280	ac_ext=cpp
1281	AC_CHECK_HEADERS(interface/View.h interface/Window.h interface/Screen.h interface/Bitmap.h support/Locker.h app/Application.h)
1282	ac_ext="$old_ext"
1283
1284	if test "$ac_cv_header_interface_View_h" = yes &&
1285	   test "$ac_cv_header_interface_Window_h" = yes &&
1286	   test "$ac_cv_header_interface_Screen_h" = yes &&
1287	   test "$ac_cv_header_interface_Bitmap_h" = yes &&
1288	   test "$ac_cv_header_support_Locker_h" = yes &&
1289	   test "$ac_cv_header_app_Application_h" = yes; then
1290		AC_CHECK_LIB(stdc++, main)
1291		AC_CHECK_LIB(be, main)
1292		if test "$ac_cv_lib_be_main" = yes; then
1293			AC_PROG_CXX
1294			AC_DEFINE(GRDRV_HAIKU)
1295			drivers="$drivers HAIKU"
1296			cf_have_haiku=yes
1297		fi
1298	fi
1299fi
1300
1301if test "$disable_grx" != yes -a "$ac_cv_have_djgpp" = yes; then
1302	LIBS_X="$LIBS"
1303	AC_CHECK_HEADERS(grx20.h)
1304	AC_CHECK_LIB(grx20, GrSetMode)
1305	if test "$ac_cv_header_grx20_h" = yes &&
1306	   test "$ac_cv_lib_grx20_GrSetMode" = yes; then
1307		AC_DEFINE(GRDRV_GRX)
1308		drivers="$drivers GRX"
1309	else
1310		LIBS="$LIBS_X"
1311	fi
1312fi
1313
1314
1315	AC_ARG_WITH(freetype, [  --without-freetype      compile without freetype support],[if test "$withval" = no; then disable_freetype=yes; else disable_freetype=no; fi])
1316	font_rendering=INTERNAL
1317	if test "$disable_freetype" != yes; then
1318		CPPFLAGS_X="$CPPFLAGS"
1319		LIBS_X="$LIBS"
1320		AC_ARG_ENABLE(freetype-pkgconfig, [  --disable-freetype-pkgconfig don't use pkgconfig when searching for libfreetype], cf_libfreetype_pkgconfig="$enableval", cf_libfreetype_pkgconfig=yes)
1321		if test "$cf_libfreetype_pkgconfig" != no; then
1322			PKG_CHECK_MODULES(LIBFREETYPE, freetype2 fontconfig, pkgconfig_libfreetype=yes, pkgconfig_libfreetype=no)
1323			if test "$PKG_CONFIG" != no -a "$pkgconfig_libfreetype" = no; then
1324				AC_MSG_RESULT(no)
1325			fi
1326			if test "$pkgconfig_libfreetype" = "yes"; then
1327				CPPFLAGS="$CPPFLAGS $LIBFREETYPE_CFLAGS"
1328				LIBS="$LIBFREETYPE_LIBS $LIBS"
1329			fi
1330		fi
1331
1332		AC_CHECK_HEADERS(fontconfig/fontconfig.h ft2build.h)
1333		AC_HAVE_FUNCS(FcInit FT_Init_FreeType)
1334		if test "$ac_cv_func_FT_Init_FreeType" != yes; then
1335			AC_CHECK_LIB(freetype, FT_Init_FreeType)
1336		fi
1337		if test "$ac_cv_func_FcInit" != yes; then
1338			AC_CHECK_LIB(fontconfig, FcInit)
1339		fi
1340		if test "$ac_cv_header_ft2build_h" = yes -a "$ac_cv_header_fontconfig_fontconfig_h" = yes &&
1341		   test "$ac_cv_func_FT_Init_FreeType" = yes -o "$ac_cv_lib_freetype_FT_Init_FreeType" = yes &&
1342		   test "$ac_cv_func_FcInit" = yes -o "$ac_cv_lib_fontconfig_FcInit" = yes; then
1343			AC_CHECK_FUNCS(FcGetVersion FT_Library_Version)
1344			AC_DEFINE(HAVE_FREETYPE)
1345			font_rendering=FREETYPE
1346		else
1347			CPPFLAGS="$CPPFLAGS_X"
1348			LIBS="$LIBS_X"
1349		fi
1350	fi
1351
1352
1353
1354	AC_ARG_ENABLE(png-pkgconfig, [  --disable-png-pkgconfig don't use pkgconfig when searching for libpng], cf_libpng_pkgconfig="$enableval", cf_libpng_pkgconfig=yes)
1355
1356	if test "$static_link" != 0; then
1357		AC_CHECK_LIB(z, inflate)
1358	fi
1359	if test "$cf_libpng_pkgconfig" != no; then
1360		PKG_CHECK_MODULES(LIBPNG, libpng >= 1.0.0, pkgconfig_libpng=yes, pkgconfig_libpng=no)
1361		if test "$PKG_CONFIG" != no -a "$pkgconfig_libpng" = no; then
1362			AC_MSG_RESULT(no)
1363		fi
1364		if test "$pkgconfig_libpng" = "yes"; then
1365			CPPFLAGS="$CPPFLAGS $LIBPNG_CFLAGS"
1366			LIBS="$LIBPNG_LIBS $LIBS"
1367		else
1368			PKG_CHECK_MODULES(LIBPNG12, libpng12, pkgconfig_libpng12=yes, pkgconfig_libpng12=no)
1369			if test "$PKG_CONFIG" != no -a "$pkgconfig_libpng12" = no; then
1370				AC_MSG_RESULT(no)
1371			fi
1372			if test "$pkgconfig_libpng12" = "yes"; then
1373				CPPFLAGS="$CPPFLAGS $LIBPNG12_CFLAGS"
1374				LIBS="$LIBPNG12_LIBS $LIBS"
1375			fi
1376		fi
1377	fi
1378	AC_CHECK_HEADERS(png.h libpng/png.h)
1379	AC_HAVE_FUNCS(png_create_info_struct)
1380	if test "$ac_cv_func_png_create_info_struct" != yes; then
1381		AC_CHECK_LIB(png, png_create_info_struct)
1382	fi
1383	if test "$ac_cv_header_png_h" != yes -a "$ac_cv_header_libpng_png_h" != yes || test "$ac_cv_func_png_create_info_struct" != yes -a "$ac_cv_lib_png_png_create_info_struct" != yes; then
1384		AC_ERROR([You need libpng to compile Links in graphics mode])
1385	fi
1386
1387	AC_HAVE_FUNCS(png_set_rgb_to_gray png_get_libpng_ver png_get_image_width png_get_image_height png_get_gAMA png_get_color_type png_get_bit_depth png_set_strip_alpha png_get_valid png_get_sRGB)
1388	if test "$ac_cv_func_png_get_image_width" != yes ||
1389	   test "$ac_cv_func_png_get_image_height" != yes ||
1390	   test "$ac_cv_func_png_get_gAMA" != yes ||
1391	   test "$ac_cv_func_png_get_color_type" != yes ||
1392	   test "$ac_cv_func_png_get_bit_depth" != yes ||
1393	   test "$ac_cv_func_png_set_strip_alpha" != yes ||
1394	   test "$ac_cv_func_png_get_valid" != yes ||
1395	   test "$ac_cv_func_png_get_sRGB" != yes; then
1396		AC_ERROR([Your libpng is too old])
1397	fi
1398
1399	AC_ARG_WITH(libjpeg, [  --without-libjpeg	  compile without JPEG support],[if test "$withval" = no; then disable_jpeg=yes; else disable_jpeg=no; fi])
1400	cf_have_jpeg=no
1401	if test "$disable_jpeg" != yes; then
1402		AC_CHECK_HEADERS(jpeglib.h)
1403		AC_CHECK_LIB(jpeg, jpeg_destroy_decompress)
1404		if test "$ac_cv_header_jpeglib_h" = yes && test "$ac_cv_lib_jpeg_jpeg_destroy_decompress" = yes; then
1405			AC_DEFINE(HAVE_JPEG)
1406			cf_have_jpeg=yes
1407			image_formats="$image_formats JPEG"
1408		fi
1409	fi
1410
1411	AC_ARG_WITH(libtiff, [  --without-libtiff       compile without TIFF support],[if test "$withval" = no; then disable_tiff=yes; else disable_tiff=no; fi])
1412	cf_have_tiff=no
1413	if test "$disable_tiff" != yes; then
1414		if test "$static_link" != 0; then
1415			AC_CHECK_LIB(jbig, jbg_enc_init)
1416		fi
1417		AC_CHECK_HEADERS(tiffio.h)
1418		AC_CHECK_LIB(tiff, TIFFClientOpen)
1419		if test "$ac_cv_header_tiffio_h" = yes && test "$ac_cv_lib_tiff_TIFFClientOpen" = yes; then
1420			AC_DEFINE(HAVE_TIFF)
1421			cf_have_tiff=yes
1422			image_formats="$image_formats TIFF"
1423		fi
1424	fi
1425
1426	AC_ARG_WITH(librsvg, [  --without-librsvg       compile without SVG support],[if test "$withval" = no; then disable_svg=yes; else disable_svg=no; fi])
1427	cf_have_svg=no
1428	if test "$disable_svg" != yes && test "$font_rendering" = FREETYPE; then
1429		CPPFLAGS_X="$CPPFLAGS"
1430		LIBS_X="$LIBS"
1431		AC_ARG_ENABLE(svg-pkgconfig, [  --disable-svg-pkgconfig don't use pkgconfig when searching for librsvg], cf_librsvg_pkgconfig="$enableval", cf_librsvg_pkgconfig=yes)
1432		if test "$cf_librsvg_pkgconfig" != no; then
1433			PKG_CHECK_MODULES(LIBRSVG, librsvg-2.0 >= 2.0.0 cairo, pkgconfig_librsvg=yes, pkgconfig_librsvg=no)
1434			if test "$PKG_CONFIG" != no -a "$pkgconfig_librsvg" = no; then
1435				AC_MSG_RESULT(no)
1436			fi
1437			if test "$pkgconfig_librsvg" = "yes"; then
1438				CPPFLAGS="$CPPFLAGS $LIBRSVG_CFLAGS"
1439				LIBS="$LIBRSVG_LIBS $LIBS"
1440			fi
1441		fi
1442
1443		AC_CHECK_HEADERS(cairo.h librsvg/rsvg.h librsvg/rsvg-cairo.h librsvg/librsvg-features.h)
1444		AC_HAVE_FUNCS(rsvg_handle_render_cairo rsvg_handle_read_stream_sync)
1445		if test "$ac_cv_func_rsvg_handle_render_cairo" != yes; then
1446			AC_CHECK_LIB(rsvg-2, rsvg_handle_render_cairo)
1447		fi
1448		if test "$ac_cv_header_cairo_h" = yes -a "$ac_cv_header_librsvg_rsvg_h" = yes && test "$ac_cv_func_rsvg_handle_render_cairo" = yes -o "$ac_cv_lib_rsvg_2_rsvg_handle_render_cairo" = yes; then
1449			AC_DEFINE(HAVE_SVG)
1450			cf_have_svg=yes
1451			image_formats="$image_formats SVG"
1452		else
1453			CPPFLAGS="$CPPFLAGS_X"
1454			LIBS="$LIBS_X"
1455		fi
1456	fi
1457
1458
1459	if test -z "$drivers" && test "$cf_use_graphics" != no; then
1460		AC_MSG_ERROR([No graphics drivers found.])
1461dnl	else
1462dnl		AC_MSG_RESULT([The following graphics drivers are available:$drivers])
1463	fi
1464fi
1465
1466
1467AM_CONDITIONAL(JAVASCRIPT, test "$cf_use_javascript" = yes)
1468
1469AM_CONDITIONAL(ATHEOS_GR, test "$cf_have_atheos" = yes)
1470AM_CONDITIONAL(HAIKU_GR, test "$cf_have_haiku" = yes)
1471
1472test "$ac_cv_have_emx" = yes && LDFLAGS="$LDFLAGS -Zexe"
1473
1474AC_HAVE_FUNCS(pthread_sigmask)
1475
1476if test "$ac_cv_func_pthread_sigmask" = yes; then
1477	AC_CHECK_LIB(pthread, pthread_sigmask)
1478fi
1479
1480AC_OUTPUT(Makefile)
1481
1482echo "---------------------------------------------------------"
1483echo "Configuration results:"
1484echo ""
1485echo "Event handler:		`echo $cf_have_libevent|tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`"
1486if test "$cf_have_ipv6" = yes; then
1487	echo "IPv6:			YES"
1488else
1489	echo "IPv6:			NO"
1490fi
1491compression="`echo "$compression"|sed 's/^ //'`"
1492if test -z "$compression"; then compression="NO"; fi
1493echo "Supported compression:	$compression"
1494echo "SSL support:		`echo $cf_have_ssl|tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`"
1495if test "$cf_use_javascript" = yes; then
1496	echo "Javascript enabled:	YES"
1497	echo "Regular expressions:	$reg_exp_mode"
1498fi
1499if test "$cf_enable_utf8" != no; then
1500	echo "UTF-8 terminal:		YES"
1501else
1502	echo "UTF-8 terminal:		NO"
1503fi
1504if test "$cf_have_gpm" = yes; then
1505	echo "GPM support:		YES"
1506else
1507	echo "GPM support:		NO"
1508fi
1509if test "$ac_cv_have_emx" = yes; then
1510	if test "$ac_cv_have_x2" != no; then
1511		echo "xterm for OS/2 support:	YES"
1512	else
1513		echo "xterm for OS/2 support:	NO"
1514	fi
1515fi
1516if test "$cf_use_graphics" != no; then
1517	echo "Graphics enabled:	YES"
1518	echo "Graphics drivers:	`echo "$drivers"|sed 's/^ //'`"
1519	echo "Font rendering:		$font_rendering"
1520	echo "Image formats:		$image_formats"
1521	echo "OpenMP:			`echo $cf_have_openmp|tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`"
1522else echo "Graphics enabled:	NO"; fi
1523echo "---------------------------------------------------------"
1524if test "$cf_have_ssl" = "nss"; then
1525	echo "!!! WARNING !!! NSS encryption library doesn't verify"
1526	echo "certificates and it can cause lockup of the whole browser"
1527	echo "if the server is not responding."
1528	echo "It is recommended to use OpenSSL instead."
1529	echo "---------------------------------------------------------"
1530fi
1531if test -n "`echo "$drivers"|grep -w X`" -a "$ac_cv_header_interix_interix_h" = yes; then
1532	echo "!!! WARNING !!! Xwindow in Interix is unreliable and it"
1533	echo "may cause browser lockup."
1534	echo "It is recommended to use Cygwin instead."
1535	echo "---------------------------------------------------------"
1536fi
1537if test -n "`echo "$drivers"|grep -w WINDOWS`" -a "$ac_cv_func_uwin_path" = yes; then
1538	echo "!!! WARNING !!! Windows driver in UWIN is buggy."
1539	echo "It is recommended to use Cygwin instead."
1540	echo "---------------------------------------------------------"
1541fi
1542
1543
1544dnl mv Makefile Makefile.tmp
1545dnl grep -v DEPS_MAGIC Makefile.tmp >Makefile
1546dnl rm Makefile.tmp
1547
1548