Skip to content
Snippets Groups Projects
configure.in 75.4 KiB
Newer Older
if test "x${CC_FOR_TARGET+set}" = xset; then
  :
elif test -d ${srcdir}/gcc; then
  CC_FOR_TARGET='$$r/gcc/xgcc -B$$r/gcc/'
elif test "$host" = "$target"; then
  CC_FOR_TARGET='$(CC)'
else
  CC_FOR_TARGET=`echo gcc | sed "${program_transform_name}"`
CC_FOR_TARGET=$CC_FOR_TARGET' $(FLAGS_FOR_TARGET)'
if test "x${GCJ_FOR_TARGET+set}" = xset; then
  :
elif test -d ${srcdir}/gcc; then
  GCJ_FOR_TARGET='$$r/gcc/gcj -B$$r/gcc/'
elif test "$host" = "$target"; then
  GCJ_FOR_TARGET='gcj'
else
  GCJ_FOR_TARGET=`echo gcj | sed "${program_transform_name}"`
GCJ_FOR_TARGET=$GCJ_FOR_TARGET' $(FLAGS_FOR_TARGET)'
if test "x${GFORTRAN_FOR_TARGET+set}" = xset; then
  :
elif test -d ${srcdir}/gcc; then
  GFORTRAN_FOR_TARGET='$$r/gcc/gfortran -B$$r/gcc/'
elif test "$host" = "$target"; then
  GFORTRAN_FOR_TARGET='gfortran'
else
  GFORTRAN_FOR_TARGET=`echo gfortran | sed "${program_transform_name}"`
fi
case $GFORTRAN_FOR_TARGET in
*' $(FLAGS_FOR_TARGET)') ;;
*) GFORTRAN_FOR_TARGET=$GFORTRAN_FOR_TARGET' $(FLAGS_FOR_TARGET)' ;;
esac

# Don't use libstdc++-v3's flags to configure/build itself.
libstdcxx_flags='`test ! -f $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags || $(SHELL) $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags --build-includes` -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs'
raw_libstdcxx_flags='-L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs'
if test "x${CXX_FOR_TARGET+set}" = xset; then
  if test "x${RAW_CXX_FOR_TARGET+set}" != xset; then
    RAW_CXX_FOR_TARGET=${CXX_FOR_TARGET}
  fi
elif test -d ${srcdir}/gcc; then
  # We add -shared-libgcc to CXX_FOR_TARGET whenever we use xgcc instead
  # of g++ for linking C++ or Java, because g++ has -shared-libgcc by
  # default whereas gcc does not.
  # RAW_CXX_FOR_TARGET is for linking C++ or java; CXX_FOR_TARGET is for
  # all other cases.
  CXX_FOR_TARGET='$$r/gcc/g++ -B$$r/gcc/ -nostdinc++ '$libstdcxx_flags
  RAW_CXX_FOR_TARGET='$$r/gcc/xgcc -shared-libgcc -B$$r/gcc/ -nostdinc++ '$raw_libstdcxx_flags
elif test "$host" = "$target"; then
  CXX_FOR_TARGET='$(CXX)'
  RAW_CXX_FOR_TARGET=${CXX_FOR_TARGET}
  CXX_FOR_TARGET=`echo c++ | sed "${program_transform_name}"`
  RAW_CXX_FOR_TARGET=${CXX_FOR_TARGET}
CXX_FOR_TARGET=$CXX_FOR_TARGET' $(FLAGS_FOR_TARGET)'
RAW_CXX_FOR_TARGET=$RAW_CXX_FOR_TARGET' $(FLAGS_FOR_TARGET)'
qCXX_FOR_TARGET=`echo "$CXX_FOR_TARGET" | sed 's,[[&%]],\\\&,g'`
qRAW_CXX_FOR_TARGET=`echo "$RAW_CXX_FOR_TARGET" | sed 's,[[&%]],\\\&,g'`

# We want to defer the evaluation of `cmd`s and shell variables in
# CXX_FOR_TARGET when recursing in the top-level Makefile, such as for
# bootstrap.  We'll enclose CXX_FOR_TARGET_FOR_RECURSIVE_MAKE in single
# quotes, but we still have to duplicate `$'s so that shell variables
# can be expanded by the nested make as shell variables, not as make
# macros.
qqCXX_FOR_TARGET=`echo "$qCXX_FOR_TARGET" | sed -e 's,[[$]][[$]],$$$$,g'`
qqRAW_CXX_FOR_TARGET=`echo "$qRAW_CXX_FOR_TARGET" | sed -e 's,[[$]][[$]],$$$$,g'`
# Wrap CC_FOR_TARGET and friends, for certain types of builds.
CC_FOR_TARGET="\$(STAGE_CC_WRAPPER) ${CC_FOR_TARGET}"
GCJ_FOR_TARGET="\$(STAGE_CC_WRAPPER) ${GCJ_FOR_TARGET}"
GFORTRAN_FOR_TARGET="\$(STAGE_CC_WRAPPER) ${GFORTRAN_FOR_TARGET}"
CXX_FOR_TARGET="\$(STAGE_CC_WRAPPER) ${qCXX_FOR_TARGET}"
RAW_CXX_FOR_TARGET="\$(STAGE_CC_WRAPPER) ${qRAW_CXX_FOR_TARGET}"
CXX_FOR_TARGET_FOR_RECURSIVE_MAKE="\$(STAGE_CC_WRAPPER) ${qqCXX_FOR_TARGET}"
RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE="\$(STAGE_CC_WRAPPER) ${qqRAW_CXX_FOR_TARGET}"

