libphobos: Add --enable-libphobos-checking configure option

As GDCFLAGS is overriden by the top-level make file with '-O2 -g',
libphobos ends up always being built with all contracts, invariants, and
asserts compiled in.  This adds a new configurable that defaults to omit
compiling any run-time checks into the library using '-frelease'.

Other choices either set the flags '-fno-release', enabling all run-time
checks, or '-fassert', which only compiles in asserts.

The omission of compiling in contracts results in a smaller library
size, with faster build times.

libphobos/ChangeLog:

	PR d/94305
	* Makefile.in: Regenerate.
	* configure: Regenerate.
	* configure.ac: Add --enable-libphobos-checking and substitute
	CHECKING_DFLAGS.  Remove -frelease from GDCFLAGS.
	* libdruntime/Makefile.am: Add CHECKING_DFLAGS to AM_DFLAGS.
	* libdruntime/Makefile.in: Regenerate.
	* src/Makefile.am: Add CHECKING_DFLAGS to AM_DFLAGS.
	* src/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/testsuite_flags.in: Add -fno-release -funittest to
	--gdcflags.
diff --git a/libphobos/configure b/libphobos/configure
index f458ad3..af597b2 100755
--- a/libphobos/configure
+++ b/libphobos/configure
@@ -637,6 +637,7 @@
 GDCFLAGSX
 libtool_VERSION
 SPEC_PHOBOS_DEPS
+CHECKING_DFLAGS
 ENABLE_LIBPHOBOS_FALSE
 ENABLE_LIBPHOBOS_TRUE
 gdc_include_dir
@@ -842,6 +843,7 @@
 enable_version_specific_runtime_libs
 with_toolexeclibdir
 enable_libphobos
+enable_libphobos_checking
 '
       ac_precious_vars='build_alias
 host_alias
@@ -1488,6 +1490,11 @@
                           Specify that runtime libraries should be installed
                           in a compiler-specific directory
   --enable-libphobos      Enable libphobos
+  --enable-libphobos-checking[=LIST]
+                          enable expensive run-time checks. With LIST, enable
+                          only specific categories of checks. Categories are:
+                          yes,no,all,none,release. Flags are: assert or other
+                          strings
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -11642,7 +11649,7 @@
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11645 "configure"
+#line 11652 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11748,7 +11755,7 @@
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11751 "configure"
+#line 11758 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -15288,6 +15295,31 @@
 fi
 
 
+# Enable expensive internal checks
+# Check whether --enable-libphobos-checking was given.
+if test "${enable_libphobos_checking+set}" = set; then :
+  enableval=$enable_libphobos_checking; ac_checking_flags="${enableval}"
+else
+  ac_checking_flags=release
+fi
+
+IFS="${IFS= 	}"; ac_save_IFS="$IFS"; IFS="$IFS,"
+for check in release $ac_checking_flags
+do
+	case $check in
+	# These set all the flags to specific states
+	yes|all) RELEASE_FLAG="-fno-release" ; ASSERT_FLAG= ;;
+	no|none|release) RELEASE_FLAG="-frelease" ; ASSERT_FLAG= ;;
+	# These enable particular checks
+	assert) ASSERT_FLAG="-fassert" ;;
+	# Accept
+	*) ;;
+	esac
+done
+IFS="$ac_save_IFS"
+CHECKING_DFLAGS="$RELEASE_FLAG $ASSERT_FLAG"
+
+
 # Add drtbegin.o/drtend.o to startfile/endfile specs in libgphobos.spec
 if test "$DCFG_MINFO_BRACKETING" = "false"; then
     DRTSTUFF_SPEC=$srcdir/src/drtstuff.spec
@@ -15306,12 +15338,12 @@
 
 # Set default flags (after DRUNTIME_WERROR!)
 if test -z "$GDCFLAGS"; then
-    GDCFLAGS="-g -frelease -O2"
+    GDCFLAGS="-g -O2"
 fi
 
 
 if test -z "$GDCFLAGSX"; then
-    GDCFLAGSX="-g -fno-release -funittest"
+    GDCFLAGSX="-g"
 fi