d118ec221d
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.
138 lines
4.2 KiB
Plaintext
138 lines
4.2 KiB
Plaintext
#
|
|
# Contains some unsorted druntime utility macros.
|
|
#
|
|
|
|
|
|
# DRUNTIME_WERROR
|
|
# ---------------
|
|
# Check to see if -Werror is enabled.
|
|
AC_DEFUN([DRUNTIME_WERROR],
|
|
[
|
|
AC_ARG_ENABLE(werror, [AS_HELP_STRING([--enable-werror],
|
|
[turns on -Werror @<:@default=no@:>@])])
|
|
WERROR_FLAG=""
|
|
if test "x$enable_werror" = "xyes"; then
|
|
WERROR_FLAG="-Werror"
|
|
fi
|
|
])
|
|
|
|
|
|
# DRUNTIME_CONFIGURE
|
|
# ------------------
|
|
# Substitute absolute paths for srcdir and builddir.
|
|
AC_DEFUN([DRUNTIME_CONFIGURE],
|
|
[
|
|
# These need to be absolute paths, yet at the same time need to
|
|
# canonicalize only relative paths, because then amd will not unmount
|
|
# drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd.
|
|
libphobos_builddir=`${PWDCMD-pwd}`
|
|
case $srcdir in
|
|
[\\/$]* | ?:[\\/]*) libphobos_srcdir=${srcdir} ;;
|
|
*) libphobos_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;;
|
|
esac
|
|
AC_SUBST(libphobos_builddir)
|
|
AC_SUBST(libphobos_srcdir)
|
|
])
|
|
|
|
# DRUNTIME_MULTILIB
|
|
# -----------------
|
|
# Prepare the multilib_arg variable
|
|
AC_DEFUN([DRUNTIME_MULTILIB],
|
|
[
|
|
if test ${multilib} = yes; then
|
|
multilib_arg="--enable-multilib"
|
|
else
|
|
multilib_arg=
|
|
fi
|
|
])
|
|
|
|
|
|
# DRUNTIME_INSTALL_DIRECTORIES
|
|
# ----------------------------
|
|
# Setup various install directories for headers.
|
|
# Add the cross-host option and substitute the libphobos_toolexecdir
|
|
# libphobos_toolexeclibdir and gdc_include_dir variables.
|
|
AC_DEFUN([DRUNTIME_INSTALL_DIRECTORIES],
|
|
[
|
|
AC_REQUIRE([AC_PROG_GDC])
|
|
|
|
AC_MSG_CHECKING([D GCC version])
|
|
gcc_version=`eval $get_gcc_base_ver $srcdir/../gcc/BASE-VER`
|
|
AC_MSG_RESULT($gcc_version)
|
|
AC_SUBST(gcc_version)
|
|
|
|
AC_ARG_WITH([cross-host],
|
|
AC_HELP_STRING([--with-cross-host=HOST],
|
|
[configuring with a cross compiler]))
|
|
|
|
libphobos_toolexecdir=no
|
|
libphobos_toolexeclibdir=no
|
|
|
|
AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
|
|
AC_ARG_ENABLE([version-specific-runtime-libs],
|
|
AC_HELP_STRING([--enable-version-specific-runtime-libs],
|
|
[Specify that runtime libraries should be installed in a compiler-specific directory]),
|
|
[case "$enableval" in
|
|
yes) version_specific_libs=yes ;;
|
|
no) version_specific_libs=no ;;
|
|
*) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
|
|
esac],
|
|
[version_specific_libs=no])
|
|
AC_MSG_RESULT($version_specific_libs)
|
|
|
|
GCC_WITH_TOOLEXECLIBDIR
|
|
|
|
# Version-specific runtime libs processing.
|
|
if test $version_specific_libs = yes; then
|
|
libphobos_toolexecdir='${libdir}/gcc/${host_alias}'
|
|
libphobos_toolexeclibdir='${toolexecdir}/${gcc_version}$(MULTISUBDIR)'
|
|
else
|
|
# Calculate libphobos_toolexecdir, libphobos_toolexeclibdir
|
|
# Install a library built with a cross compiler in tooldir, not libdir.
|
|
if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then
|
|
libphobos_toolexecdir='${exec_prefix}/${host_alias}'
|
|
case ${with_toolexeclibdir} in
|
|
no)
|
|
libphobos_toolexeclibdir='${toolexecdir}/lib'
|
|
;;
|
|
*)
|
|
libphobos_toolexeclibdir=${with_toolexeclibdir}
|
|
;;
|
|
esac
|
|
else
|
|
libphobos_toolexecdir='${libdir}/gcc/${host_alias}'
|
|
libphobos_toolexeclibdir='${libdir}'
|
|
fi
|
|
multi_os_directory=`$GDC -print-multi-os-directory`
|
|
case $multi_os_directory in
|
|
.) ;; # Avoid trailing /.
|
|
*) libphobos_toolexeclibdir=${libphobos_toolexeclibdir}/${multi_os_directory} ;;
|
|
esac
|
|
fi
|
|
AC_SUBST(libphobos_toolexecdir)
|
|
AC_SUBST(libphobos_toolexeclibdir)
|
|
|
|
# Default case for install directory for D sources files.
|
|
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)
|
|
])
|