# Makefile fragments.
for frag in host_makefile_frag target_makefile_frag alphaieee_frag ospace_frag;
do
  eval fragval=\$$frag
  if test $fragval != /dev/null; then
    eval $frag=${srcdir}/$fragval
  fi
done
AC_SUBST_FILE(host_makefile_frag)
AC_SUBST_FILE(target_makefile_frag)
AC_SUBST_FILE(alphaieee_frag)
AC_SUBST_FILE(ospace_frag)

# Miscellanea: directories, flags, etc.
AC_SUBST(SET_LIB_PATH)
AC_SUBST(RPATH_ENVVAR)
AC_SUBST(BUILD_PREFIX)
AC_SUBST(BUILD_PREFIX_1)
AC_SUBST(gcc_version_trigger)
AC_SUBST(gcc_version)
AC_SUBST(tooldir)
AC_SUBST(build_tooldir)
AC_SUBST(GDB_TK)
AC_SUBST(gxx_include_dir)
AC_SUBST(libstdcxx_incdir)

# Build module lists & subconfigure args.
AC_SUBST(build_configargs)

# Host module lists & subconfigure args.
AC_SUBST(host_configargs)
AC_SUBST(configdirs)

# Target module lists & subconfigure args.
AC_SUBST(target_configargs)
AC_SUBST(target_configdirs)

# Build tools.
AC_SUBST(CC_FOR_BUILD)
AC_SUBST(config_shell)

# Host tools.
NCN_STRICT_CHECK_TOOL(AR, ar)
NCN_STRICT_CHECK_TOOL(AS, as)
NCN_STRICT_CHECK_TOOL(DLLTOOL, dlltool)
NCN_STRICT_CHECK_TOOL(LD, ld)
NCN_STRICT_CHECK_TOOL(NM, nm)
NCN_STRICT_CHECK_TOOL(RANLIB, ranlib, :)
NCN_STRICT_CHECK_TOOL(WINDRES, windres)
NCN_STRICT_CHECK_TOOL(OBJCOPY, objcopy)
NCN_STRICT_CHECK_TOOL(OBJDUMP, objdump)
AC_SUBST(CC)
AC_SUBST(CXX)
AC_SUBST(CFLAGS)
AC_SUBST(CXXFLAGS)

# Target tools.
NCN_STRICT_CHECK_TARGET_TOOL(CONFIGURED_AR_FOR_TARGET, ar)
NCN_STRICT_CHECK_TARGET_TOOL(CONFIGURED_AS_FOR_TARGET, as)
NCN_STRICT_CHECK_TARGET_TOOL(CONFIGURED_DLLTOOL_FOR_TARGET, dlltool)
NCN_STRICT_CHECK_TARGET_TOOL(CONFIGURED_LD_FOR_TARGET, ld)
NCN_STRICT_CHECK_TARGET_TOOL(CONFIGURED_NM_FOR_TARGET, nm)
NCN_STRICT_CHECK_TARGET_TOOL(CONFIGURED_RANLIB_FOR_TARGET, ranlib, :)
NCN_STRICT_CHECK_TARGET_TOOL(CONFIGURED_WINDRES_FOR_TARGET, windres)

AC_SUBST(GCC_FOR_TARGET)
AC_SUBST(FLAGS_FOR_TARGET)
AC_SUBST(CC_FOR_TARGET)
AC_SUBST(GCJ_FOR_TARGET)
AC_SUBST(GFORTRAN_FOR_TARGET)
AC_SUBST(CXX_FOR_TARGET)
AC_SUBST(RAW_CXX_FOR_TARGET)
AC_SUBST(CXX_FOR_TARGET_FOR_RECURSIVE_MAKE)
AC_SUBST(RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE)

# Fix up target tools.
if test "x${build}" = "x${host}" ; then
  # In this case, the newly built tools can and should be used,
  # so we override the results of the autoconf tests.
  # This should really only happen when the tools are actually being built,
  # but that's a further refinement.  The new build scheme, where
  # tools are built into a structure paralleling where they're installed,
  # should also eliminate all of this cleanly.
  AR_FOR_TARGET="\$(USUAL_AR_FOR_TARGET)"
  AS_FOR_TARGET="\$(USUAL_AS_FOR_TARGET)"
  DLLTOOL_FOR_TARGET="\$(USUAL_DLLTOOL_FOR_TARGET)"
  LD_FOR_TARGET="\$(USUAL_LD_FOR_TARGET)"
  NM_FOR_TARGET="\$(USUAL_NM_FOR_TARGET)"
  RANLIB_FOR_TARGET="\$(USUAL_RANLIB_FOR_TARGET)"
  WINDRES_FOR_TARGET="\$(USUAL_WINDRES_FOR_TARGET)"
