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>
|
||||
|
||||
* configure: Regenerate.
|
||||
|
|
|
@ -207,6 +207,7 @@ CCASFLAGS = @CCASFLAGS@
|
|||
CC_FOR_BUILD = @CC_FOR_BUILD@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
|
||||
CHECKING_DFLAGS = @CHECKING_DFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
|
|
|
@ -637,6 +637,7 @@ WARN_DFLAGS
|
|||
GDCFLAGSX
|
||||
libtool_VERSION
|
||||
SPEC_PHOBOS_DEPS
|
||||
CHECKING_DFLAGS
|
||||
ENABLE_LIBPHOBOS_FALSE
|
||||
ENABLE_LIBPHOBOS_TRUE
|
||||
gdc_include_dir
|
||||
|
@ -842,6 +843,7 @@ with_cross_host
|
|||
enable_version_specific_runtime_libs
|
||||
with_toolexeclibdir
|
||||
enable_libphobos
|
||||
enable_libphobos_checking
|
||||
'
|
||||
ac_precious_vars='build_alias
|
||||
host_alias
|
||||
|
@ -1488,6 +1490,11 @@ Optional Features:
|
|||
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 @@ else
|
|||
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 @@ else
|
|||
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 @@ else
|
|||
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 @@ libtool_VERSION=1:0:0
|
|||
|
||||
# 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
|
||||
|
||||
|
||||
|
|
|
@ -187,6 +187,31 @@ yes:*) use_libphobos=yes ;;
|
|||
esac
|
||||
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
|
||||
if test "$DCFG_MINFO_BRACKETING" = "false"; then
|
||||
DRTSTUFF_SPEC=$srcdir/src/drtstuff.spec
|
||||
|
@ -205,12 +230,12 @@ AC_SUBST(libtool_VERSION)
|
|||
|
||||
# Set default flags (after DRUNTIME_WERROR!)
|
||||
if test -z "$GDCFLAGS"; then
|
||||
GDCFLAGS="-g -frelease -O2"
|
||||
GDCFLAGS="-g -O2"
|
||||
fi
|
||||
AC_SUBST(GDCFLAGS)
|
||||
|
||||
if test -z "$GDCFLAGSX"; then
|
||||
GDCFLAGSX="-g -fno-release -funittest"
|
||||
GDCFLAGSX="-g"
|
||||
fi
|
||||
AC_SUBST(GDCFLAGSX)
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ D_EXTRA_DFLAGS=-nostdinc -I $(srcdir) -I .
|
|||
# D flags for compilation
|
||||
AM_DFLAGS= \
|
||||
$(phobos_compiler_pic_flag) \
|
||||
$(WARN_DFLAGS)
|
||||
$(WARN_DFLAGS) $(CHECKING_DFLAGS)
|
||||
|
||||
# Install all D and DI files
|
||||
ALL_DRUNTIME_INSTALL_DSOURCES = $(DRUNTIME_DSOURCES) \
|
||||
|
|
|
@ -555,6 +555,7 @@ CCASFLAGS = @CCASFLAGS@
|
|||
CC_FOR_BUILD = @CC_FOR_BUILD@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
|
||||
CHECKING_DFLAGS = @CHECKING_DFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
|
@ -715,7 +716,7 @@ D_EXTRA_DFLAGS = -nostdinc -I $(srcdir) -I .
|
|||
# D flags for compilation
|
||||
AM_DFLAGS = \
|
||||
$(phobos_compiler_pic_flag) \
|
||||
$(WARN_DFLAGS)
|
||||
$(WARN_DFLAGS) $(CHECKING_DFLAGS)
|
||||
|
||||
|
||||
# Install all D and DI files
|
||||
|
|
|
@ -25,7 +25,7 @@ D_EXTRA_DFLAGS=-nostdinc -I $(srcdir) \
|
|||
# D flags for compilation
|
||||
AM_DFLAGS= \
|
||||
$(phobos_compiler_pic_flag) \
|
||||
$(WARN_DFLAGS)
|
||||
$(WARN_DFLAGS) $(CHECKING_DFLAGS)
|
||||
|
||||
# Install all D files
|
||||
ALL_PHOBOS_INSTALL_DSOURCES = $(PHOBOS_DSOURCES)
|
||||
|
|
|
@ -278,6 +278,7 @@ CCASFLAGS = @CCASFLAGS@
|
|||
CC_FOR_BUILD = @CC_FOR_BUILD@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
|
||||
CHECKING_DFLAGS = @CHECKING_DFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
|
@ -440,7 +441,7 @@ D_EXTRA_DFLAGS = -nostdinc -I $(srcdir) \
|
|||
# D flags for compilation
|
||||
AM_DFLAGS = \
|
||||
$(phobos_compiler_pic_flag) \
|
||||
$(WARN_DFLAGS)
|
||||
$(WARN_DFLAGS) $(CHECKING_DFLAGS)
|
||||
|
||||
|
||||
# Install all D files
|
||||
|
|
|
@ -151,6 +151,7 @@ CCASFLAGS = @CCASFLAGS@
|
|||
CC_FOR_BUILD = @CC_FOR_BUILD@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
|
||||
CHECKING_DFLAGS = @CHECKING_DFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
|
|
|
@ -28,7 +28,7 @@ case ${query} in
|
|||
;;
|
||||
--gdcflags)
|
||||
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}
|
||||
;;
|
||||
--gdcpaths)
|
||||
|
|
Loading…
Reference in New Issue