add folly::FixedString, a constexpr-usable string with a fixed-size internal buffer
[folly.git] / folly / configure.ac
index 3786c00ea4713f14b2f02a79499e76693e5f2279..3f4968e02c5d0e421dcbba9366447a1337cdf230 100644 (file)
@@ -63,6 +63,23 @@ CXXFLAGS="$STD $CXXFLAGS"
 # expose required -std option via pkg-config
 PKG_CXXFLAGS=$STD
 
+# See if -Wshadow-local and -Wshadow-compatible-local are supported
+AC_MSG_CHECKING(
+  [whether -Wshadow-local and -Wshadow-compatible-local are supported])
+AC_CACHE_VAL([folly_cv_cxx_shadow_local_support], [
+  folly_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -Wshadow-local -Wshadow-compatible-local"
+  AC_COMPILE_IFELSE(
+    [AC_LANG_PROGRAM([[]], [[]])],
+    [folly_cv_cxx_shadow_local_support=yes],
+    [folly_cv_cxx_shadow_local_support=no])
+  CXXFLAGS="$folly_save_CXXFLAGS"])
+AC_MSG_RESULT([$folly_cv_cxx_shadow_local_support])
+if test "$folly_cv_cxx_shadow_local_support" = yes; then
+  AC_DEFINE([HAVE_SHADOW_LOCAL_WARNINGS], [1],
+  [Define if both -Wshadow-local and -Wshadow-compatible-local are supported.])
+fi
+
 # 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(
@@ -165,13 +182,13 @@ if test "$folly_cv_prog_cc_int128" = "yes"; then
 #include <type_traits>
 static_assert(
   ::std::is_same<::std::make_signed<unsigned __int128>::type, __int128>::value,
-  "signed form of `unsigned __uint128` must be `__int128`.");
+  "signed form of \`unsigned __uint128\` must be \`__int128\`.");
       ]])],
       [folly_cv_prog_cc_int128traits=yes],
       [folly_cv_prog_cc_int128traits=no])
     ])
   if test "$folly_cv_prog_cc_int128traits" = "no"; then
-    AC_DEFINE([FOLLY_SUPPLY_MISSING_INT128_TRAITS], [1], [Define if we need the standard integer traits defined for the type `__int128'.])
+    AC_DEFINE([SUPPLY_MISSING_INT128_TRAITS], [1], [Define if we need the standard integer traits defined for the type `__int128'.])
   fi
 fi
 
@@ -542,7 +559,7 @@ AC_CHECK_HEADER([lz4.h], AC_CHECK_LIB([lz4], [LZ4_decompress_safe]))
 AC_CHECK_HEADER([snappy.h], AC_CHECK_LIB([snappy], [main]))
 AC_CHECK_HEADER([zlib.h], AC_CHECK_LIB([z], [main]))
 AC_CHECK_HEADER([lzma.h], AC_CHECK_LIB([lzma], [main]))
-AC_CHECK_HEADER([zstd.h], AC_CHECK_LIB([zstd], [main]))
+AC_CHECK_HEADER([zstd.h], AC_CHECK_LIB([zstd], [ZSTD_compressStream]))
 AC_CHECK_HEADER([linux/membarrier.h], AC_DEFINE([HAVE_LINUX_MEMBARRIER_H], [1], [Define to 1 if membarrier.h is available]))
 
 AC_ARG_ENABLE([follytestmain],
@@ -550,13 +567,19 @@ AC_ARG_ENABLE([follytestmain],
    [follytestmain=${enableval}], [follytestmain=no])
 
 use_follytestmain=yes
+# libdwarf used to install in /usr/include, now installs in /usr/include/libdwarf.
+AC_CHECK_HEADERS([libdwarf/dwarf.h dwarf.h], [break])
+# Check whether we have both the library and the header
+have_libdwarf=no
+AS_IF([test "x${ac_cv_header_libdwarf_dwarf_h}" = xyes], [have_libdwarf=yes])
+AS_IF([test "x${ac_cv_header_dwarf_h}" = xyes], [have_libdwarf=yes])
 if test "x${follytestmain}" = "xyes"; then
-   AC_CHECK_HEADERS([libdwarf.h dwarf.h],, AC_MSG_ERROR([Please install libdwarf development package]))
-   AC_CHECK_HEADERS([libelf.h elf.h],, AC_MSG_ERROR([Please install libelf development package]))
-   AC_CHECK_HEADERS([libunwind.h],, AC_MSG_ERROR([Please install libinwind development package]))
+   AS_IF([test "x${have_libdwarf}" = xno], [AC_MSG_ERROR([Please install libdwarf development library and headers])])
+   AC_CHECK_HEADERS([elf.h],, AC_MSG_ERROR([Please install libelf development package]))
+   AC_CHECK_HEADERS([libunwind.h],, AC_MSG_ERROR([Please install libunwind development package]))
 else
-   AC_CHECK_HEADERS([libdwarf.h dwarf.h],, [use_follytestmain=no])
-   AC_CHECK_HEADERS([libelf.h elf.h],, [use_follytestmain=no])
+   AS_IF([test "x${have_libdwarf}" = xno],, [use_follytestmain=no])
+   AC_CHECK_HEADERS([elf.h],, [use_follytestmain=no])
    AC_CHECK_HEADERS([libunwind.h],, [use_follytestmain=no])
 fi