diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7fee31f..212fd6d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -17,7 +17,23 @@
 #   under the License.
 # ===================================================================
 
-cmake_minimum_required(VERSION 3.0.2)
+# ===================================================================
+# The following variables can be set to locate dependencies that
+# are not installed in standard paths.  These variables are used
+# by the find_package() modules.
+#
+# APR_ROOT          - Path to APR's install area
+# APRUtil_ROOT      - Path to APR-Util's install area
+# OPENSSL_ROOT_DIR  - Path to OpenSSL's install area
+# ZLIB_ROOT         - Path to zlib's install area
+# ===================================================================
+
+cmake_minimum_required(VERSION 3.0)
+
+# Silence warnings about ${<PackageName>_ROOT} in CMake 3.12+
+if((${CMAKE_MAJOR_VERSION} GREATER 3) OR (${CMAKE_MINOR_VERSION} GREATER 11))
+  cmake_policy(SET CMP0074 NEW)
+endif()
 
 set(SERF_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
 set(CMAKE_MODULE_PATH "${SERF_SOURCE_DIR}/build")
@@ -47,10 +63,6 @@
 option(SKIP_SHARED "Disable building shared Serf libraries" OFF)
 option(SKIP_STATIC "Disable building static Serf libraries" OFF)
 option(LIBDIR "Install directory for architecture-dependent libraries" "")
-option(APR "Path to APR's install area" "")
-option(APU "Path to APR-Util's install area" "")
-option(OPENSSL "Path to OpenSSL's install area" "")
-option(ZLIB "Path to zlib's install area" "")
 option(GSSAPI "Path to GSSAPI's install area" "")
 option(BROTLI "Path to Brotli's install area" "")
 option(APR_STATIC "Windows: Link with static APR/-Util libraries" OFF)
@@ -159,22 +171,6 @@
 
 
 # Process build options for dependency search
-if(APR)
-  set(APR_ROOT ${APR})
-endif()
-
-if(APU)
-  set(APRUTIL_ROOT ${APU})
-endif()
-
-if(OPENSSL)
-  set(OPENSSL_ROOT_DIR ${OPENSSL})
-endif()
-
-if(ZLIB)
-  set(ZLIB_ROOT ${ZLIB})
-endif()
-
 if(GSSAPI)
   message(WARNING "option GSSAPI is not implemented")
 endif()
diff --git a/build/FindAPRUtil.cmake b/build/FindAPRUtil.cmake
index 0e6466c..16ba394 100644
--- a/build/FindAPRUtil.cmake
+++ b/build/FindAPRUtil.cmake
@@ -20,7 +20,7 @@
 cmake_minimum_required(VERSION 3.0)
 
 # This module uses:
-#   APRUTIL_ROOT, the (optional) root of the APR-Util install area.
+#   APRUtil_ROOT, the (optional) root of the APR-Util install area.
 # This module defines:
 #   APRUTIL_FOUND, set to TRUE if found, FALSE otherwise.
 #   APRUTIL_VERSION, the version of APR that was found.
@@ -55,13 +55,13 @@
 
   if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
 
-    if(NOT DEFINED APRUTIL_ROOT)
-      message(FATAL_ERROR "APRUTIL_ROOT must be defined on Windows")
+    if(NOT DEFINED APRUtil_ROOT)
+      message(FATAL_ERROR "APRUtil_ROOT must be defined on Windows")
     endif()
 
     include(CheckIncludeFile)
 
-    set(APRUTIL_INCLUDES "${APRUTIL_ROOT}/include")
+    set(APRUTIL_INCLUDES "${APRUtil_ROOT}/include")
     if(NOT EXISTS "${APRUTIL_INCLUDES}/apu.h")
       message(FATAL_ERROR "apu.h was not found in ${APRUTIL_INCLUDES}")
     endif()
@@ -79,12 +79,12 @@
     endif()
 
     find_library(APRUTIL_LIBRARIES NAMES "lib${_apu_name}.lib"
-                 PATHS ${APRUTIL_ROOT} NO_DEFAULT_PATH PATH_SUFFIXES "lib")
+                 PATHS ${APRUtil_ROOT} NO_DEFAULT_PATH PATH_SUFFIXES "lib")
     find_library(_apu_static NAMES "${_apu_name}.lib"
-                 PATHS ${APRUTIL_ROOT} NO_DEFAULT_PATH PATH_SUFFIXES "lib")
+                 PATHS ${APRUtil_ROOT} NO_DEFAULT_PATH PATH_SUFFIXES "lib")
     find_library(_apu_expat NAMES ${_apu_expat_name}
-                 PATHS ${APRUTIL_ROOT} NO_DEFAULT_PATH PATH_SUFFIXES "lib")
-    _apru_find_dll(APRUTIL_RUNTIME_LIBS "lib${_apu_name}.dll" ${APRUTIL_ROOT})
+                 PATHS ${APRUtil_ROOT} NO_DEFAULT_PATH PATH_SUFFIXES "lib")
+    _apru_find_dll(APRUTIL_RUNTIME_LIBS "lib${_apu_name}.dll" ${APRUtil_ROOT})
 
     if(NOT _apu_expat AND (_apu_expat_name MATCHES "expat"))
       find_package(EXPAT QUIET)
@@ -101,9 +101,9 @@
 
   else()    # NOT Windows
 
-    if(DEFINED APRUTIL_ROOT)
+    if(DEFINED APRUtil_ROOT)
       find_program(APRUTIL_CONFIG_EXECUTABLE apu-1-config
-                   PATHS "${APRUTIL_ROOT}/bin" NO_DEFAULT_PATH)
+                   PATHS "${APRUtil_ROOT}/bin" NO_DEFAULT_PATH)
     else()
       find_program(APRUTIL_CONFIG_EXECUTABLE apu-1-config)
     endif()
