Some of the OpenSSL symbols that we perform configure checks for exist
only as macros in version 1.1.0, so adjust the CMake build to look for
these symbols in headers, not just in libraries.

* build/SerfChecks.cmake
  (_CheckSymbol): New function.
  (CheckFunctionMacro): New feature test macro.
* CMakeLists.txt: Change feature tests.

git-svn-id: https://svn.apache.org/repos/asf/serf/trunk@1834935 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/CMakeLists.txt b/CMakeLists.txt
index aa772c6..13162e5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -210,10 +210,12 @@
 CheckNotFunction("X509_STORE_CTX_get0_chain" "SERF_NO_SSL_X509_GET0_CHAIN" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES})
 CheckNotFunction("ASN1_STRING_get0_data" "SERF_NO_SSL_ASN1_STRING_GET0_DATA" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES})
 CheckFunction("CRYPTO_set_locking_callback" "SERF_HAVE_SSL_LOCKING_CALLBACKS" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES})
-CheckFunction("OPENSSL_malloc_init" "SERF_HAVE_OPENSSL_MALLOC_INIT" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES})
-CheckFunction("SSL_library_init" "SERF_HAVE_OPENSSL_SSL_LIBRARY_INIT" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES})
 CheckFunction("OpenSSL_version_num" "SERF_HAVE_OPENSSL_VERSION_NUM" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES})
 CheckFunction("SSL_set_alpn_protos" "SERF_HAVE_OPENSSL_ALPN" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES})
+CheckFunctionMacro("OPENSSL_malloc_init" "SERF_HAVE_OPENSSL_MALLOC_INIT" "openssl/crypto.h"
+                   "${OPENSSL_INCLUDE_DIR}" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES})
+CheckFunctionMacro("SSL_library_init" "SERF_HAVE_OPENSSL_SSL_LIBRARY_INIT" "openssl/ssl.h"
+                   "${OPENSSL_INCLUDE_DIR}" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES})
 CheckHeader("openssl/applink.c" "SERF_HAVE_OPENSSL_APPLINK_C" ${OPENSSL_INCLUDE_DIR})
 CheckHeader("stdbool.h" "HAVE_STDBOOL_H=1")
 CheckType("OSSL_HANDSHAKE_STATE" "openssl/ssl.h" "SERF_HAVE_OSSL_HANDSHAKE_STATE" ${OPENSSL_INCLUDE_DIR})
diff --git a/build/SerfChecks.cmake b/build/SerfChecks.cmake
index af1e104..093833e 100644
--- a/build/SerfChecks.cmake
+++ b/build/SerfChecks.cmake
@@ -19,6 +19,7 @@
 
 include(CheckFunctionExists)
 include(CheckIncludeFile)
+include(CheckSymbolExists)
 include(CheckTypeSize)
 
 function(_CheckFunction var_ name_ libraries_)
@@ -29,7 +30,7 @@
   endif()
 
   check_function_exists("${name_}" "serf_foundit_${name_}_")
-  if(${serf_foundit_${name_}_})
+  if(serf_foundit_${name_}_)
     set("${var_}" TRUE PARENT_SCOPE)
   else()
     set("${var_}" FALSE PARENT_SCOPE)
@@ -52,6 +53,35 @@
 endmacro(CheckNotFunction)
 
 
+function(_CheckSymbol var_ name_ header_ includes_)
+  if(includes_)
+    set(CMAKE_REQUIRED_INCLUDES "${includes_}")
+  else()
+    unset(CMAKE_REQUIRED_INCLUDES)
+  endif()
+
+  check_symbol_exists("${name_}" "${header_}" "serf_foundit_symbol_${name_}_")
+  if(serf_foundit_symbol_${name_}_)
+    set("${var_}" TRUE PARENT_SCOPE)
+  else()
+    set("${var_}" FALSE PARENT_SCOPE)
+  endif()
+  unset(CMAKE_REQUIRED_INCLUDES)
+endfunction(_CheckSymbol)
+
+macro(CheckFunctionMacro name_ symbol_ header_ includes_)
+  _CheckFunction("serf_feature_CheckFunctionMacro_${name}_" "${name_}" "${ARGN}")
+  if("${serf_feature_CheckFunctionMacro_${name}_}")
+    add_definitions("-D${symbol_}")
+  else()
+    _CheckSymbol("serf_feature_CheckFunctionMacro_${name}_" "${name_}" "${header_}" "${includes_}")
+    if("${serf_feature_CheckFunctionMacro_${name}_}")
+      add_definitions("-D${symbol_}")
+    endif()
+  endif()
+endmacro(CheckFunctionMacro)
+
+
 function(_CheckHeader var_ name_ includes_)
   if(includes_)
     set(CMAKE_REQUIRED_INCLUDES "${includes_}")