Use std::thread rather than pthreads in AtomicHashMapTest
[folly.git] / folly / configure.ac
index bc725e23098bb224a2558c31a73540fc97a0ef37..115764f267a53793e8e09af5d121682e0fac8c7c 100644 (file)
@@ -12,6 +12,13 @@ AC_INIT([folly], m4_translit(folly_version_str, [:], [.]), [folly@fb.com])
 LT_VERSION=folly_version_str:0
 AC_SUBST([LT_VERSION])
 
+#declare pkg-config variables
+PKG_VERSION=m4_join([.], m4_reverse(m4_translit(folly_version_str, [:], [,])))
+AC_SUBST([PKG_VERSION])
+AC_SUBST([PKG_CXXFLAGS])
+AC_SUBST([PKG_DEPS])
+AC_SUBST([PKG_LIBS])
+
 AC_CONFIG_SRCDIR([Likely.h])
 AC_CONFIG_HEADERS([config.h])
 AX_PREFIX_CONFIG_H([folly-config.h], [folly], [config.h])
@@ -36,22 +43,26 @@ AC_LANG([C++])
 # Checks for programs.
 AC_PROG_CXX
 AC_PROG_CC
-AC_CXX_COMPILE_STDCXX_0X
+
+AC_CXX_COMPILE_STDCXX_1Y
 
 # Be sure to add any -std option to CXXFLAGS before we invoke any
 # AC_COMPILE_IFELSE() or similar macros. Any such macros that are invoked
 # before we update CXXFLAGS will not be run with the same options that we use
 # during the real build.
 STD=""
-if test "x$ac_cv_cxx_compile_cxx0x_cxx" = xyes; then
-   STD="-std=c++0x"
+if test "x$ac_cv_cxx_compile_cxx1y_cxx" = xyes; then
+   STD="-std=c++1y"
 fi
-if test "x$ac_cv_cxx_compile_cxx0x_gxx" = xyes; then
-   STD="-std=gnu++0x"
+if test "x$ac_cv_cxx_compile_cxx1y_gxx" = xyes; then
+   STD="-std=gnu++1y"
 fi
 
 CXXFLAGS="$STD $CXXFLAGS"
 
