1# configure.ac
2
3AC_INIT([tmux], 3.2a)
4AC_PREREQ([2.60])
5
6AC_CONFIG_AUX_DIR(etc)
7AC_CONFIG_LIBOBJ_DIR(compat)
8AM_INIT_AUTOMAKE([foreign subdir-objects])
9
10AC_CANONICAL_HOST
11
12# When CFLAGS isn't set at this stage and gcc is detected by the macro below,
13# autoconf will automatically use CFLAGS="-O2 -g". Prevent that by using an
14# empty default.
15: ${CFLAGS=""}
16
17# Save user CPPFLAGS, CFLAGS and LDFLAGS. We need to change them because
18# AC_CHECK_HEADER doesn't give us any other way to update the include
19# paths. But for Makefile.am we want to use AM_CPPFLAGS and friends.
20SAVED_CFLAGS="$CFLAGS"
21SAVED_CPPFLAGS="$CPPFLAGS"
22SAVED_LDFLAGS="$LDFLAGS"
23
24# Is this oss-fuzz build?
25AC_ARG_ENABLE(
26	fuzzing,
27	AC_HELP_STRING(--enable-fuzzing, build fuzzers)
28)
29AC_ARG_VAR(
30	FUZZING_LIBS,
31	AC_HELP_STRING(libraries to link fuzzing targets with)
32)
33
34# Set up convenient fuzzing defaults before initializing compiler.
35if test "x$enable_fuzzing" = xyes; then
36	AC_DEFINE(NEED_FUZZING)
37	test "x$CC" = x && CC=clang
38	test "x$FUZZING_LIBS" = x && \
39		FUZZING_LIBS="-fsanitize=fuzzer"
40	test "x$SAVED_CFLAGS" = x && \
41		AM_CFLAGS="-g -fsanitize=fuzzer-no-link,address"
42fi
43
44# Set up the compiler in two different ways and say yes we may want to install.
45AC_PROG_CC
46AM_PROG_CC_C_O
47AC_PROG_CC_C99
48AC_PROG_CPP
49AC_PROG_EGREP
50AC_PROG_INSTALL
51AC_PROG_YACC
52PKG_PROG_PKG_CONFIG
53AC_USE_SYSTEM_EXTENSIONS
54
55# Default tmux.conf goes in /etc not ${prefix}/etc.
56test "$sysconfdir" = '${prefix}/etc' && sysconfdir=/etc
57
58# Is this --enable-debug?
59case "x$VERSION" in xnext*) enable_debug=yes;; esac
60AC_ARG_ENABLE(
61	debug,
62	AC_HELP_STRING(--enable-debug, enable debug build flags),
63)
64AM_CONDITIONAL(IS_DEBUG, test "x$enable_debug" = xyes)
65
66# Is this a static build?
67AC_ARG_ENABLE(
68	static,
69	AC_HELP_STRING(--enable-static, create a static build)
70)
71if test "x$enable_static" = xyes; then
72	test "x$PKG_CONFIG" != x && PKG_CONFIG="$PKG_CONFIG --static"
73	AM_LDFLAGS="-static $AM_LDFLAGS"
74	LDFLAGS="$AM_LDFLAGS $SAVED_LDFLAGS"
75fi
76
77# Do we need fuzzers?
78AM_CONDITIONAL(NEED_FUZZING, test "x$enable_fuzzing" = xyes)
79
80# Is this gcc?
81AM_CONDITIONAL(IS_GCC, test "x$GCC" = xyes -a "x$enable_fuzzing" != xyes)
82
83# Is this Sun CC?
84AC_EGREP_CPP(
85	yes,
86	[
87		#ifdef __SUNPRO_C
88		yes
89		#endif
90	],
91	found_suncc=yes,
92	found_suncc=no
93)
94AM_CONDITIONAL(IS_SUNCC, test "x$found_suncc" = xyes)
95
96# Check for various headers. Alternatives included from compat.h.
97AC_CHECK_HEADERS([ \
98	bitstring.h \
99	dirent.h \
100	fcntl.h \
101	inttypes.h \
102	libproc.h \
103	libutil.h \
104	ndir.h \
105	paths.h \
106	pty.h \
107	stdint.h \
108	sys/dir.h \
109	sys/ndir.h \
110	sys/tree.h \
111	util.h \
112])
113
114# Look for sys_signame.
115AC_SEARCH_LIBS(sys_signame, , AC_DEFINE(HAVE_SYS_SIGNAME))
116
117# Look for fmod.
118AC_CHECK_LIB(m, fmod)
119
120# Look for library needed for flock.
121AC_SEARCH_LIBS(flock, bsd)
122
123# Check for functions that are replaced or omitted.
124AC_CHECK_FUNCS([ \
125	dirfd \
126	flock \
127	prctl \
128	proc_pidinfo \
129	sysconf
130])
131
132# Check for functions with a compatibility implementation.
133AC_REPLACE_FUNCS([ \
134	asprintf \
135	cfmakeraw \
136	clock_gettime \
137	closefrom \
138	explicit_bzero \
139	fgetln \
140	freezero \
141	getdtablecount \
142	getdtablesize \
143	getline \
144	getprogname \
145	memmem \
146	setenv \
147	setproctitle \
148	strcasestr \
149	strlcat \
150	strlcpy \
151	strndup \
152	strsep \
153])
154AC_FUNC_STRNLEN
155
156# Check if strtonum works.
157AC_MSG_CHECKING([for working strtonum])
158AC_RUN_IFELSE([AC_LANG_PROGRAM(
159         [#include <stdlib.h>],
160         [return (strtonum("0", 0, 1, NULL) == 0 ? 0 : 1);]
161	 )],
162	 [AC_DEFINE(HAVE_STRTONUM) AC_MSG_RESULT(yes)],
163	 [AC_LIBOBJ(strtonum) AC_MSG_RESULT(no)]
164)
165
166# Clang sanitizers wrap reallocarray even if it isn't available on the target
167# system. When compiled it always returns NULL and crashes the program. To
168# detect this we need a more complicated test.
169AC_MSG_CHECKING([for working reallocarray])
170AC_RUN_IFELSE([AC_LANG_PROGRAM(
171		[#include <stdlib.h>],
172		[return (reallocarray(NULL, 1, 1) == NULL);]
173	)],
174	AC_MSG_RESULT(yes),
175	[AC_LIBOBJ(reallocarray) AC_MSG_RESULT([no])],
176	[AC_LIBOBJ(reallocarray) AC_MSG_RESULT([no])]
177)
178AC_MSG_CHECKING([for working recallocarray])
179AC_RUN_IFELSE([AC_LANG_PROGRAM(
180		[#include <stdlib.h>],
181		[return (recallocarray(NULL, 1, 1, 1) == NULL);]
182	)],
183	AC_MSG_RESULT(yes),
184	[AC_LIBOBJ(recallocarray) AC_MSG_RESULT([no])],
185	[AC_LIBOBJ(recallocarray) AC_MSG_RESULT([no])]
186)
187
188# Look for clock_gettime. Must come before event_init.
189AC_SEARCH_LIBS(clock_gettime, rt)
190
191# Always use our getopt because 1) glibc's doesn't enforce argument order 2)
192# musl does not set optarg to NULL for flags without arguments (although it is
193# not required to, but it is helpful) 3) there are probably other weird
194# implementations.
195AC_LIBOBJ(getopt)
196
197# Look for libevent. Try libevent_core or libevent with pkg-config first then
198# look for the library.
199PKG_CHECK_MODULES(
200	LIBEVENT_CORE,
201	[libevent_core >= 2],
202	[
203		AM_CPPFLAGS="$LIBEVENT_CORE_CFLAGS $AM_CPPFLAGS"
204		CPPFLAGS="$AM_CPPFLAGS $SAVED_CPPFLAGS"
205		LIBS="$LIBEVENT_CORE_LIBS $LIBS"
206		found_libevent=yes
207	],
208	found_libevent=no
209)
210if test x$found_libevent = xno; then
211	PKG_CHECK_MODULES(
212		LIBEVENT,
213		[libevent >= 2],
214		[
215			AM_CPPFLAGS="$LIBEVENT_CFLAGS $AM_CPPFLAGS"
216			CPPFLAGS="$AM_CPPFLAGS $SAVED_CPPFLAGS"
217			LIBS="$LIBEVENT_LIBS $LIBS"
218			found_libevent=yes
219		],
220		found_libevent=no
221	)
222fi
223if test x$found_libevent = xno; then
224	AC_SEARCH_LIBS(
225		event_init,
226		[event_core event event-1.4],
227		found_libevent=yes,
228		found_libevent=no
229	)
230fi
231AC_CHECK_HEADER(
232	event2/event.h,
233	AC_DEFINE(HAVE_EVENT2_EVENT_H),
234	[
235		AC_CHECK_HEADER(
236			event.h,
237			AC_DEFINE(HAVE_EVENT_H),
238			found_libevent=no
239		)
240	]
241)
242if test "x$found_libevent" = xno; then
243	AC_MSG_ERROR("libevent not found")
244fi
245
246# Look for ncurses or curses. Try pkg-config first then directly for the
247# library.
248PKG_CHECK_MODULES(
249	LIBTINFO,
250	tinfo,
251	[
252		AM_CPPFLAGS="$LIBTINFO_CFLAGS $AM_CPPFLAGS"
253		CPPFLAGS="$LIBTINFO_CFLAGS $SAVED_CPPFLAGS"
254		LIBS="$LIBTINFO_LIBS $LIBS"
255		found_ncurses=yes
256	],
257	found_ncurses=no
258)
259if test "x$found_ncurses" = xno; then
260	PKG_CHECK_MODULES(
261		LIBNCURSES,
262		ncurses,
263		[
264			AM_CPPFLAGS="$LIBNCURSES_CFLAGS $AM_CPPFLAGS"
265			CPPFLAGS="$LIBNCURSES_CFLAGS $SAVED_CPPFLAGS"
266			LIBS="$LIBNCURSES_LIBS $LIBS"
267			found_ncurses=yes
268		],
269		found_ncurses=no
270	)
271fi
272if test "x$found_ncurses" = xno; then
273	PKG_CHECK_MODULES(
274		LIBNCURSESW,
275		ncursesw,
276		[
277			AM_CPPFLAGS="$LIBNCURSESW_CFLAGS $AM_CPPFLAGS"
278			CPPFLAGS="$LIBNCURSESW_CFLAGS $SAVED_CPPFLAGS"
279			LIBS="$LIBNCURSESW_LIBS $LIBS"
280			found_ncurses=yes
281		],
282		found_ncurses=no
283	)
284fi
285if test "x$found_ncurses" = xno; then
286	AC_SEARCH_LIBS(
287		setupterm,
288		[tinfo ncurses ncursesw],
289		found_ncurses=yes,
290		found_ncurses=no
291	)
292	if test "x$found_ncurses" = xyes; then
293		AC_CHECK_HEADER(
294			ncurses.h,
295			LIBS="$LIBS -lncurses",
296			found_ncurses=no
297		)
298	fi
299fi
300if test "x$found_ncurses" = xyes; then
301	AC_DEFINE(HAVE_NCURSES_H)
302else
303	AC_CHECK_LIB(
304		curses,
305		setupterm,
306		found_curses=yes,
307		found_curses=no
308	)
309	AC_CHECK_HEADER(
310		curses.h,
311		,
312		found_curses=no
313	)
314	if test "x$found_curses" = xyes; then
315		LIBS="$LIBS -lcurses"
316		AC_DEFINE(HAVE_CURSES_H)
317	else
318		AC_MSG_ERROR("curses not found")
319	fi
320fi
321
322# Look for utempter.
323AC_ARG_ENABLE(
324	utempter,
325	AC_HELP_STRING(--enable-utempter, use utempter if it is installed)
326)
327if test "x$enable_utempter" = xyes; then
328	AC_CHECK_HEADER(utempter.h, enable_utempter=yes, enable_utempter=no)
329	if test "x$enable_utempter" = xyes; then
330		AC_SEARCH_LIBS(
331			utempter_add_record,
332			utempter,
333			enable_utempter=yes,
334			enable_utempter=no
335		)
336	fi
337	if test "x$enable_utempter" = xyes; then
338		AC_DEFINE(HAVE_UTEMPTER)
339	else
340		AC_MSG_ERROR("utempter not found")
341	fi
342fi
343
344# Look for utf8proc.
345AC_ARG_ENABLE(
346	utf8proc,
347	AC_HELP_STRING(--enable-utf8proc, use utf8proc if it is installed)
348)
349if test "x$enable_utf8proc" = xyes; then
350	AC_CHECK_HEADER(utf8proc.h, enable_utf8proc=yes, enable_utf8proc=no)
351	if test "x$enable_utf8proc" = xyes; then
352		AC_SEARCH_LIBS(
353			utf8proc_charwidth,
354			utf8proc,
355			enable_utf8proc=yes,
356			enable_utf8proc=no
357		)
358	fi
359	if test "x$enable_utf8proc" = xyes; then
360		AC_DEFINE(HAVE_UTF8PROC)
361	else
362		AC_MSG_ERROR("utf8proc not found")
363	fi
364fi
365AM_CONDITIONAL(HAVE_UTF8PROC, [test "x$enable_utf8proc" = xyes])
366
367# Check for b64_ntop. If we have b64_ntop, we assume b64_pton as well.
368AC_MSG_CHECKING(for b64_ntop)
369AC_TRY_LINK(
370	[
371		#include <sys/types.h>
372		#include <netinet/in.h>
373		#include <resolv.h>
374	],
375	[b64_ntop(NULL, 0, NULL, 0);],
376	found_b64_ntop=yes,
377	found_b64_ntop=no
378)
379AC_MSG_RESULT($found_b64_ntop)
380OLD_LIBS="$LIBS"
381if test "x$found_b64_ntop" = xno; then
382	AC_MSG_CHECKING(for b64_ntop with -lresolv)
383	LIBS="$OLD_LIBS -lresolv"
384	AC_TRY_LINK(
385		[
386			#include <sys/types.h>
387			#include <netinet/in.h>
388			#include <resolv.h>
389		],
390		[b64_ntop(NULL, 0, NULL, 0);],
391		found_b64_ntop=yes,
392		found_b64_ntop=no
393	)
394	AC_MSG_RESULT($found_b64_ntop)
395fi
396if test "x$found_b64_ntop" = xno; then
397	AC_MSG_CHECKING(for b64_ntop with -lnetwork)
398	LIBS="$OLD_LIBS -lnetwork"
399	AC_TRY_LINK(
400		[
401			#include <sys/types.h>
402			#include <netinet/in.h>
403			#include <resolv.h>
404		],
405		[b64_ntop(NULL, 0, NULL, 0);],
406		found_b64_ntop=yes,
407		found_b64_ntop=no
408	)
409	AC_MSG_RESULT($found_b64_ntop)
410fi
411if test "x$found_b64_ntop" = xyes; then
412	AC_DEFINE(HAVE_B64_NTOP)
413else
414	LIBS="$OLD_LIBS"
415	AC_LIBOBJ(base64)
416fi
417
418# Look for networking libraries.
419AC_SEARCH_LIBS(inet_ntoa, nsl)
420AC_SEARCH_LIBS(socket, socket)
421AC_CHECK_LIB(xnet, socket)
422
423# Check if using glibc and have malloc_trim(3). The glibc free(3) is pretty bad
424# about returning memory to the kernel unless the application tells it when to
425# with malloc_trim(3).
426AC_MSG_CHECKING(if free doesn't work very well)
427AC_LINK_IFELSE([AC_LANG_SOURCE(
428	[
429		#include <stdlib.h>
430		#ifdef __GLIBC__
431		#include <malloc.h>
432		int main(void) {
433			malloc_trim (0);
434			exit(0);
435		}
436		#else
437		no
438		#endif
439	])],
440	found_malloc_trim=yes,
441	found_malloc_trim=no
442)
443AC_MSG_RESULT($found_malloc_trim)
444if test "x$found_malloc_trim" = xyes; then
445	AC_DEFINE(HAVE_MALLOC_TRIM)
446fi
447
448# Check for CMSG_DATA. On some platforms like HP-UX this requires UNIX 95
449# (_XOPEN_SOURCE and _XOPEN_SOURCE_EXTENDED) (see xopen_networking(7)). On
450# others, UNIX 03 (_XOPEN_SOURCE 600, see standards(7) on Solaris).
451XOPEN_DEFINES=
452AC_MSG_CHECKING(for CMSG_DATA)
453AC_EGREP_CPP(
454	yes,
455	[
456		#include <sys/socket.h>
457		#ifdef CMSG_DATA
458		yes
459		#endif
460	],
461	found_cmsg_data=yes,
462	found_cmsg_data=no
463)
464AC_MSG_RESULT($found_cmsg_data)
465if test "x$found_cmsg_data" = xno; then
466	AC_MSG_CHECKING(if CMSG_DATA needs _XOPEN_SOURCE_EXTENDED)
467	AC_EGREP_CPP(
468		yes,
469		[
470			#define _XOPEN_SOURCE 1
471			#define _XOPEN_SOURCE_EXTENDED 1
472			#include <sys/socket.h>
473			#ifdef CMSG_DATA
474			yes
475			#endif
476		],
477		found_cmsg_data=yes,
478		found_cmsg_data=no
479	)
480	AC_MSG_RESULT($found_cmsg_data)
481	if test "x$found_cmsg_data" = xyes; then
482		XOPEN_DEFINES="-D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED"
483	fi
484fi
485if test "x$found_cmsg_data" = xno; then
486	AC_MSG_CHECKING(if CMSG_DATA needs _XOPEN_SOURCE 600)
487	AC_EGREP_CPP(
488		yes,
489		[
490			#define _XOPEN_SOURCE 600
491			#include <sys/socket.h>
492			#ifdef CMSG_DATA
493			yes
494			#endif
495		],
496		found_cmsg_data=yes,
497		found_cmsg_data=no
498	)
499	AC_MSG_RESULT($found_cmsg_data)
500	if test "x$found_cmsg_data" = xyes; then
501		XOPEN_DEFINES="-D_XOPEN_SOURCE=600"
502	else
503		AC_MSG_ERROR("CMSG_DATA not found")
504	fi
505fi
506AC_SUBST(XOPEN_DEFINES)
507
508# Look for err and friends in err.h.
509AC_CHECK_FUNC(err, found_err_h=yes, found_err_h=no)
510AC_CHECK_FUNC(errx, , found_err_h=no)
511AC_CHECK_FUNC(warn, , found_err_h=no)
512AC_CHECK_FUNC(warnx, , found_err_h=no)
513if test "x$found_err_h" = xyes; then
514	AC_CHECK_HEADER(err.h, , found_err_h=no)
515else
516	AC_LIBOBJ(err)
517fi
518
519# Look for imsg_init in libutil.
520AC_SEARCH_LIBS(imsg_init, util, found_imsg_init=yes, found_imsg_init=no)
521if test "x$found_imsg_init" = xyes; then
522	AC_DEFINE(HAVE_IMSG)
523else
524	AC_LIBOBJ(imsg)
525	AC_LIBOBJ(imsg-buffer)
526fi
527
528# Look for daemon, compat/daemon.c used if missing. Solaris 10 has it in
529# libresolv, but no declaration anywhere, so check for declaration as well as
530# function.
531AC_CHECK_FUNC(daemon, found_daemon=yes, found_daemon=no)
532AC_CHECK_DECL(
533	daemon,
534	,
535	found_daemon=no,
536	[
537		#include <stdlib.h>
538		#include <unistd.h>
539	]
540)
541if test "x$found_daemon" = xyes; then
542	AC_DEFINE(HAVE_DAEMON)
543else
544	AC_LIBOBJ(daemon)
545fi
546
547# Look for stravis, compat/{vis,unvis}.c used if missing.
548AC_CHECK_FUNC(stravis, found_stravis=yes, found_stravis=no)
549if test "x$found_stravis" = xyes; then
550	AC_MSG_CHECKING(if strnvis is broken)
551	AC_EGREP_HEADER([strnvis\(char \*, const char \*, size_t, int\)],
552			vis.h,
553			AC_MSG_RESULT(no),
554			[found_stravis=no])
555	if test "x$found_stravis" = xno; then
556		AC_MSG_RESULT(yes)
557	fi
558fi
559if test "x$found_stravis" = xyes; then
560	AC_CHECK_DECL(
561		VIS_DQ,
562		,
563		found_stravis=no,
564		[
565			#include <stdlib.h>
566			#include <vis.h>
567		]
568)
569fi
570if test "x$found_stravis" = xyes; then
571	AC_DEFINE(HAVE_VIS)
572else
573	AC_LIBOBJ(vis)
574	AC_LIBOBJ(unvis)
575fi
576
577# Look for fdforkpty and forkpty in libutil.
578AC_SEARCH_LIBS(fdforkpty, util, found_fdforkpty=yes, found_fdforkpty=no)
579if test "x$found_fdforkpty" = xyes; then
580	AC_DEFINE(HAVE_FDFORKPTY)
581else
582	AC_LIBOBJ(fdforkpty)
583fi
584AC_SEARCH_LIBS(forkpty, util, found_forkpty=yes, found_forkpty=no)
585if test "x$found_forkpty" = xyes; then
586	AC_DEFINE(HAVE_FORKPTY)
587fi
588AM_CONDITIONAL(NEED_FORKPTY, test "x$found_forkpty" = xno)
589
590# Look for kinfo_getfile in libutil.
591AC_SEARCH_LIBS(kinfo_getfile, [util util-freebsd])
592
593# Look for a suitable queue.h.
594AC_CHECK_DECL(
595	TAILQ_CONCAT,
596	found_queue_h=yes,
597	found_queue_h=no,
598	[#include <sys/queue.h>]
599)
600AC_CHECK_DECL(
601	TAILQ_PREV,
602	found_queue_h=yes,
603	found_queue_h=no,
604	[#include <sys/queue.h>]
605)
606AC_CHECK_DECL(
607	TAILQ_REPLACE,
608	,
609	found_queue_h=no,
610	[#include <sys/queue.h>]
611)
612if test "x$found_queue_h" = xyes; then
613	AC_DEFINE(HAVE_QUEUE_H)
614fi
615
616# Look for __progname.
617AC_MSG_CHECKING(for __progname)
618AC_LINK_IFELSE([AC_LANG_SOURCE(
619	[
620		#include <stdio.h>
621		#include <stdlib.h>
622		extern char *__progname;
623		int main(void) {
624			const char *cp = __progname;
625			printf("%s\n", cp);
626			exit(0);
627		}
628	])],
629	[AC_DEFINE(HAVE___PROGNAME) AC_MSG_RESULT(yes)],
630	AC_MSG_RESULT(no)
631)
632
633# Look for program_invocation_short_name.
634AC_MSG_CHECKING(for program_invocation_short_name)
635AC_LINK_IFELSE([AC_LANG_SOURCE(
636	[
637		#include <errno.h>
638		#include <stdio.h>
639		#include <stdlib.h>
640		int main(void) {
641			const char *cp = program_invocation_short_name;
642			printf("%s\n", cp);
643			exit(0);
644		}
645	])],
646	[AC_DEFINE(HAVE_PROGRAM_INVOCATION_SHORT_NAME) AC_MSG_RESULT(yes)],
647	AC_MSG_RESULT(no)
648)
649
650# Look for prctl(PR_SET_NAME).
651AC_CHECK_DECL(
652	PR_SET_NAME,
653	AC_DEFINE(HAVE_PR_SET_NAME),
654	,
655	[#include <sys/prctl.h>]
656)
657
658# Look for fcntl(F_CLOSEM).
659AC_CHECK_DECL(
660	F_CLOSEM,
661	AC_DEFINE(HAVE_FCNTL_CLOSEM),
662	,
663	[#include <fcntl.h>]
664)
665
666# Look for /proc/$$.
667AC_MSG_CHECKING(for /proc/\$\$)
668if test -d /proc/$$; then
669	AC_DEFINE(HAVE_PROC_PID)
670	AC_MSG_RESULT(yes)
671else
672	AC_MSG_RESULT(no)
673fi
674
675# Man page defaults to mdoc.
676MANFORMAT=mdoc
677AC_SUBST(MANFORMAT)
678
679# Figure out the platform.
680AC_MSG_CHECKING(platform)
681case "$host_os" in
682	*aix*)
683		AC_MSG_RESULT(aix)
684		PLATFORM=aix
685		;;
686	*darwin*)
687		AC_MSG_RESULT(darwin)
688		PLATFORM=darwin
689		#
690		# OS X uses __dead2 instead of __dead, like FreeBSD. But it
691		# defines __dead away so it needs to be removed before we can
692		# replace it.
693		#
694		AC_DEFINE(BROKEN___DEAD)
695		#
696		# OS X CMSG_FIRSTHDR is broken, so redefine it with a working
697		# one. daemon works but has some stupid side effects, so use
698		# our internal version which has a workaround.
699		#
700		AC_DEFINE(BROKEN_CMSG_FIRSTHDR)
701		AC_LIBOBJ(daemon)
702		AC_LIBOBJ(daemon-darwin)
703		;;
704	*dragonfly*)
705		AC_MSG_RESULT(dragonfly)
706		PLATFORM=dragonfly
707		;;
708	*linux*)
709		AC_MSG_RESULT(linux)
710		PLATFORM=linux
711		;;
712	*freebsd*)
713		AC_MSG_RESULT(freebsd)
714		PLATFORM=freebsd
715		;;
716	*netbsd*)
717		AC_MSG_RESULT(netbsd)
718		PLATFORM=netbsd
719		;;
720	*openbsd*)
721		AC_MSG_RESULT(openbsd)
722		PLATFORM=openbsd
723		;;
724	*sunos*)
725		AC_MSG_RESULT(sunos)
726		PLATFORM=sunos
727		;;
728	*solaris*)
729		AC_MSG_RESULT(sunos)
730		PLATFORM=sunos
731		case `/usr/bin/nroff --version 2>&1` in
732			*GNU*)
733				# Solaris 11.4 and later use GNU groff.
734				MANFORMAT=mdoc
735				;;
736			*)
737				# Solaris 2.0 to 11.3 use AT&T nroff.
738				MANFORMAT=man
739				;;
740		esac
741		;;
742	*hpux*)
743		AC_MSG_RESULT(hpux)
744		PLATFORM=hpux
745		;;
746	*cygwin*|*msys*)
747		AC_MSG_RESULT(cygwin)
748		PLATFORM=cygwin
749		;;
750	*haiku*)
751		AC_MSG_RESULT(haiku)
752		PLATFORM=haiku
753		;;
754	*)
755		AC_MSG_RESULT(unknown)
756		PLATFORM=unknown
757		;;
758esac
759AC_SUBST(PLATFORM)
760AM_CONDITIONAL(IS_AIX, test "x$PLATFORM" = xaix)
761AM_CONDITIONAL(IS_DARWIN, test "x$PLATFORM" = xdarwin)
762AM_CONDITIONAL(IS_DRAGONFLY, test "x$PLATFORM" = xdragonfly)
763AM_CONDITIONAL(IS_LINUX, test "x$PLATFORM" = xlinux)
764AM_CONDITIONAL(IS_FREEBSD, test "x$PLATFORM" = xfreebsd)
765AM_CONDITIONAL(IS_NETBSD, test "x$PLATFORM" = xnetbsd)
766AM_CONDITIONAL(IS_OPENBSD, test "x$PLATFORM" = xopenbsd)
767AM_CONDITIONAL(IS_SUNOS, test "x$PLATFORM" = xsunos)
768AM_CONDITIONAL(IS_HPUX, test "x$PLATFORM" = xhpux)
769AM_CONDITIONAL(IS_HAIKU, test "x$PLATFORM" = xhaiku)
770AM_CONDITIONAL(IS_UNKNOWN, test "x$PLATFORM" = xunknown)
771
772# Save our CFLAGS/CPPFLAGS/LDFLAGS for the Makefile and restore the old user
773# variables.
774AC_SUBST(AM_CPPFLAGS)
775CPPFLAGS="$SAVED_CPPFLAGS"
776AC_SUBST(AM_CFLAGS)
777CFLAGS="$SAVED_CFLAGS"
778AC_SUBST(AM_LDFLAGS)
779LDFLAGS="$SAVED_LDFLAGS"
780
781# autoconf should create a Makefile.
782AC_OUTPUT(Makefile)
783