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.
This commit is contained in:
parent
6e286c8df4
commit
c0dbfbd763
|
@ -1,3 +1,18 @@
|
||||||
|
2020-04-09 Iain Buclaw <ibuclaw@gdcproject.org>
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
2020-04-09 Iain Buclaw <ibuclaw@gdcproject.org>
|
2020-04-09 Iain Buclaw <ibuclaw@gdcproject.org>
|
||||||
|
|
||||||
* configure: Regenerate.
|
* configure: Regenerate.
|
||||||
|
|
|
@ -207,6 +207,7 @@ CCASFLAGS = @CCASFLAGS@
|
||||||
CC_FOR_BUILD = @CC_FOR_BUILD@
|
CC_FOR_BUILD = @CC_FOR_BUILD@
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
|
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
|
||||||
|
CHECKING_DFLAGS = @CHECKING_DFLAGS@
|
||||||
CPP = @CPP@
|
CPP = @CPP@
|
||||||
CPPFLAGS = @CPPFLAGS@
|
CPPFLAGS = @CPPFLAGS@
|
||||||
CYGPATH_W = @CYGPATH_W@
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
|
|
@ -637,6 +637,7 @@ WARN_DFLAGS
|
||||||
GDCFLAGSX
|
GDCFLAGSX
|
||||||
libtool_VERSION
|
libtool_VERSION
|
||||||
SPEC_PHOBOS_DEPS
|
SPEC_PHOBOS_DEPS
|
||||||
|
CHECKING_DFLAGS
|
||||||
ENABLE_LIBPHOBOS_FALSE
|
ENABLE_LIBPHOBOS_FALSE
|
||||||
ENABLE_LIBPHOBOS_TRUE
|
ENABLE_LIBPHOBOS_TRUE
|
||||||
gdc_include_dir
|
gdc_include_dir
|
||||||
|
@ -842,6 +843,7 @@ with_cross_host
|
||||||
enable_version_specific_runtime_libs
|
enable_version_specific_runtime_libs
|
||||||
with_toolexeclibdir
|
with_toolexeclibdir
|
||||||
enable_libphobos
|
enable_libphobos
|
||||||
|
enable_libphobos_checking
|
||||||
'
|
'
|
||||||
ac_precious_vars='build_alias
|
ac_precious_vars='build_alias
|
||||||
host_alias
|
host_alias
|
||||||
|
@ -1488,6 +1490,11 @@ Optional Features:
|
||||||
Specify that runtime libraries should be installed
|
Specify that runtime libraries should be installed
|
||||||
in a compiler-specific directory
|
in a compiler-specific directory
|
||||||
--enable-libphobos Enable libphobos
|
--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:
|
Optional Packages:
|
||||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||||
|
@ -11642,7 +11649,7 @@ else
|
||||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||||
lt_status=$lt_dlunknown
|
lt_status=$lt_dlunknown
|
||||||
cat > conftest.$ac_ext <<_LT_EOF
|
cat > conftest.$ac_ext <<_LT_EOF
|
||||||
#line 11645 "configure"
|
#line 11652 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
#if HAVE_DLFCN_H
|
#if HAVE_DLFCN_H
|
||||||
|
@ -11748,7 +11755,7 @@ else
|
||||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||||
lt_status=$lt_dlunknown
|
lt_status=$lt_dlunknown
|
||||||
cat > conftest.$ac_ext <<_LT_EOF
|
cat > conftest.$ac_ext <<_LT_EOF
|
||||||
#line 11751 "configure"
|
#line 11758 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
#if HAVE_DLFCN_H
|
#if HAVE_DLFCN_H
|
||||||
|
@ -15288,6 +15295,31 @@ else
|
||||||
fi
|
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
|
# Add drtbegin.o/drtend.o to startfile/endfile specs in libgphobos.spec
|
||||||
if test "$DCFG_MINFO_BRACKETING" = "false"; then
|
if test "$DCFG_MINFO_BRACKETING" = "false"; then
|
||||||
DRTSTUFF_SPEC=$srcdir/src/drtstuff.spec
|
DRTSTUFF_SPEC=$srcdir/src/drtstuff.spec
|
||||||
|
@ -15306,12 +15338,12 @@ libtool_VERSION=1:0:0
|
||||||
|
|
||||||
# Set default flags (after DRUNTIME_WERROR!)
|
# Set default flags (after DRUNTIME_WERROR!)
|
||||||
if test -z "$GDCFLAGS"; then
|
if test -z "$GDCFLAGS"; then
|
||||||
GDCFLAGS="-g -frelease -O2"
|
GDCFLAGS="-g -O2"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
if test -z "$GDCFLAGSX"; then
|
if test -z "$GDCFLAGSX"; then
|
||||||
GDCFLAGSX="-g -fno-release -funittest"
|
GDCFLAGSX="-g"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -187,6 +187,31 @@ yes:*) use_libphobos=yes ;;
|
||||||
esac
|
esac
|
||||||
AM_CONDITIONAL(ENABLE_LIBPHOBOS, test x$use_libphobos = xyes)
|
AM_CONDITIONAL(ENABLE_LIBPHOBOS, test x$use_libphobos = xyes)
|
||||||
|
|
||||||
|
# Enable expensive internal checks
|
||||||
|
AC_ARG_ENABLE(libphobos-checking,
|
||||||
|
[AS_HELP_STRING([[--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])],
|
||||||
|
[ac_checking_flags="${enableval}"],[ac_checking_flags=release])
|
||||||
|
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"
|
||||||
|
AC_SUBST(CHECKING_DFLAGS)
|
||||||
|
|
||||||
# Add drtbegin.o/drtend.o to startfile/endfile specs in libgphobos.spec
|
# Add drtbegin.o/drtend.o to startfile/endfile specs in libgphobos.spec
|
||||||
if test "$DCFG_MINFO_BRACKETING" = "false"; then
|
if test "$DCFG_MINFO_BRACKETING" = "false"; then
|
||||||
DRTSTUFF_SPEC=$srcdir/src/drtstuff.spec
|
DRTSTUFF_SPEC=$srcdir/src/drtstuff.spec
|
||||||
|
@ -205,12 +230,12 @@ AC_SUBST(libtool_VERSION)
|
||||||
|
|
||||||
# Set default flags (after DRUNTIME_WERROR!)
|
# Set default flags (after DRUNTIME_WERROR!)
|
||||||
if test -z "$GDCFLAGS"; then
|
if test -z "$GDCFLAGS"; then
|
||||||
GDCFLAGS="-g -frelease -O2"
|
GDCFLAGS="-g -O2"
|
||||||
fi
|
fi
|
||||||
AC_SUBST(GDCFLAGS)
|
AC_SUBST(GDCFLAGS)
|
||||||
|
|
||||||
if test -z "$GDCFLAGSX"; then
|
if test -z "$GDCFLAGSX"; then
|
||||||
GDCFLAGSX="-g -fno-release -funittest"
|
GDCFLAGSX="-g"
|
||||||
fi
|
fi
|
||||||
AC_SUBST(GDCFLAGSX)
|
AC_SUBST(GDCFLAGSX)
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ D_EXTRA_DFLAGS=-nostdinc -I $(srcdir) -I .
|
||||||
# D flags for compilation
|
# D flags for compilation
|
||||||
AM_DFLAGS= \
|
AM_DFLAGS= \
|
||||||
$(phobos_compiler_pic_flag) \
|
$(phobos_compiler_pic_flag) \
|
||||||
$(WARN_DFLAGS)
|
$(WARN_DFLAGS) $(CHECKING_DFLAGS)
|
||||||
|
|
||||||
# Install all D and DI files
|
# Install all D and DI files
|
||||||
ALL_DRUNTIME_INSTALL_DSOURCES = $(DRUNTIME_DSOURCES) \
|
ALL_DRUNTIME_INSTALL_DSOURCES = $(DRUNTIME_DSOURCES) \
|
||||||
|
|
|
@ -555,6 +555,7 @@ CCASFLAGS = @CCASFLAGS@
|
||||||
CC_FOR_BUILD = @CC_FOR_BUILD@
|
CC_FOR_BUILD = @CC_FOR_BUILD@
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
|
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
|
||||||
|
CHECKING_DFLAGS = @CHECKING_DFLAGS@
|
||||||
CPP = @CPP@
|
CPP = @CPP@
|
||||||
CPPFLAGS = @CPPFLAGS@
|
CPPFLAGS = @CPPFLAGS@
|
||||||
CYGPATH_W = @CYGPATH_W@
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
@ -715,7 +716,7 @@ D_EXTRA_DFLAGS = -nostdinc -I $(srcdir) -I .
|
||||||
# D flags for compilation
|
# D flags for compilation
|
||||||
AM_DFLAGS = \
|
AM_DFLAGS = \
|
||||||
$(phobos_compiler_pic_flag) \
|
$(phobos_compiler_pic_flag) \
|
||||||
$(WARN_DFLAGS)
|
$(WARN_DFLAGS) $(CHECKING_DFLAGS)
|
||||||
|
|
||||||
|
|
||||||
# Install all D and DI files
|
# Install all D and DI files
|
||||||
|
|
|
@ -25,7 +25,7 @@ D_EXTRA_DFLAGS=-nostdinc -I $(srcdir) \
|
||||||
# D flags for compilation
|
# D flags for compilation
|
||||||
AM_DFLAGS= \
|
AM_DFLAGS= \
|
||||||
$(phobos_compiler_pic_flag) \
|
$(phobos_compiler_pic_flag) \
|
||||||
$(WARN_DFLAGS)
|
$(WARN_DFLAGS) $(CHECKING_DFLAGS)
|
||||||
|
|
||||||
# Install all D files
|
# Install all D files
|
||||||
ALL_PHOBOS_INSTALL_DSOURCES = $(PHOBOS_DSOURCES)
|
ALL_PHOBOS_INSTALL_DSOURCES = $(PHOBOS_DSOURCES)
|
||||||
|
|
|
@ -278,6 +278,7 @@ CCASFLAGS = @CCASFLAGS@
|
||||||
CC_FOR_BUILD = @CC_FOR_BUILD@
|
CC_FOR_BUILD = @CC_FOR_BUILD@
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
|
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
|
||||||
|
CHECKING_DFLAGS = @CHECKING_DFLAGS@
|
||||||
CPP = @CPP@
|
CPP = @CPP@
|
||||||
CPPFLAGS = @CPPFLAGS@
|
CPPFLAGS = @CPPFLAGS@
|
||||||
CYGPATH_W = @CYGPATH_W@
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
@ -440,7 +441,7 @@ D_EXTRA_DFLAGS = -nostdinc -I $(srcdir) \
|
||||||
# D flags for compilation
|
# D flags for compilation
|
||||||
AM_DFLAGS = \
|
AM_DFLAGS = \
|
||||||
$(phobos_compiler_pic_flag) \
|
$(phobos_compiler_pic_flag) \
|
||||||
$(WARN_DFLAGS)
|
$(WARN_DFLAGS) $(CHECKING_DFLAGS)
|
||||||
|
|
||||||
|
|
||||||
# Install all D files
|
# Install all D files
|
||||||
|
|
|
@ -151,6 +151,7 @@ CCASFLAGS = @CCASFLAGS@
|
||||||
CC_FOR_BUILD = @CC_FOR_BUILD@
|
CC_FOR_BUILD = @CC_FOR_BUILD@
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
|
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
|
||||||
|
CHECKING_DFLAGS = @CHECKING_DFLAGS@
|
||||||
CPP = @CPP@
|
CPP = @CPP@
|
||||||
CPPFLAGS = @CPPFLAGS@
|
CPPFLAGS = @CPPFLAGS@
|
||||||
CYGPATH_W = @CYGPATH_W@
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
|
|
@ -28,7 +28,7 @@ case ${query} in
|
||||||
;;
|
;;
|
||||||
--gdcflags)
|
--gdcflags)
|
||||||
GDCFLAGS_default="-fmessage-length=0 -fno-show-column"
|
GDCFLAGS_default="-fmessage-length=0 -fno-show-column"
|
||||||
GDCFLAGS_config="@WARN_DFLAGS@ @GDCFLAGSX@"
|
GDCFLAGS_config="@WARN_DFLAGS@ @GDCFLAGSX@ -fno-release -funittest"
|
||||||
echo ${GDCFLAGS_default} ${GDCFLAGS_config}
|
echo ${GDCFLAGS_default} ${GDCFLAGS_config}
|
||||||
;;
|
;;
|
||||||
--gdcpaths)
|
--gdcpaths)
|
||||||
|
|
Loading…
Reference in New Issue