diff --git a/config/python.m4 b/config/python.m4
index 7012c53..c8f784e 100644
--- a/config/python.m4
+++ b/config/python.m4
@@ -93,7 +93,6 @@ AC_MSG_RESULT([${python_libspec} ${python_additional_libs}])
 AC_SUBST(python_libdir)[]dnl
 AC_SUBST(python_libspec)[]dnl
 AC_SUBST(python_additional_libs)[]dnl
-AC_SUBST(python_enable_shared)[]dnl
 
 # threaded python is not supported on OpenBSD
 AC_MSG_CHECKING(whether Python is compiled with thread support)
diff --git a/configure b/configure
index 7c0bd0c..cddbbef 100755
--- a/configure
+++ b/configure
@@ -641,7 +641,6 @@ TCL_SHLIB_LD_LIBS
 TCL_SHARED_BUILD
 TCL_LIB_SPEC
 TCL_LIBS
-TCL_LIB_FILE
 TCL_INCLUDE_SPEC
 TCL_CONFIG_SH
 TCLSH
@@ -662,7 +661,6 @@ HAVE_IPV6
 LIBOBJS
 UUID_LIBS
 ZIC
-python_enable_shared
 python_additional_libs
 python_libspec
 python_libdir
@@ -7384,6 +7382,12 @@ perl_useshrplib=`$PERL -MConfig -e 'print $Config{useshrplib}'`
 test "$PORTNAME" = "win32" && perl_useshrplib=`echo $perl_useshrplib | sed 's,\\\\,/,g'`
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $perl_useshrplib" >&5
 $as_echo "$perl_useshrplib" >&6; }
+  if test "$perl_useshrplib" != yes && test "$perl_useshrplib" != true; then
+    as_fn_error $? "cannot build PL/Perl because libperl is not a shared library
+You might have to rebuild your Perl installation.  Refer to the
+documentation for details.  Use --without-perl to disable building
+PL/Perl." "$LINENO" 5
+  fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flags to link embedded Perl" >&5
 $as_echo_n "checking for flags to link embedded Perl... " >&6; }
@@ -7537,6 +7541,33 @@ $as_echo "no" >&6; }
 fi
 
 
+
+  # We need libpython as a shared library.  In Python >=2.5, we asks
+  # Python directly.  But because this has been broken in Debian for a
+  # long time (http://bugs.debian.org/695979), and to support older
+  # Python versions, we see if there is a file that is named like a
+  # shared library as a fallback.
+
+  if test "$python_enable_shared" != 11; then
+    # OS X does supply a .dylib even though Py_ENABLE_SHARED does not get set
+    if test "$PORTNAME" = darwinX; then
+      python_enable_shared=1
+    else
+      for dlsuffix in .so .dll .sl; do
+        if ls "$python_libdir"/libpython*${dlsuffix}* >/dev/null 2>&1; then
+          python_enable_shared=1
+          break
+        fi
+      done
+    fi
+  fi
+
+  if test "$python_enable_shared" != 1; then
+    as_fn_error $? "cannot build PL/Python because libpython is not a shared library
+You might have to rebuild your Python installation.  Refer to the
+documentation for details.  Use --without-python to disable building
+PL/Python." "$LINENO" 5
+  fi
 fi
 
 if test "$cross_compiling" = yes && test -z "$with_system_tzdata"; then
@@ -14736,12 +14767,15 @@ fi
 
     . "$TCL_CONFIG_SH"
 eval TCL_INCLUDE_SPEC=\"$TCL_INCLUDE_SPEC\"
-eval TCL_LIB_FILE=\"$TCL_LIB_FILE\"
 eval TCL_LIBS=\"$TCL_LIBS\"
 eval TCL_LIB_SPEC=\"$TCL_LIB_SPEC\"
 eval TCL_SHARED_BUILD=\"$TCL_SHARED_BUILD\"
 
-        # now that we have TCL_INCLUDE_SPEC, we can check for <tcl.h>
+        if test "$TCL_SHARED_BUILD" != 1; then
+      as_fn_error $? "cannot build PL/Tcl because Tcl is not a shared library
+Use --without-tcl to disable building PL/Tcl." "$LINENO" 5
+    fi
+    # now that we have TCL_INCLUDE_SPEC, we can check for <tcl.h>
     ac_save_CPPFLAGS=$CPPFLAGS
     CPPFLAGS="$TCL_INCLUDE_SPEC $CPPFLAGS"
     ac_fn_c_check_header_mongrel "$LINENO" "tcl.h" "ac_cv_header_tcl_h" "$ac_includes_default"
diff --git a/configure.in b/configure.in
index 1cd9e1e..a9e2257 100644
--- a/configure.in
+++ b/configure.in
@@ -889,12 +889,45 @@ if test "$with_perl" = yes; then
     AC_MSG_ERROR([Perl not found])
   fi
   PGAC_CHECK_PERL_CONFIGS([archlibexp,privlibexp,useshrplib])