+# expose required -std option via pkg-config
+PKG_CXXFLAGS=$STD
+
 # Checks for glog and gflags
 # There are no symbols with C linkage, so we do a try-run
 AC_HAVE_LIBRARY([gflags],[],[AC_MSG_ERROR(
@@ -76,6 +87,7 @@ AC_CACHE_CHECK(
 if test "$folly_cv_prog_cc_gflags" != "yes"; then
   AC_MSG_ERROR(["libgflags invalid, see config.log for details"])
 fi
+FB_CHECK_PKG_CONFIG([GFLAGS], [libgflags])
 
 AC_HAVE_LIBRARY([glog],[],[AC_MSG_ERROR(
                 [Please install google-glog library])])
@@ -99,11 +111,13 @@ AC_CACHE_CHECK(
 if test "$folly_cv_prog_cc_glog" != "yes"; then
   AC_MSG_ERROR(["libglog invalid, see config.log for details"])
 fi
+FB_CHECK_PKG_CONFIG([GLOG], [libglog])
 
 AC_CHECK_LIB(ssl,
         SSL_ctrl,
         [],
         [AC_MSG_ERROR(["Error: libssl required"])])
+FB_CHECK_PKG_CONFIG([OPENSSL], [openssl])
 
 # check for boost libs
 AX_BOOST_BASE([1.51.0], [], [AC_MSG_ERROR(
@@ -130,6 +144,7 @@ AC_CHECK_LIB([double-conversion],[ceil],[],[AC_MSG_ERROR(
              [Please install double-conversion library])])
 
 AC_CHECK_LIB([event], [event_set], [], [AC_MSG_ERROR([Unable to find libevent])])
+FB_CHECK_PKG_CONFIG([EVENT], [libevent])
 
 AC_CHECK_LIB([jemalloc], [xallocx])
 
@@ -339,6 +354,27 @@ if test "$folly_cv_prog_cc_weak_symbols" = yes; then
             [Define to 1 if the linker supports weak symbols.])
 fi
 
+
+# Figure out if we support wchar well
+AC_CACHE_CHECK(
+  [for wchar support],
+  [folly_cv_prog_cc_wchar_support],
+  [AC_RUN_IFELSE(
+    [AC_LANG_SOURCE[
+      #include <cstddef>
+      #include <cwchar>
+
+      int main(int argc, char** argv) {
+        return wcstol(L"01", nullptr, 10) == 1 ? 0 : 1;
+      }
+    ]],
+    [folly_cv_prog_cc_wchar_support=yes],
+    [folly_cv_prog_cc_wchar_support=no])])
+
+if test "$folly_cv_prog_cc_wchar_support" = "yes"; then
+  AC_DEFINE([HAVE_WCHAR_SUPPORT], [1], [Define to 1 if the libc supports wchar well])
+fi
+
 # Figure out whether the architecture supports unaligned accesses
 AC_CACHE_CHECK(
   [for unaligned access support],
@@ -478,7 +514,10 @@ AC_CHECK_FUNCS([getdelim \
                 malloc_size \
                 malloc_usable_size \
                 memrchr \
-                pipe2])
+                pipe2 \
+                preadv \
+                pwritev \
+              ])
 
 AC_CHECK_HEADER([lz4.h], AC_CHECK_LIB([lz4], [LZ4_decompress_safe]))
 AC_CHECK_HEADER([snappy.h], AC_CHECK_LIB([snappy], [main]))
@@ -501,6 +540,15 @@ else
    AC_CHECK_HEADERS([libunwind.h],, [use_follytestmain=no])
 fi
 
+AC_ARG_ENABLE([mobile],
+   AS_HELP_STRING([--enable-mobile],
+                  [enables using main function from folly for tests]),
+                  [mobile=${enableval}], [mobile=no])
+AS_IF([test "x${mobile}" = "xyes"], [
+    AC_DEFINE([MOBILE], [1],
+              [Define to 1 for compiler guards for mobile targets.])
+])
+
 # Include directory that contains "folly" so #include <folly/Foo.h> works
 AM_CPPFLAGS='-I$(top_srcdir)/..'
 AM_CPPFLAGS="$AM_CPPFLAGS $BOOST_CPPFLAGS"
@@ -519,13 +567,19 @@ AM_CONDITIONAL([RUN_ARCH_SPECIFIC_TESTS], [test "$build_cpu" = "x86_64" || test
 AM_CONDITIONAL([HAVE_LINUX], [test "$build_os" == "linux-gnu"])
 AM_CONDITIONAL([HAVE_WEAK_SYMBOLS],
                [test "$folly_cv_prog_cc_weak_symbols" = "yes"])
-AM_CONDITIONAL([HAVE_BITS_FUNCTEXCEPT], [test "$ac_cv_header_bits_functexcept_h" = "yes"])
+AM_CONDITIONAL([HAVE_BITS_FUNCTEXCEPT_H], [test "$ac_cv_header_bits_functexcept_h" = "yes"])
 AM_CONDITIONAL([HAVE_EXTRANDOM_SFMT19937],
                [test "$folly_cv_prog_cc_have_extrandom_sfmt19937" = "yes"])
 AM_CONDITIONAL([FOLLY_TESTMAIN], [test "x${use_follytestmain}" = "xyes"])
+AM_CONDITIONAL([HAVE_BOOST_CONTEXT], [test "x${ax_cv_boost_context}" = "xyes"])
+
+# remove pkg-config deps from dependent libraries
+# (at least for pkg-config file purposes)
+FB_FILTER_PKG_LIBS([$AM_LDFLAGS $LIBS])
 
 # Output
 AC_CONFIG_FILES([Makefile
+                 libfolly.pc
                  test/Makefile
                  test/function_benchmark/Makefile
                  experimental/Makefile