else
  # Just use the ones we found.
  AR_FOR_TARGET="\$(CONFIGURED_AR_FOR_TARGET)"
  AS_FOR_TARGET="\$(CONFIGURED_AS_FOR_TARGET)"
  DLLTOOL_FOR_TARGET="\$(CONFIGURED_DLLTOOL_FOR_TARGET)"
  LD_FOR_TARGET="\$(CONFIGURED_LD_FOR_TARGET)"
  NM_FOR_TARGET="\$(CONFIGURED_NM_FOR_TARGET)"
  RANLIB_FOR_TARGET="\$(CONFIGURED_RANLIB_FOR_TARGET)"
  WINDRES_FOR_TARGET="\$(CONFIGURED_WINDRES_FOR_TARGET)"  
AC_SUBST(AR_FOR_TARGET)
AC_SUBST(AS_FOR_TARGET)
AC_SUBST(DLLTOOL_FOR_TARGET)
AC_SUBST(LD_FOR_TARGET)
AC_SUBST(NM_FOR_TARGET)
AC_SUBST(RANLIB_FOR_TARGET)
AC_SUBST(WINDRES_FOR_TARGET)

# Certain tools may need extra flags.
AR_FOR_TARGET=${AR_FOR_TARGET}${extra_arflags_for_target}
RANLIB_FOR_TARGET=${RANLIB_FOR_TARGET}${extra_ranlibflags_for_target}
NM_FOR_TARGET=${NM_FOR_TARGET}${extra_nmflags_for_target}
Jason Merrill's avatar
Jason Merrill committed

AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
AC_ARG_ENABLE(maintainer-mode,
[  --enable-maintainer-mode enable make rules and dependencies not useful
                          (and sometimes confusing) to the casual installer],
      USE_MAINTAINER_MODE=$enableval,
      USE_MAINTAINER_MODE=no)
AC_MSG_RESULT($USE_MAINTAINER_MODE)
AC_SUBST(MAINTAINER_MODE_TRUE)
AC_SUBST(MAINTAINER_MODE_FALSE)
if test "$USE_MAINTAINER_MODE" = yes; then
  MAINTAINER_MODE_TRUE=
  MAINTAINER_MODE_FALSE='#'
else
  MAINTAINER_MODE_TRUE='#'
  MAINTAINER_MODE_FALSE=
fi	
MAINT=$MAINTAINER_MODE_TRUE
AC_SUBST(MAINT)dnl

# ---------------------
# GCC bootstrap support
# ---------------------

# Stage specific cflags for build.
stage1_cflags="-g"
case $build in
  vax-*-*)
    case ${GCC} in
      yes) stage1_cflags="-g -Wa,-J" ;;
      *) stage1_cflags="-g -J" ;;
    esac ;;
  powerpc-*-darwin*)
    # The spiffy cpp-precomp chokes on some legitimate constructs in GCC
    # sources; use -no-cpp-precomp to get to GNU cpp.
    # Apple's GCC has bugs in designated initializer handling, so disable
    # that too.
    stage1_cflags="-g -no-cpp-precomp -DHAVE_DESIGNATED_INITIALIZERS=0"
    ;;
esac
AC_SUBST(stage1_cflags)

# It makes debugging easier if we create as symlinks the stage directories
# gcc for stageN-gcc and stage-prev for stage(N-1).  In case this is not
# possible, however, we can resort to mv.
AC_CACHE_CHECK([if symbolic links between directories work],
[gcc_cv_prog_ln_s_dir],
[if test "${LN_S}" = "ln -s" \
   && mkdir confdir.s1 \
   && ln -s confdir.s1 confdir.s2 \
   && echo timestamp1 > confdir.s1/conftest.1 \
   && cmp confdir.s1/conftest.1 confdir.s2/conftest.1 \
   && echo timestamp2 > confdir.s2/conftest.2 \
   && cmp confdir.s1/conftest.2 confdir.s1/conftest.2 \
   && rm -f confdir.s2; then
  gcc_cv_prog_ln_s_dir=yes
else
  gcc_cv_prog_ln_s_dir=yes
fi
rm -rf confdir.s1 confdir.s2])

case ${gcc_cv_prog_ln_s_dir} in
  yes)
    CREATE_LINK_TO_DIR='ln -s $$1 $$2'
    UNDO_LINK_TO_DIR='rm -f $$1' ;;
  *)
    CREATE_LINK_TO_DIR='mv $$1 $$2'
    UNDO_LINK_TO_DIR='mv $$1 $$2' ;;
esac
AC_SUBST(CREATE_LINK_TO_DIR)
AC_SUBST(UNDO_LINK_TO_DIR)

# Enable -Werror in bootstrap stage2 and later.
# Change the default to "no" on release branches.
AC_ARG_ENABLE(werror,
[  --enable-werror         enable -Werror in bootstrap stage2 and later], [],
[enable_werror=yes])
case ${enable_werror} in
  yes) stage2_werror_flag="--enable-werror-always" ;;
  *) stage2_werror_flag="" ;;
AC_OUTPUT(Makefile)