diff --git a/cmake/FindCURL.cmake b/cmake/FindCURL.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..098544ab20ce04bb2848829e0b4e19413caec7fa
--- /dev/null
+++ b/cmake/FindCURL.cmake
@@ -0,0 +1,71 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# FindCURL
+# --------
+#
+# Find curl
+#
+# Find the native CURL headers and libraries.
+#
+# ::
+#
+#   CURL_INCLUDE_DIRS   - where to find curl/curl.h, etc.
+#   CURL_LIBRARIES      - List of libraries when using curl.
+#   CURL_FOUND          - True if curl found.
+#   CURL_VERSION_STRING - the version of curl found (since CMake 2.8.8)
+
+if(DEFINED CURL_ROOT)
+    set(CURL_FIND_OPTS NO_CMAKE NO_CMAKE_SYSTEM_PATH)
+    set(CURL_FIND_LIBRARY_HINTS "${CURL_ROOT}/lib")
+    set(CURL_FIND_PATH_HINTS "${CURL_ROOT}/include")
+else()
+    set(CURL_FIND_OPTS)
+    set(CURL_FIND_LIBRARY_HINTS)
+    set(CURL_FIND_PATH_HINTS)
+endif()
+
+# Look for the header file.
+find_path(CURL_INCLUDE_DIR NAMES
+    curl/curl.h
+    HINTS ${CURL_FIND_PATH_HINTS}
+    ${CURL_FIND_OPTS}
+)
+mark_as_advanced(CURL_INCLUDE_DIR)
+
+# Look for the library (sorted from most current/relevant entry to least).
+find_library(CURL_LIBRARY NAMES
+    curl
+  # Windows MSVC prebuilts:
+    curllib
+    libcurl_imp
+    curllib_static
+  # Windows older "Win32 - MSVC" prebuilts (libcurl.lib, e.g. libcurl-7.15.5-win32-msvc.zip):
+    libcurl
+    HINTS ${CURL_FIND_LIBRARY_HINTS}
+    ${CURL_FIND_OPTS}
+)
+mark_as_advanced(CURL_LIBRARY)
+
+if(CURL_INCLUDE_DIR)
+  foreach(_curl_version_header curlver.h curl.h)
+    if(EXISTS "${CURL_INCLUDE_DIR}/curl/${_curl_version_header}")
+      file(STRINGS "${CURL_INCLUDE_DIR}/curl/${_curl_version_header}" curl_version_str REGEX "^#define[\t ]+LIBCURL_VERSION[\t ]+\".*\"")
+
+      string(REGEX REPLACE "^#define[\t ]+LIBCURL_VERSION[\t ]+\"([^\"]*)\".*" "\\1" CURL_VERSION_STRING "${curl_version_str}")
+      unset(curl_version_str)
+      break()
+    endif()
+  endforeach()
+endif()
+
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(CURL
+                                  REQUIRED_VARS CURL_LIBRARY CURL_INCLUDE_DIR
+                                  VERSION_VAR CURL_VERSION_STRING)
+
+if(CURL_FOUND)
+  set(CURL_LIBRARIES ${CURL_LIBRARY})
+  set(CURL_INCLUDE_DIRS ${CURL_INCLUDE_DIR})
+endif()
diff --git a/cmake/os.cmake b/cmake/os.cmake
index 5a58041efb4a753a0abf3a0666d207ea8d938160..786523768d9be1c335a70e4d35cfedeea4e4c0f0 100644
--- a/cmake/os.cmake
+++ b/cmake/os.cmake
@@ -93,6 +93,21 @@ elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
             message(WARNING "Homebrew's OpenSSL isn't installed. Work isn't "
                             "guarenteed if built with system OpenSSL")
         endif()
+
+        # Detecting CURL
+        execute_process(COMMAND ${HOMEBREW_EXECUTABLE} --prefix curl
+            OUTPUT_VARIABLE HOMEBREW_CURL
+            OUTPUT_STRIP_TRAILING_WHITESPACE)
+        if (DEFINED HOMEBREW_CURL)
+            if (NOT DEFINED CURL_ROOT_DIR)
+                message(STATUS "Setting CURL root to ${HOMEBREW_CURL}")
+                set(CURL_ROOT ${HOMEBREW_CURL})
+            endif()
+        elseif(NOT DEFINED CURL_ROOT_DIR)
+            message(WARNING "Homebrew's CURL isn't installed. Work isn't "
+                "guarenteed if built with system CURL")
+        endif()
+
     endif()
 else()
     message (FATAL_ERROR "Unsupported platform -- ${CMAKE_SYSTEM_NAME}")