49703eb3f5
* mips/crt0_cfe.S: New file. * mips/cfe_mem.c: New file. * mips/cfe_prestart.S: Remove. * mips/cfe.ld: Adjust to use crt0_cfe.o as the startup file, and and use _start as the entry point. Align BSS to 32-byte boundary. * mips/cfe.c: Reimplement to fit on top of a crt0_cfe.o file. * mips/cfe_api.h (__libcfe_stack_size, __libcfe_mem_limit) (__libcfe_meminit, __libcfe_stack_top): New prototypes. * mips/Makefile.in (CFEOBJS): Replace cfe_prestart.o with cfe_mem.o. (cfe.o, cfe_api.o, cfe_mem.o, crt0_cfe.o): New targets. * mips/configure.in: Build and install crt0_cfe.o when CFE support is built. * mips/configure: Regenerate.
158 lines
4.5 KiB
Plaintext
158 lines
4.5 KiB
Plaintext
# Copyright (c) 1995, 1996, 1997, 1998, 1999, 2000, 2002 Cygnus Support
|
|
#
|
|
# The authors hereby grant permission to use, copy, modify, distribute,
|
|
# and license this software and its documentation for any purpose, provided
|
|
# that existing copyright notices are retained in all copies and that this
|
|
# notice is included verbatim in any distributions. No written agreement,
|
|
# license, or royalty fee is required for any of the authorized uses.
|
|
# Modifications to this software may be copyrighted by their authors
|
|
# and need not follow the licensing terms described here, provided that
|
|
# the new terms are clearly indicated on the first page of each file where
|
|
# they apply.
|
|
#
|
|
# Process this file with autoconf to produce a configure script.
|
|
#
|
|
AC_PREREQ(2.5)dnl
|
|
AC_INIT(crt0.S)
|
|
|
|
if test "${enable_shared}" = "yes" ; then
|
|
echo "Shared libraries not supported for cross compiling, ignored"
|
|
fi
|
|
|
|
if test "$srcdir" = "." ; then
|
|
if test "${with_target_subdir}" != "." ; then
|
|
libgloss_topdir="${srcdir}/${with_multisrctop}../../.."
|
|
else
|
|
libgloss_topdir="${srcdir}/${with_multisrctop}../.."
|
|
fi
|
|
else
|
|
libgloss_topdir="${srcdir}/../.."
|
|
fi
|
|
AC_CONFIG_AUX_DIR($libgloss_topdir)
|
|
|
|
AC_CANONICAL_SYSTEM
|
|
AC_ARG_PROGRAM
|
|
|
|
AC_PROG_INSTALL
|
|
|
|
# FIXME: We temporarily define our own version of AC_PROG_CC. This is
|
|
# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
|
|
# are building a library that must be included in all links, so we
|
|
# can't link an executable until this lib is built.
|
|
# autoconf should provide a way to do this.
|
|
|
|
AC_DEFUN(LIB_AC_PROG_CC,
|
|
[AC_BEFORE([$0], [AC_PROG_CPP])dnl
|
|
AC_CHECK_PROG(CC, gcc, gcc)
|
|
if test -z "$CC"; then
|
|
AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
|
|
test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
|
|
fi
|
|
|
|
AC_PROG_CC_GNU
|
|
|
|
if test $ac_cv_prog_gcc = yes; then
|
|
GCC=yes
|
|
dnl Check whether -g works, even if CFLAGS is set, in case the package
|
|
dnl plays around with CFLAGS (such as to build both debugging and
|
|
dnl normal versions of a library), tasteless as that idea is.
|
|
ac_test_CFLAGS="${CFLAGS+set}"
|
|
ac_save_CFLAGS="$CFLAGS"
|
|
CFLAGS=
|
|
AC_PROG_CC_G
|
|
if test "$ac_test_CFLAGS" = set; then
|
|
CFLAGS="$ac_save_CFLAGS"
|
|
elif test $ac_cv_prog_cc_g = yes; then
|
|
CFLAGS="-g -O2"
|
|
else
|
|
CFLAGS="-O2"
|
|
fi
|
|
else
|
|
GCC=
|
|
test "${CFLAGS+set}" = set || CFLAGS="-g"
|
|
fi
|
|
])
|
|
|
|
LIB_AC_PROG_CC
|
|
AS=${AS-as}
|
|
AC_SUBST(AS)
|
|
AR=${AR-ar}
|
|
AC_SUBST(AR)
|
|
LD=${LD-ld}
|
|
AC_SUBST(LD)
|
|
AC_PROG_RANLIB
|
|
|
|
crt0=crt0.o
|
|
pcrt0=pcrt0.o
|
|
|
|
case "${target}" in
|
|
mips*-tx39*-*|mipstx39*-*-*)
|
|
part_specific_obj=
|
|
part_specific_defines=
|
|
script_list="dve idt jmr3904app jmr3904dram jmr3904dram-java jmr3904app-java"
|
|
bsp_list="libdve.a libidt.a libjmr3904.a"
|
|
;;
|
|
mipsisa32-*-* | mipsisa32el-*-* | \
|
|
mipsisa32r2-*-* | mipsisa32r2el-*-*)
|
|
crt0="crt0_cfe.o crt0_cygmon.o crt0.o"
|
|
pcrt0="pcrt0.o"
|
|
part_specific_obj=
|
|
part_specific_defines=
|
|
script_list="idt32 idt64 cfe"
|
|
bsp_list="libcygmon.a libidt.a libcfe.a"
|
|
;;
|
|
mips*-lsi*-*)
|
|
part_specific_obj=entry.o
|
|
part_specific_defines=
|
|
script_list="lsi"
|
|
bsp_list=liblsi.a
|
|
;;
|
|
mips64vr5*-*-*)
|
|
part_specific_obj="vr5xxx.o cma101.o"
|
|
part_specific_defines=-DR5000
|
|
script_list="idt pmon ddb ddb-kseg0 lsi idtecoff nullmon"
|
|
bsp_list="libidt.a libpmon.a liblsi.a libnullmon.a"
|
|
;;
|
|
mips64vr-*-* | mips64vrel-*-*)
|
|
part_specific_obj="vr5xxx.o cma101.o"
|
|
script_list="ddb ddb-kseg0 nullmon"
|
|
bsp_list="libpmon.a libnullmon.a"
|
|
;;
|
|
*)
|
|
crt0="crt0_cfe.o crt0.o"
|
|
part_specific_obj="vr4300.o cma101.o"
|
|
part_specific_defines=
|
|
script_list="idt pmon ddb ddb-kseg0 lsi cfe idtecoff nullmon"
|
|
bsp_list="libidt.a libpmon.a liblsi.a libcfe.a libnullmon.a"
|
|
;;
|
|
esac
|
|
|
|
host_makefile_frag=${srcdir}/../config/default.mh
|
|
target_makefile_frag=${srcdir}/../config/mips.mt
|
|
|
|
dnl We have to assign the same value to other variables because autoconf
|
|
dnl doesn't provide a mechanism to substitute a replacement keyword with
|
|
dnl arbitrary data or pathnames.
|
|
dnl
|
|
host_makefile_frag_path=$host_makefile_frag
|
|
AC_SUBST(host_makefile_frag_path)
|
|
AC_SUBST_FILE(host_makefile_frag)
|
|
target_makefile_frag_path=$target_makefile_frag
|
|
AC_SUBST(target_makefile_frag_path)
|
|
AC_SUBST_FILE(target_makefile_frag)
|
|
AC_SUBST(part_specific_obj)
|
|
AC_SUBST(part_specific_defines)
|
|
AC_SUBST(script_list)
|
|
AC_SUBST(bsp_list)
|
|
AC_SUBST(crt0)
|
|
AC_SUBST(pcrt0)
|
|
|
|
AC_OUTPUT(Makefile,
|
|
. ${libgloss_topdir}/config-ml.in,
|
|
srcdir=${srcdir}
|
|
target=${target}
|
|
ac_configure_args="${ac_configure_args} --enable-multilib"
|
|
CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
|
|
libgloss_topdir=${libgloss_topdir}
|
|
)
|