diff --git a/configure.ac b/configure.ac
index bd85e06..b88676a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -45,6 +45,8 @@ dnl Compute the canonical host-system (the system we are building for)
 dnl type variable $host
 AC_CANONICAL_HOST
 
+PKG_PROG_PKG_CONFIG([0.21])
+
 dnl Enable as much warnings as possible
 AX_CFLAGS_WARN_ALL(C_WFLAGS)
 AX_CXXFLAGS_WARN_ALL(CXX_WFLAGS)
@@ -1274,12 +1276,15 @@ AC_MSG_CHECKING([for libtiff])
 
 if test "x${with_libtiff}" = "xyes" -o "x${with_libtiff}" = "x" ; then
 
-  dnl Only automatically pick up the external libtiff if it is >= 4.0.
-  AC_CHECK_LIB(tiff,TIFFScanlineSize64,TIFF_SETTING=external HAVE_BIGTIFF=yes,TIFF_SETTING=internal HAVE_BIGTIFF=yes,)
+  PKG_CHECK_MODULES([TIFF],[libtiff-4 > 4.0], [TIFF_SETTING=external], [TIFF_SETTING=internal HAVE_BIGTIFF=yes])
 
   if test "$TIFF_SETTING" = "external" ; then
-    LIBS="-ltiff $LIBS"
     AC_MSG_RESULT([using pre-installed libtiff.])
+    EXTRA_INCLUDES="$TIFF_CFLAGS $EXTRA_INCLUDES"
+    SAVED_LIBS="$LIBS"
+    LIBS="$TIFF_LIBS"
+    AC_SEARCH_LIBS(TIFFScanlineSize64,[],HAVE_BIGTIFF=yes,HAVE_BIGTIFF=no,)
+    LIBS="$TIFF_LIBS $SAVED_LIBS"
   else
     AC_MSG_RESULT([using internal TIFF code.])
   fi
