# Copyright (C) 2014  Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.

AC_INIT(perftcpdns.c)

AC_PREREQ(2.13)

AC_PROG_CC

AC_CHECK_LIB(m, sqrt)
AC_CHECK_LIB(rt, clock_gettime)

AC_MSG_CHECKING(epoll support)
AC_TRY_RUN([
#include <sys/epoll.h>
int main() {
	if (epoll_create(1) < 0)
		return (1);
	return (0);
}
], [AC_MSG_RESULT(yes)], [AC_MSG_ERROR(epoll not found)])

case "$host" in
        *-freebsd*)
                # We don't want to set -lpthread as that break
                # the ability to choose threads library at final
                # link time and is not valid for all architectures.
                
                PTHREAD=
                if test "X$GCC" = "Xyes"; then
                        saved_cc="$CC"
                        CC="$CC -pthread"
                        AC_MSG_CHECKING(for gcc -pthread support);
                        AC_TRY_LINK([#include <pthread.h>],
                                    [printf("%x\n", pthread_create);],
                                    PTHREAD="yes"
                                    AC_MSG_RESULT(yes),
                                    AC_MSG_RESULT(no))
                        CC="$saved_cc"
                fi
                if test "X$PTHREAD" != "Xyes"; then
                        AC_CHECK_LIB(pthread, pthread_create,,
                        AC_CHECK_LIB(thr, thread_create,,
                        AC_CHECK_LIB(c_r, pthread_create,,
                        AC_CHECK_LIB(c, pthread_create,,
                        AC_MSG_ERROR("could not find thread libraries")))))
                fi
                ;;
        *)
                AC_CHECK_LIB(pthread, pthread_create,,
                        AC_CHECK_LIB(pthread, __pthread_create,,
                        AC_CHECK_LIB(pthread, __pthread_create_system,,
                        AC_CHECK_LIB(c_r, pthread_create,,
                        AC_CHECK_LIB(c, pthread_create,,
                        AC_MSG_ERROR("could not find thread libraries"))))))
        ;;
esac

AC_OUTPUT(Makefile)
