blob: 7c6e51b801c3bddbfaa3d4cdb43d7a853b7752cf [file] [log] [blame]
Austin Schuh24adb6b2015-09-06 17:37:40 -07001m4_include([scripts/c++11.m4])
2
3AC_PREREQ(2.63)
4AC_INIT([SeaSocks], [0.1], [matt@godbolt.org], [], [https://github.com/mattgodbolt/seasocks])
5AC_CONFIG_SRCDIR([src/main/c/seasocks/Server.h])
6
7AC_ARG_WITH([gmock],
8 [AS_HELP_STRING([--with-gmock],
9 [Build tests too, with supplied gmock directory. SeaSocks will
10 build gmock and its embedded gtest automatically])],
11 [],
12 [AC_MSG_WARN([dnl
13Building without tests enabled. Use --with-gmock=PATH_TO_GMOCK])])
14
15AS_IF([test "x${with_gmock}" != "xno" -a "x${with_gmock}" != "x"],
16 [
17 AS_IF([test -e "${with_gmock}/include/gmock/gmock.h"],
18 [GMOCK_DIR="${with_gmock}"],
19 [AC_MSG_ERROR([dnl
20 Unable to locate gmock source at '${with_gmock}'.])])
21 ])
22AC_SUBST(GMOCK_DIR)
23
24dnl Basic setup
25AC_LANG(C++)
26AC_PROG_CC
27AC_PROG_CPP
28AC_PROG_CXX
29AX_CXX_COMPILE_STDCXX_11([noext])
30AC_DEFUN([AX_CXX_CHECK_UNORDERED_MAP_EMPLACE], [
31 AC_LANG_PUSH([C++])
32 AC_MSG_CHECKING([whether std::unordered_map supports emplace])
33 AC_COMPILE_IFELSE([AC_LANG_SOURCE[
34 #include <unordered_map>
35 void test() { std::unordered_map<int, int> a; a.emplace(2,3); }
36 ]],
37 [eval unordered_map_emplace=yes],[eval unordered_map_emplace=no])
38 AC_MSG_RESULT([$unordered_map_emplace])
39 AC_LANG_POP([C++])
40 if test x$unordered_map_emplace = xyes; then
41 AC_DEFINE(HAVE_UNORDERED_MAP_EMPLACE,1, [define if unordered_map supports emplace])
42 fi
43 AC_SUBST(HAVE_UNORDERED_MAP_EMPLACE)
44 ])
45AX_CXX_CHECK_UNORDERED_MAP_EMPLACE
46AC_PATH_PROG(VALGRIND, valgrind)
47
48dnl Basic headers and features
49AC_HEADER_STDBOOL
50AC_C_INLINE
51AC_TYPE_PID_T
52AC_C_RESTRICT
53AC_TYPE_SIZE_T
54AC_TYPE_UINT16_T
55AC_TYPE_UINT32_T
56AC_TYPE_UINT64_T
57AC_TYPE_UINT8_T
58AC_FUNC_ERROR_AT_LINE
59AC_FUNC_FORK
60AC_FUNC_STRERROR_R
61AC_CHECK_TYPES([ptrdiff_t])
62
63dnl pthreads; better if we detect this somehow
64CXXFLAGS="$CXXFLAGS -pthread"
65
66dnl System headers and functions used
67AC_CHECK_HEADERS([arpa/inet.h fcntl.h inttypes.h limits.h netinet/in.h stddef.h stdlib.h string.h strings.h sys/ioctl.h sys/socket.h unistd.h getopt.h])
68AC_CHECK_FUNCS([dup2 eventfd syscall gethostname memset rmdir socket sqrt strcasecmp strchr strdup strerror getopt])
69
70AC_CONFIG_HEADERS([src/main/c/internal/Config.h])
71AC_OUTPUT([Makefile])