@@ -1333,22 +1338,28 @@ AC_ARG_WITH(curl,
 dnl Clear some cache variables
 unset ac_cv_path_LIBCURL
 
+LIBCURL_MODVERSION=
 if test "`basename xx/$with_curl`" = "curl-config" ; then
   LIBCURL_CONFIG="$with_curl"
 elif test "$with_curl" = "no" ; then
   LIBCURL_CONFIG=no
+elif test "$with_curl" = "yes" -o "$with_curl" = "" ; then
+  PKG_CHECK_EXISTS([libcurl], [LIBCURL_CONFIG="${PKG_CONFIG} libcurl"], [LIBCURL_CONFIG=false])
+  LIBCURL_MODVERSION=`$LIBCURL_CONFIG --modversion`
 else
   AC_PATH_PROG(LIBCURL_CONFIG, curl-config, no)
 fi
 
 if test "$LIBCURL_CONFIG" != "no" ; then
 
-  CURL_VERNUM=`$LIBCURL_CONFIG --vernum`
-  CURL_VER=`$LIBCURL_CONFIG --version | awk '{print $2}'`
+  CURL_VER="`$LIBCURL_CONFIG --version | awk '{print $2}'`$LIBCURL_MODVERSION"
 
   AC_MSG_RESULT([        found libcurl version $CURL_VER])
 
-  AC_CHECK_LIB(curl,curl_global_init,CURL_SETTING=yes,CURL_SETTING=no,`$LIBCURL_CONFIG --libs`)
+  SAVED_LIBS="$LIBS"
+  LIBS=`$LIBCURL_CONFIG --libs`
+  AC_SEARCH_LIBS(curl_global_init,[],CURL_SETTING=yes,CURL_SETTING=no,)
+  LIBS="$SAVED_LIBS"
 
 fi
 
@@ -1362,7 +1373,9 @@ dnl Proj depends on it so it must appear before.
 dnl ---------------------------------------------------------------------------
 
 SQLITE3_REQ_VERSION="3.0.0"
-AX_LIB_SQLITE3($SQLITE3_REQ_VERSION)
+AC_CHECK_LIB(sqlite3,sqlite3_open,HAVE_SQLITE3=yes,AC_MSG_ERROR([vcpkg sqlite3 not found]),)
+SQLITE3_CFLAGS=
+SQLITE3_LDFLAGS=-lsqlite3
 
 if test "$HAVE_SQLITE3" = "yes"; then
     LIBS="$SQLITE3_LDFLAGS $LIBS"
@@ -1570,6 +1583,19 @@ dnl ---------------------------------------------------------------------------
 AC_ARG_WITH(liblzma,[  --with-liblzma[=ARG]       Include liblzma support (ARG=yes/no)],,)
 
 if test "$with_liblzma" = "yes" ; then
+  PKG_CHECK_MODULES([LIBLZMA],[liblzma],[HAVE_LIBLZMA_PC=yes],[HAVE_LIBLZMA_PC=no])
+  SAVED_LIBS="$LIBS"
+  LIBS="$LIBLZMA_LIBS"
+  AC_SEARCH_LIBS(lzma_code,[],LIBLZMA_SETTING=yes,LIBLZMA_SETTING=no,)
+  if test "$LIBLZMA_SETTING" = "yes" ; then
+    LIBS="$LIBLZMA_LIBS $SAVED_LIBS"
+  elif test "$HAVE_LIBLZMA_PC" = "yes" ; then
+    AC_MSG_ERROR([vcpkg liblzma broken])
+  else
+    LIBS="$SAVED_LIBS"
+  fi
+
+elif false; then
   AC_CHECK_LIB(lzma,lzma_code,LIBLZMA_SETTING=yes,LIBLZMA_SETTING=no,)
   AC_CHECK_HEADERS(lzma.h)
 
@@ -1592,6 +1618,19 @@ dnl ---------------------------------------------------------------------------
 AC_ARG_WITH(zstd,[  --with-zstd[=ARG]       Include zstd support (ARG=yes/no/installation_prefix)],,)
 
 if test "$with_zstd" = "" -o "$with_zstd" = "yes" ; then
+  PKG_CHECK_MODULES([ZSTD],[libzstd],[HAVE_LIBZSTD_PC=yes],[HAVE_LIBZSTD_PC=no])
+  SAVED_LIBS="$LIBS"
+  LIBS="$ZSTD_LIBS"
+  AC_SEARCH_LIBS(ZSTD_decompressStream,[],ZSTD_SETTING=yes,ZSTD_SETTING=no,)
+  if test "$ZSTD_SETTING" = "yes" ; then
+    LIBS="$ZSTD_LIBS $SAVED_LIBS"
+  elif test "$HAVE_LIBZSTD_PC" = "yes" ; then
+    AC_MSG_ERROR([vcpkg libzstd broken])
+  else
+    LIBS="$SAVED_LIBS"
+  fi
+
+elif false; then
   AC_CHECK_LIB(zstd,ZSTD_decompressStream,ZSTD_SETTING=yes,ZSTD_SETTING=no,)
 
   if test "$ZSTD_SETTING" = "yes" ; then
@@ -1893,6 +1932,12 @@ else
     SAVED_LIBS="${LIBS}"
     LIBS="${PG_LIB}"
     AC_CHECK_LIB(pq,PQconnectdb,HAVE_PG=yes,HAVE_PG=no)
+    if test "${HAVE_PG}" = "no" ; then
+      unset ac_cv_lib_pq_PQconnectdb
+      PG_LIB="${PG_LIB} -lpgcommon -lpgport"
+      LIBS="${PG_LIB} ${SAVED_LIBS}"
+      AC_CHECK_LIB(pq,PQconnectdb,HAVE_PG=yes,HAVE_PG=no,[-lpgcommon -lpgport])
+    fi
     LIBS="${SAVED_LIBS}"
     if test "${HAVE_PG}" = "yes" ; then
       LIBS="${PG_LIB} ${LIBS}"
@@ -2253,6 +2298,15 @@ AC_ARG_WITH(geotiff,[  --with-geotiff=ARG    Libgeotiff library to use (ARG=inte
 
 if test "$with_geotiff" = "yes" -o "$with_geotiff" = "" ; then
 
+  AC_CHECK_LIB(geotiff,GTIFAttachPROJContext,GEOTIFF_SETTING=external,GEOTIFF_SETTING=internal)
+  if test $GEOTIFF_SETTING = "external" ; then
+    LIBS="-lgeotiff $LIBS"
+  else
+    AC_MSG_ERROR([vcpkg geotiff broken])
+  fi
+
+elif false; then
+
   if test "$TIFF_SETTING" = "internal" ; then
     GEOTIFF_SETTING=internal
   else
@@ -3002,7 +3056,7 @@ elif test "$with_hdf5" = "yes" -o "$with_hdf5" = "" ; then
     # Test that the package found is for the right architecture
     saved_LIBS="$LIBS"
     LIBS="$HDF5_LIBS"
-    AC_CHECK_LIB(hdf5,H5Fopen, [HAVE_HDF5=yes], [HAVE_HDF5=no])
+    AC_SEARCH_LIBS(H5Fopen,[],[HAVE_HDF5=yes],[HAVE_HDF5=no],)
     LIBS="$saved_LIBS"
 
     if test "$HAVE_HDF5" = "yes"; then
@@ -3132,6 +3186,24 @@ if test "$with_netcdf" = "no" ; then
 
   echo "netCDF support disabled."
 
+elif true ; then
+
+  PKG_CHECK_MODULES([NETCDF],[netcdf],[HAVE_NETCDF_PC=yes],[HAVE_NETCDF_PC=no])
+  SAVED_LIBS="$LIBS"
+  LIBS="$NETCDF_LIBS"
+  AC_SEARCH_LIBS(nc_open,[],NETCDF_SETTING=yes,NETCDF_SETTING=no,)
+  if test "$NETCDF_SETTING" = "yes" ; then
+    LIBS="$NETCDF_LIBS $SAVED_LIBS"
+    EXTRA_INCLUDES="$NETCDF_CFLAGS $EXTRA_INCLUDES"
+    PKG_CHECK_VAR([NETCDF_ROOT],[netcdf],[prefix],,)
+    PKG_CHECK_VAR([NETCDF_INCLUDEDIR],[netcdf],[includedir],,)
+    NETCDF_NCCONFIG=
+  elif test "$HAVE_NETCDF_PC" = "yes" ; then
+    AC_MSG_ERROR([vcpkg netcdf-c broken])
+  else
+    LIBS="$SAVED_LIBS"
+  fi
+
 else
 
   dnl find nc-config location
@@ -3352,6 +3424,21 @@ if test "$with_openjpeg" = "no" ; then
 
   AC_MSG_NOTICE([OpenJPEG (JPEG2000) support disabled.])
 
+elif true ; then
+
+  PKG_CHECK_MODULES([OPENJPEG],[libopenjp2 >= 2.1.0],[HAVE_LIBOPENJP2_PC=yes],[HAVE_LIBOPENJP2_PC=no])
+  SAVED_LIBS="$LIBS"
+  LIBS="$OPENJPEG_LIBS"
+  AC_SEARCH_LIBS(opj_setup_decoder,[],HAVE_OPENJPEG=yes,HAVE_OPENJPEG=no,)
+  if test "$HAVE_OPENJPEG" = "yes" ; then
+    EXTRA_INCLUDES="$OPENJPEG_CFLAGS $EXTRA_INCLUDES"
+    LIBS="$OPENJPEG_LIBS $SAVED_LIBS"
+  elif test "$HAVE_LIBOPENJP2_PC" = "yes" ; then
+    AC_MSG_ERROR([vcpkg libopenjpeg broken])
+  else
+    LIBS="$SAVED_LIBS"
+  fi
+
 else
 
   PKG_PROG_PKG_CONFIG([0.21])
@@ -4043,7 +4130,9 @@ dnl ---------------------------------------------------------------------------
 
 dnl Expat 1.95.0 released in 2000-09-28
 EXPAT_REQ_VERSION="1.95.0"
-AX_LIB_EXPAT($EXPAT_REQ_VERSION)
+AC_CHECK_LIB(expat,XML_ParserCreate,HAVE_EXPAT=yes,AC_MSG_ERROR([vcpkg expat not found]))
+EXPAT_LDFLAGS="-lexpat"
+EXPAT_INCLUDE=""
 
 if test "$HAVE_EXPAT" = "yes"; then
     LIBS="$EXPAT_LDFLAGS $LIBS"
@@ -4066,7 +4155,13 @@ dnl Check for Google libkml support.
 dnl ---------------------------------------------------------------------------
 
 LIBKML_REQ_VERSION="1.3.0"
+if test "x${with_libkml}" = "xno"; then
+    echo "libkml support disabled."
+    HAVE_LIBKML="no"
+    LIBKML_CFLAGS=
+else
 AX_LIB_LIBKML($LIBKML_REQ_VERSION)
+fi
 
 if test "$HAVE_LIBKML" = "yes"; then
     LIBS="$LIBKML_LDFLAGS $LIBS"
@@ -4244,8 +4339,8 @@ else
       dnl Add curl to LIBS; it might be local to DODS or generally installed
       if test -x $DODS_BIN/curl-config; then
           LIBS="$LIBS  `$DODS_BIN/curl-config --libs`"
-      elif which curl-config > /dev/null 2>&1; then
-          LIBS="$LIBS  `curl-config --libs`"
+      elif test "$CURL_SETTING" = "yes"; then
+          LIBS="$LIBS $CURL_LIB"
       else
           AC_MSG_ERROR([You gave a dods root, but I can't find curl!])
       fi
@@ -4287,7 +4382,7 @@ if test "x$with_xml2" = "xyes" -o "x$with_xml2" = "x" ; then
   if test "${HAVE_LIBXML2}" = "yes"; then
     SAVED_LIBS="${LIBS}"
     LIBS="${LIBXML2_LIBS}"
-    AC_CHECK_LIB(xml2,xmlParseDoc,HAVE_LIBXML2=yes,HAVE_LIBXML2=no)
+    AC_SEARCH_LIBS(xmlParseDoc,[],HAVE_LIBXML2=yes,HAVE_LIBXML2=no,)
     LIBS="${SAVED_LIBS}"
   fi
 
@@ -4536,6 +4631,22 @@ WEBP_SETTING=no
 
 if test "$with_webp" = "yes" -o "$with_webp" = "" ; then
 
+  PKG_CHECK_MODULES([WEBP],[libwebp],[HAVE_LIBWEBP_PC=yes],[HAVE_LIBWEBP_PC=no])
+  SAVED_LIBS="$LIBS"
+  LIBS="$WEBP_LIBS"
+  AC_SEARCH_LIBS(WebPDecodeRGB,[],WEBP_SETTING=yes,WEBP_SETTING=no,)
+
+  if test "$WEBP_SETTING" = "yes" ; then
+    LIBS="$WEBP_LIBS $SAVED_LIBS"
+  elif test "$HAVE_LIBWEBP_PC" = "yes" ; then
+    AC_MSG_ERROR([vcpkg libwebp broken])
+  else
+    echo "libwebp not found - WEBP support disabled"
+    LIBS="$SAVED_LIBS"
+  fi
+
+elif false ; then
+
   AC_CHECK_LIB(webp,WebPDecodeRGB,WEBP_SETTING=yes,WEBP_SETTING=no,)
 
   if test "$WEBP_SETTING" = "yes" ; then
@@ -4567,7 +4678,7 @@ dnl ---------------------------------------------------------------------------
 dnl Check if geos library is available.
 dnl ---------------------------------------------------------------------------
 
-GEOS_INIT(3.1.0)
+PKG_CHECK_MODULES(GEOS,geos >= 3.1.0,HAVE_GEOS=yes,AC_MSG_ERROR([vcpkg geos not found]))
 HAVE_GEOS_RESULT="no"
 if test "${HAVE_GEOS}" = "yes" ; then
 
@@ -4812,6 +4923,16 @@ dnl ---------------------------------------------------------------------------
 
 AC_ARG_WITH(libjson-c,[  --with-libjson-c[=ARG]       Include libjson-c support (ARG=internal or libjson-c directory)],,)
 
+PKG_CHECK_MODULES([JSONC],[json-c],[HAVE_JSONC=yes],[HAVE_JSONC=no])
+SAVED_LIBS="$LIBS"
+LIBS="$JSONC_LIBS"
+AC_SEARCH_LIBS(json_object_set_serializer,[],LIBJSONC_SETTING=external,LIBJSONC_SETTING=,)
+if test "$LIBJSONC_SETTING" = "external" ; then
+  LIBS="$JSONC_LIBS $SAVED_LIBS"
+  JSON_INCLUDE="$JSONC_CFLAGS"
+else
+  LIBS="$SAVED_LIBS"
+
 if test "$with_libjson_c" = "external" -o "$with_libjson_c" = "" -o "$with_libjson_c" = "yes" ; then
   AC_CHECK_LIB(json-c,json_object_set_serializer,LIBJSONC_SETTING=external,LIBJSONC_SETTING=internal,)
 elif test "$with_libjson_c" = "internal" ; then
@@ -4840,6 +4961,8 @@ else
     AC_MSG_RESULT([using internal libjson-c code])
 fi
 
+fi # json-c.pc
+
 AC_SUBST(LIBJSONC_SETTING,$LIBJSONC_SETTING)
 AC_SUBST(JSON_INCLUDE,$JSON_INCLUDE)
 
