Squashed 'third_party/seasocks/' content from commit 016dc60
Change-Id: I195fa5bfd0c0e3cc66fbbefcc7b5170bafcf7a36
git-subtree-dir: third_party/seasocks
git-subtree-split: 016dc60b247e0d1d563aea6d22a9075e6884ab9f
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..7c6e51b
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,71 @@
+m4_include([scripts/c++11.m4])
+
+AC_PREREQ(2.63)
+AC_INIT([SeaSocks], [0.1], [matt@godbolt.org], [], [https://github.com/mattgodbolt/seasocks])
+AC_CONFIG_SRCDIR([src/main/c/seasocks/Server.h])
+
+AC_ARG_WITH([gmock],
+ [AS_HELP_STRING([--with-gmock],
+ [Build tests too, with supplied gmock directory. SeaSocks will
+ build gmock and its embedded gtest automatically])],
+ [],
+ [AC_MSG_WARN([dnl
+Building without tests enabled. Use --with-gmock=PATH_TO_GMOCK])])
+
+AS_IF([test "x${with_gmock}" != "xno" -a "x${with_gmock}" != "x"],
+ [
+ AS_IF([test -e "${with_gmock}/include/gmock/gmock.h"],
+ [GMOCK_DIR="${with_gmock}"],
+ [AC_MSG_ERROR([dnl
+ Unable to locate gmock source at '${with_gmock}'.])])
+ ])
+AC_SUBST(GMOCK_DIR)
+
+dnl Basic setup
+AC_LANG(C++)
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_CXX
+AX_CXX_COMPILE_STDCXX_11([noext])
+AC_DEFUN([AX_CXX_CHECK_UNORDERED_MAP_EMPLACE], [
+ AC_LANG_PUSH([C++])
+ AC_MSG_CHECKING([whether std::unordered_map supports emplace])
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE[
+ #include <unordered_map>
+ void test() { std::unordered_map<int, int> a; a.emplace(2,3); }
+ ]],
+ [eval unordered_map_emplace=yes],[eval unordered_map_emplace=no])
+ AC_MSG_RESULT([$unordered_map_emplace])
+ AC_LANG_POP([C++])
+ if test x$unordered_map_emplace = xyes; then
+ AC_DEFINE(HAVE_UNORDERED_MAP_EMPLACE,1, [define if unordered_map supports emplace])
+ fi
+ AC_SUBST(HAVE_UNORDERED_MAP_EMPLACE)
+ ])
+AX_CXX_CHECK_UNORDERED_MAP_EMPLACE
+AC_PATH_PROG(VALGRIND, valgrind)
+
+dnl Basic headers and features
+AC_HEADER_STDBOOL
+AC_C_INLINE
+AC_TYPE_PID_T
+AC_C_RESTRICT
+AC_TYPE_SIZE_T
+AC_TYPE_UINT16_T
+AC_TYPE_UINT32_T
+AC_TYPE_UINT64_T
+AC_TYPE_UINT8_T
+AC_FUNC_ERROR_AT_LINE
+AC_FUNC_FORK
+AC_FUNC_STRERROR_R
+AC_CHECK_TYPES([ptrdiff_t])
+
+dnl pthreads; better if we detect this somehow
+CXXFLAGS="$CXXFLAGS -pthread"
+
+dnl System headers and functions used
+AC_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])
+AC_CHECK_FUNCS([dup2 eventfd syscall gethostname memset rmdir socket sqrt strcasecmp strchr strdup strerror getopt])
+
+AC_CONFIG_HEADERS([src/main/c/internal/Config.h])
+AC_OUTPUT([Makefile])