1#
2# Copyright (c) 2019 Brent Cook
3#
4# Permission to use, copy, modify, and distribute this software for any
5# purpose with or without fee is hereby granted, provided that the above
6# copyright notice and this permission notice appear in all copies.
7#
8# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
16AC_INIT([bgpq4], m4_esyscmd([tr -d '\n' < VERSION]), job@sobornost.net)
17
18AC_CANONICAL_HOST
19AM_INIT_AUTOMAKE([subdir-objects foreign])
20AC_CONFIG_MACRO_DIR([m4])
21m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
22AC_PROG_CC([cc gcc])
23
24case $host_os in
25	*darwin*)
26		HOST_OS=darwin
27		AC_DEFINE([SPT_TYPE], [SPT_REUSEARGV])
28		;;
29	*freebsd*)
30		HOST_OS=freebsd
31	;;
32	*linux*)
33		HOST_OS=linux
34		CFLAGS="$CFLAGS -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE"
35		AC_DEFINE([SPT_TYPE], [SPT_REUSEARGV])
36		;;
37	*netbsd*)
38		HOST_OS=netbsd
39		;;
40	*openbsd*)
41		HOST_OS=openbsd
42		AC_DEFINE([HAVE_ATTRIBUTE__BOUNDED__], [1], [OpenBSD has __bounded__])
43		AC_DEFINE([HAVE_ATTRIBUTE__DEAD], [1], [OpenBSD has __dead])
44		;;
45	*solaris*)
46		HOST_OS=solaris
47		CFLAGS="$CFLAGS -D__EXTENSIONS__ -D_XOPEN_SOURCE=600 -DBSD_COMP"
48		;;
49	*) ;;
50esac
51
52AM_CONDITIONAL([HOST_DARWIN],  [test x$HOST_OS = xdarwin])
53AM_CONDITIONAL([HOST_FREEBSD], [test x$HOST_OS = xfreebsd])
54AM_CONDITIONAL([HOST_LINUX],   [test x$HOST_OS = xlinux])
55AM_CONDITIONAL([HOST_NETBSD],  [test x$HOST_OS = xnetbsd])
56AM_CONDITIONAL([HOST_SOLARIS], [test x$HOST_OS = xsolaris])
57
58AC_PROG_CC
59AC_PROG_CC_STDC
60AM_PROG_CC_C_O
61AC_PROG_LIBTOOL
62AC_PROG_INSTALL
63
64AC_ARG_ENABLE(warnings,
65	AS_HELP_STRING([--disable-warnings],
66	    [ enable compiler warnings [default=enabled]]),
67	[case $enableval in
68	    yes) enable_warnings=yes;;
69	    no) enable_warnings=no;;
70	    *) enable_warnings=yes;; esac],
71    enable_warnings=yes)
72
73if test "$enable_warnings" = yes; then
74	AM_CFLAGS="$AM_CFLAGS -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wshadow -Wpointer-arith -Wsign-compare -Werror-implicit-function-declaration"
75	save_cflags="$CFLAGS"
76	CFLAGS=-Wno-pointer-sign
77	AC_MSG_CHECKING([whether CC supports -Wno-pointer-sign])
78	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
79	    [AC_MSG_RESULT([yes])]
80	    [WARN_CFLAGS=-Wno-pointer-sign],
81	    [AC_MSG_RESULT([no])]
82	)
83	AM_CFLAGS="$AM_CFLAGS $WARN_CFLAGS"
84	CFLAGS="$save_cflags"
85fi
86
87AC_MSG_CHECKING([if compiling with clang])
88AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
89#ifndef __clang__
90	not clang
91#endif
92	]])],
93	[AC_MSG_RESULT([yes])]
94	[CLANG_FLAGS=-Qunused-arguments],
95	[AC_MSG_RESULT([no])]
96)
97AM_CFLAGS="$AM_CFLAGS $CLANG_FLAGS"
98AM_LDFLAGS="$LDFLAGS $CLANG_FLAGS"
99AC_SUBST(AM_CFLAGS)
100AC_SUBST(AM_LDFLAGS)
101
102AC_CHECK_FUNCS(strlcpy)
103AC_CHECK_FUNCS(pledge)
104
105AC_CHECK_LIB(socket,socket)
106AC_CHECK_LIB(nsl,getaddrinfo)
107
108AC_CHECK_HEADERS([sys/cdefs.h sys/queue.h sys/tree.h sys/select.h])
109
110AM_CONDITIONAL([HAVE_PLEDGE], [test "x$ac_cv_func_pledge" = xyes])
111AM_CONDITIONAL([HAVE_STRLCPY], [test "x$ac_cv_func_strlcpy" = xyes])
112
113AC_CONFIG_FILES([
114	Makefile
115	include/Makefile
116	compat/Makefile
117])
118
119AC_OUTPUT
120