mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-21 14:41:07 +08:00
libphobos: Build runtime library with -ffunction-sections -fdata-sections
Tests for `-ffunction-sections -fdata-sections' and sets SECTION_FLAGS accordingly. If there is no warning when using it, take advantage of the smaller executables that can be had with `--gc-sections'. libphobos/ChangeLog: * Makefile.in: Regenerate. * configure: Regenerate. * configure.ac: Call DRUNTIME_SECTION_FLAGS. * libdruntime/Makefile.am: Add SECTION_FLAGS to AM_DFLAGS. * libdruntime/Makefile.in: Regenerate. * m4/druntime.m4 (DRUNTIME_SECTION_FLAGS): New macro. * src/Makefile.am: Add SECTION_FLAGS to AM_DFLAGS. * src/Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate.
This commit is contained in:
parent
32703b80f6
commit
d118ec221d
@ -271,6 +271,7 @@ PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SECTION_FLAGS = @SECTION_FLAGS@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
|
47
libphobos/configure
vendored
47
libphobos/configure
vendored
@ -700,6 +700,7 @@ DRUNTIME_CPU_ARM_FALSE
|
||||
DRUNTIME_CPU_ARM_TRUE
|
||||
DRUNTIME_CPU_AARCH64_FALSE
|
||||
DRUNTIME_CPU_AARCH64_TRUE
|
||||
SECTION_FLAGS
|
||||
libphobos_srcdir
|
||||
libphobos_builddir
|
||||
get_gcc_base_ver
|
||||
@ -11749,7 +11750,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 11752 "configure"
|
||||
#line 11753 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@ -11855,7 +11856,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 11858 "configure"
|
||||
#line 11859 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@ -14085,6 +14086,48 @@ fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
gdc_save_DFLAGS=$GDCFLAGS
|
||||
GDCFLAGS="-fno-moduleinfo -nostdinc -I $phobos_cv_abs_srcdir/libdruntime -nophoboslib $GDCFLAGS"
|
||||
|
||||
ac_ext=d
|
||||
ac_compile='$GDC -c $GDCFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$GDC -o conftest$ac_exeext $GDCFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=yes
|
||||
|
||||
GDCFLAGS="$GDCFLAGS -g -Werror -ffunction-sections -fdata-sections"
|
||||
cat > conftest.$ac_ext <<_ACEOF
|
||||
module mod;
|
||||
int foo; void bar() { }
|
||||
|
||||
extern(C) int main() {
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_d_try_compile "$LINENO"; then :
|
||||
ac_fdsections=yes
|
||||
else
|
||||
ac_fdsections=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
if test "x$ac_fdsections" = "xyes"; then
|
||||
SECTION_FLAGS='-ffunction-sections -fdata-sections'
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_fdsections" >&5
|
||||
$as_echo "$ac_fdsections" >&6; }
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
|
||||
GDCFLAGS=$gdc_save_DFLAGS
|
||||
|
||||
|
||||
|
||||
|
||||
druntime_target_cpu_parsed=""
|
||||
case "$target_cpu" in
|
||||
aarch64*)
|
||||
|
@ -137,6 +137,7 @@ GCC_BASE_VER
|
||||
DRUNTIME_CONFIGURE
|
||||
DRUNTIME_MULTILIB
|
||||
DRUNTIME_WERROR
|
||||
DRUNTIME_SECTION_FLAGS
|
||||
DRUNTIME_CPU_SOURCES
|
||||
DRUNTIME_OS_SOURCES
|
||||
DRUNTIME_OS_THREAD_MODEL
|
||||
|
@ -24,7 +24,7 @@ D_EXTRA_DFLAGS=-nostdinc -I $(srcdir) -I .
|
||||
# D flags for compilation
|
||||
AM_DFLAGS= \
|
||||
$(phobos_lt_pic_flag) $(phobos_compiler_shared_flag) \
|
||||
$(WARN_DFLAGS) $(CHECKING_DFLAGS) $(CET_DFLAGS)
|
||||
$(WARN_DFLAGS) $(CHECKING_DFLAGS) $(SECTION_FLAGS) $(CET_DFLAGS)
|
||||
|
||||
# Flags for other kinds of sources
|
||||
AM_CFLAGS=$(CET_FLAGS)
|
||||
|
@ -635,6 +635,7 @@ PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SECTION_FLAGS = @SECTION_FLAGS@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
@ -727,7 +728,7 @@ D_EXTRA_DFLAGS = -nostdinc -I $(srcdir) -I .
|
||||
# D flags for compilation
|
||||
AM_DFLAGS = \
|
||||
$(phobos_lt_pic_flag) $(phobos_compiler_shared_flag) \
|
||||
$(WARN_DFLAGS) $(CHECKING_DFLAGS) $(CET_DFLAGS)
|
||||
$(WARN_DFLAGS) $(CHECKING_DFLAGS) $(SECTION_FLAGS) $(CET_DFLAGS)
|
||||
|
||||
|
||||
# Flags for other kinds of sources
|
||||
|
@ -116,3 +116,22 @@ AC_DEFUN([DRUNTIME_INSTALL_DIRECTORIES],
|
||||
gdc_include_dir='$(libdir)/gcc/${target_alias}/${gcc_version}/include/d'
|
||||
AC_SUBST(gdc_include_dir)
|
||||
])
|
||||
|
||||
# DRUNTIME_SECTION_FLAGS
|
||||
# ----------------------
|
||||
# Check for -ffunction-sections nad -fdata-sections.
|
||||
AC_DEFUN([DRUNTIME_SECTION_FLAGS],
|
||||
[
|
||||
WITH_LOCAL_DRUNTIME([
|
||||
AC_LANG_PUSH([D])
|
||||
GDCFLAGS="$GDCFLAGS -g -Werror -ffunction-sections -fdata-sections"
|
||||
AC_TRY_COMPILE([int foo; void bar() { }],[return 0;],
|
||||
[ac_fdsections=yes], [ac_fdsections=no])
|
||||
if test "x$ac_fdsections" = "xyes"; then
|
||||
SECTION_FLAGS='-ffunction-sections -fdata-sections'
|
||||
fi
|
||||
AC_MSG_RESULT($ac_fdsections)
|
||||
AC_LANG_POP([D])
|
||||
], [-nophoboslib])
|
||||
AC_SUBST(SECTION_FLAGS)
|
||||
])
|
||||
|
@ -25,7 +25,7 @@ D_EXTRA_DFLAGS=-nostdinc -I $(srcdir) \
|
||||
# D flags for compilation
|
||||
AM_DFLAGS= \
|
||||
$(phobos_lt_pic_flag) $(phobos_compiler_shared_flag) \
|
||||
$(WARN_DFLAGS) $(CHECKING_DFLAGS) $(CET_DFLAGS)
|
||||
$(WARN_DFLAGS) $(CHECKING_DFLAGS) $(SECTION_FLAGS) $(CET_DFLAGS)
|
||||
|
||||
# Flags for other kinds of sources
|
||||
AM_CFLAGS=$(CET_FLAGS)
|
||||
|
@ -388,6 +388,7 @@ PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SECTION_FLAGS = @SECTION_FLAGS@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
@ -482,7 +483,7 @@ D_EXTRA_DFLAGS = -nostdinc -I $(srcdir) \
|
||||
# D flags for compilation
|
||||
AM_DFLAGS = \
|
||||
$(phobos_lt_pic_flag) $(phobos_compiler_shared_flag) \
|
||||
$(WARN_DFLAGS) $(CHECKING_DFLAGS) $(CET_DFLAGS)
|
||||
$(WARN_DFLAGS) $(CHECKING_DFLAGS) $(SECTION_FLAGS) $(CET_DFLAGS)
|
||||
|
||||
|
||||
# Flags for other kinds of sources
|
||||
|
@ -215,6 +215,7 @@ PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SECTION_FLAGS = @SECTION_FLAGS@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
|
Loading…
x
Reference in New Issue
Block a user