From: Sara Golemon Date: Wed, 24 Jun 2015 16:31:49 +0000 (-0700) Subject: Fix tests for glog and gflags X-Git-Tag: v0.48.0~16 X-Git-Url: http://plrg.eecs.uci.edu/git/?p=folly.git;a=commitdiff_plain;h=c6b307876b4977227f2f40270b6a35a80f05b473 Fix tests for glog and gflags Summary: The existing tests were trying to find undocumented symbols in glog/glags which aren't guaranteed to be there on all platforms. Use AC_RUN_IFELSE() to try building and executing some code typical of the usage of these libraries. Closes #117 Reviewed By: @JoelMarcey Differential Revision: D2183526 --- diff --git a/folly/configure.ac b/folly/configure.ac index 3a4311a3..8741396c 100644 --- a/folly/configure.ac +++ b/folly/configure.ac @@ -52,11 +52,53 @@ fi CXXFLAGS="$STD $CXXFLAGS" -# Checks for libraries. -AC_CHECK_LIB([glog],[openlog],[],[AC_MSG_ERROR( - [Please install google-glog library])]) -AC_CHECK_LIB([gflags],[getenv],[],[AC_MSG_ERROR( - [Please install google-gflags library])]) +# Checks for glog and gflags +# There are no symbols with C linkage, so we do a try-run +AC_HAVE_LIBRARY([glog],[],[AC_MSG_ERROR( + [Please install google-glog library])]) +AC_CACHE_CHECK( + [for glog viability], + [folly_cv_prog_cc_glog], + [AC_RUN_IFELSE( + [AC_LANG_SOURCE[ + #include + int main(int argc, char** argv) { + google::InitGoogleLogging(argv[0]); + google::ShutdownGoogleLogging(); + return 0; + } + ]], + [folly_cv_prog_cc_glog=yes], + [folly_cv_prog_cc_glog=no] + )] +) + +if test "$folly_cv_prog_cc_glog" != "yes"; then + AC_MSG_ERROR(["libglog invalid, see config.log for details"]) +fi + +AC_HAVE_LIBRARY([gflags],[],[AC_MSG_ERROR( + [Please install google-gflags library])]) +AC_CACHE_CHECK( + [for gflags viability], + [folly_cv_prog_cc_gflags], + [AC_RUN_IFELSE( + [AC_LANG_SOURCE[ + #include + DEFINE_bool(folly_truthy, true, "Sample truthy flag"); + DEFINE_bool(folly_falsey, false, "Sample falsey flag"); + int main(int argc, char** argv) { + return (FLAGS_folly_truthy && !FLAGS_folly_falsey) ? 0 : 1; + } + ]], + [folly_cv_prog_cc_gflags=yes], + [folly_cv_prog_cc_gflags=no] + )] +) + +if test "$folly_cv_prog_cc_gflags" != "yes"; then + AC_MSG_ERROR(["libgflags invalid, see config.log for details"]) +fi AC_CHECK_LIB(ssl, SSL_ctrl,