+  if test "$perl_useshrplib" != yes && test "$perl_useshrplib" != true; then
+    AC_MSG_ERROR([cannot build PL/Perl because libperl is not a shared library
+You might have to rebuild your Perl installation.  Refer to the
+documentation for details.  Use --without-perl to disable building
+PL/Perl.])
+  fi
   PGAC_CHECK_PERL_EMBED_LDFLAGS
 fi
 
 if test "$with_python" = yes; then
   PGAC_PATH_PYTHON
   PGAC_CHECK_PYTHON_EMBED_SETUP
+
+  # We need libpython as a shared library.  In Python >=2.5, we asks
+  # Python directly.  But because this has been broken in Debian for a
+  # long time (http://bugs.debian.org/695979), and to support older
+  # Python versions, we see if there is a file that is named like a
+  # shared library as a fallback.
+
+  if test "$python_enable_shared" != 1; then
+    # OS X does supply a .dylib even though Py_ENABLE_SHARED does not get set
+    if test "$PORTNAME" = darwin; then
+      python_enable_shared=1
+    else
+      for dlsuffix in .so .dll .sl; do
+        if ls "$python_libdir"/libpython*${dlsuffix}* >/dev/null 2>&1; then
+          python_enable_shared=1
+          break
+        fi
+      done
+    fi
+  fi
+
+  if test "$python_enable_shared" != 1; then
+    AC_MSG_ERROR([cannot build PL/Python because libpython is not a shared library
+You might have to rebuild your Python installation.  Refer to the
+documentation for details.  Use --without-python to disable building
+PL/Python.])
+  fi
 fi
 
 if test "$cross_compiling" = yes && test -z "$with_system_tzdata"; then
@@ -1942,8 +1975,12 @@ fi
 if test "$with_tcl" = yes; then
     PGAC_PATH_TCLCONFIGSH([$with_tclconfig])
     PGAC_EVAL_TCLCONFIGSH([$TCL_CONFIG_SH],
-                          [TCL_INCLUDE_SPEC,TCL_LIB_FILE,TCL_LIBS,TCL_LIB_SPEC,TCL_SHARED_BUILD])
+                          [TCL_INCLUDE_SPEC,TCL_LIBS,TCL_LIB_SPEC,TCL_SHARED_BUILD])
     AC_SUBST(TCL_SHLIB_LD_LIBS)dnl don't want to double-evaluate that one
+    if test "$TCL_SHARED_BUILD" != 1; then
+      AC_MSG_ERROR([cannot build PL/Tcl because Tcl is not a shared library
+Use --without-tcl to disable building PL/Tcl.])
+    fi
     # now that we have TCL_INCLUDE_SPEC, we can check for <tcl.h>
     ac_save_CPPFLAGS=$CPPFLAGS
     CPPFLAGS="$TCL_INCLUDE_SPEC $CPPFLAGS"
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index a0fe8e4..f8b7b35 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -181,7 +181,6 @@ enable_coverage	= @enable_coverage@
 enable_tap_tests	= @enable_tap_tests@
 enable_thread_safety	= @enable_thread_safety@
 
-python_enable_shared	= @python_enable_shared@
 python_includespec	= @python_includespec@
 python_libdir		= @python_libdir@
 python_libspec		= @python_libspec@
@@ -192,7 +191,6 @@ python_version		= @python_version@
 krb_srvtab = @krb_srvtab@
 
 TCLSH			= @TCLSH@
-TCL_LIB_FILE		= @TCL_LIB_FILE@
 TCL_LIBS		= @TCL_LIBS@
 TCL_LIB_SPEC		= @TCL_LIB_SPEC@
 TCL_INCLUDE_SPEC	= @TCL_INCLUDE_SPEC@
@@ -283,7 +281,6 @@ else
 endif
 perl_archlibexp		= @perl_archlibexp@
 perl_privlibexp		= @perl_privlibexp@
-perl_useshrplib		= @perl_useshrplib@
 perl_embed_ldflags	= @perl_embed_ldflags@
 
 # Miscellaneous
diff --git a/src/pl/plperl/GNUmakefile b/src/pl/plperl/GNUmakefile
index 904a320..6e1377b 100644
--- a/src/pl/plperl/GNUmakefile
+++ b/src/pl/plperl/GNUmakefile
@@ -5,16 +5,6 @@ subdir = src/pl/plperl
 top_builddir = ../../..
 include $(top_builddir)/src/Makefile.global
 
-ifeq ($(perl_useshrplib),true)
-shared_libperl = yes
-endif
-ifeq ($(perl_useshrplib),yes)
-shared_libperl = yes
-endif
-
-# If we don't have a shared library, we have to skip it.
-ifeq ($(shared_libperl),yes)
-
 ifeq ($(PORTNAME), win32)
 override CPPFLAGS += -DPLPERL_HAVE_UID_GID
 # Perl on win32 contains /* within comment all over the header file,
@@ -130,14 +120,3 @@ clean distclean maintainer-clean: clean-lib
 ifeq ($(PORTNAME), win32)
 	rm -f $(perlwithver).def
 endif
-
-else # can't build
-
-all:
-	@echo ""; \
-	 echo "*** Cannot build PL/Perl because libperl is not a shared library."; \
-	 echo "*** You might have to rebuild your Perl installation.  Refer to"; \
-	 echo "*** the documentation for details."; \
-	 echo ""
-
-endif # can't build
diff --git a/src/pl/plpython/Makefile b/src/pl/plpython/Makefile
index de97cbb..8b1d890 100644
--- a/src/pl/plpython/Makefile
+++ b/src/pl/plpython/Makefile
@@ -5,24 +5,6 @@ top_builddir = ../../..
 include $(top_builddir)/src/Makefile.global
 
 
-# We need libpython as a shared library.  In Python >=2.5, configure
-# asks Python directly.  But because this has been broken in Debian
-# for a long time (http://bugs.debian.org/695979), and to support
-# older Python versions, we see if there is a file that is named like
-# a shared library as a fallback.
-ifeq (1,$(python_enable_shared))
-shared_libpython = yes
-else
-ifeq ($(PORTNAME), darwin)
-# OS X does supply a .dylib even though Py_ENABLE_SHARED does not get set
-shared_libpython = yes
-else
-ifneq (,$(wildcard $(python_libdir)/libpython*$(DLSUFFIX)*))
-shared_libpython = yes
-endif
-endif
-endif
-
 # Windows needs to convert backslashed paths to normal slashes,
 # and we have to remove -lpython from the link since we are building our own
 ifeq ($(PORTNAME), win32)
@@ -31,8 +13,6 @@ python_includespec := $(subst \,/,$(python_includespec))
 override python_libspec =
 endif
 
-# If we don't have a shared library, we have to skip it.
-ifeq ($(shared_libpython),yes)
 
 override CPPFLAGS := -I. -I$(srcdir) $(python_includespec) $(CPPFLAGS)
 
@@ -159,18 +139,6 @@ ifeq ($(PORTNAME), win32)
 	rm -f python${pytverstr}.def
 endif
 
-else # can't build
-
-all:
-	@echo ""; \
-	 echo "*** Cannot build PL/Python because libpython is not a shared library." ; \
-	 echo "*** You might have to rebuild your Python installation.  Refer to"; \
-	 echo "*** the documentation for details."; \
-	 echo ""
-
-endif # can't build
-
-# distprep and maintainer-clean rules should be run even if we can't build.
 
 # Force this dependency to be known even without dependency info built:
 plpy_plpymodule.o: spiexceptions.h
diff --git a/src/pl/tcl/Makefile b/src/pl/tcl/Makefile
index 533d3b4..24803de 100644
--- a/src/pl/tcl/Makefile
+++ b/src/pl/tcl/Makefile
@@ -14,21 +14,6 @@ include $(top_builddir)/src/Makefile.global
 override CPPFLAGS := $(TCL_INCLUDE_SPEC) $(CPPFLAGS)
 
 
-# Find out whether Tcl was built as a shared library --- if not, we
-# can't link a shared library that depends on it, and have to forget
-# about building pltcl. In Tcl 8, tclConfig.sh sets TCL_SHARED_BUILD
-# for us, but in older Tcl releases it doesn't. In that case we guess
-# based on the name of the Tcl library.
-
-ifndef TCL_SHARED_BUILD
-ifneq (,$(findstring $(DLSUFFIX),$(TCL_LIB_FILE)))
-TCL_SHARED_BUILD=1
-else
-TCL_SHARED_BUILD=0
-endif
-endif
-
-
 # On Windows, we don't link directly with the Tcl library; see below
 ifneq ($(PORTNAME), win32)
 SHLIB_LINK = $(TCL_LIB_SPEC) $(TCL_LIBS) -lc
@@ -67,7 +52,6 @@ endif # win32
 
 include $(top_srcdir)/src/Makefile.shlib
 
-ifeq ($(TCL_SHARED_BUILD), 1)
 
 all: all-lib
 	$(MAKE) -C modules $@
@@ -102,16 +86,6 @@ installcheck: submake
 submake:
 	$(MAKE) -C $(top_builddir)/src/test/regress pg_regress$(X)
 
-else # TCL_SHARED_BUILD = 0
-
-# Provide dummy targets for the case where we can't build the shared library.
-all:
-	@echo "*****"; \
-	 echo "* Cannot build PL/Tcl because Tcl is not a shared library; skipping it."; \
-	 echo "*****"
-
-endif # TCL_SHARED_BUILD = 0
-
 clean distclean maintainer-clean: clean-lib
 	rm -f $(OBJS)
 	rm -rf $(pg_regress_clean_files)
