acinclude.m4

来自「基于4个mips核的noc设计」· M4 代码 · 共 1,996 行 · 第 1/5 页

M4
1,996
字号
dnl This file is included into all any other acinclude file that needsdnl to use these macros.dnl This is copied from autoconf 2.12, but does calls our own AC_PROG_CC_WORKS,dnl and doesn't call AC_PROG_CXX_GNU, cause we test for that in  AC_PROG_CC_WORKS.dnl We are probably using a cross compiler, which will not be able to fullydnl link an executable.  This should really be fixed in autoconf itself.dnl Find a working G++ cross compiler. This only works for the GNU C++ compiler.AC_DEFUN(CYG_AC_PROG_CXX_CROSS,[AC_BEFORE([$0], [AC_PROG_CXXCPP])AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)CYG_AC_PROG_GXX_WORKSif test $ac_cv_prog_gxx = yes; then  GXX=yesdnl Check whether -g works, even if CXXFLAGS is set, in case the packagednl plays around with CXXFLAGS (such as to build both debugging anddnl normal versions of a library), tasteless as that idea is.  ac_test_CXXFLAGS="${CXXFLAGS+set}"  ac_save_CXXFLAGS="$CXXFLAGS"  CXXFLAGS=  AC_PROG_CXX_G  if test "$ac_test_CXXFLAGS" = set; then    CXXFLAGS="$ac_save_CXXFLAGS"  elif test $ac_cv_prog_cxx_g = yes; then    CXXFLAGS="-g -O2"  else    CXXFLAGS="-O2"  fielse  GXX=  test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"fi])dnl See if the G++ compiler we found works.AC_DEFUN(CYG_AC_PROG_GXX_WORKS,[AC_MSG_CHECKING([whether the G++ compiler ($CXX $CXXFLAGS $LDFLAGS) actually works])AC_LANG_SAVEAC_LANG_CPLUSPLUSdnl Try a test case. We only compile, because it's close to impossiblednl to get a correct fully linked executable with a cross compiler. Fordnl most cross compilers, this test is bogus. For G++, we can use variousdnl other compile line options to get a decent idea that the cross compilerdnl actually does work, even though we can't produce an executable withoutdnl more info about the target it's being compiled for. This only worksdnl for the GNU C++ compiler.dnl Transform the name of the compiler to it's cross variant, unlessdnl CXX is set. This is also what CXX gets set to in the generateddnl Makefile.if test x"${CXX}" = xc++ ; then    CXX=`echo gcc | sed -e "${program_transform_name}"`fidnl Get G++'s full path to libgcc.alibgccpath=`${CXX} --print-libgcc`dnl If we don't have a path with libgcc.a on the end, this isn't G++.if test `echo $libgccpath | sed -e 's:/.*/::'` = libgcc.a ; then   ac_cv_prog_gxx=yeselse   ac_cv_prog_gxx=nofidnl If we are using G++, look for the files that need to exist if thisdnl compiler works.if test x"${ac_cv_prog_gxx}" = xyes ; then    gccfiles=`echo $libgccpath | sed -e 's:/libgcc.a::'`    if test -f ${gccfiles}/specs -a -f ${gccfiles}/cpp -a -f ${gccfiles}/cc1plus; then	gccfiles=yes    else	gccfiles=no    fi    gcclibs=`echo $libgccpath | sed -e 's:lib/gcc-lib/::' -e 's:/libgcc.a::' -e 's,\(.*\)/.*,\1,g'`/lib    if test -d ${gcclibs}/ldscripts -a -f ${gcclibs}/libc.a -a -f ${gcclibs}/libstdc++.a ; then	gcclibs=yes    else	gcclibs=no    fifidnl If everything is OK, then we can safely assume the compiler works.if test x"${gccfiles}" = xno -o x"${gcclibs}" = xno; then    ac_cv_prog_cxx_works=no    AC_MSG_ERROR(${CXX} is a non-working cross compiler)else   ac_cv_prog_cxx_works=yes fiAC_LANG_RESTOREAC_MSG_RESULT($ac_cv_prog_cxx_works)if test x"$ac_cv_prog_cxx_works" = xno; then  AC_MSG_ERROR([installation or configuration problem: C++ compiler cannot create executables.])fiAC_MSG_CHECKING([whether the G++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler])AC_MSG_RESULT($ac_cv_prog_cxx_cross)cross_compiling=$ac_cv_prog_cxx_crossAC_SUBST(CXX)])dnl ====================================================================dnl Find a working GCC cross compiler. This only works for the GNU gcc compiler.dnl This is based on the macros above for G++.AC_DEFUN(CYG_AC_PROG_CC_CROSS,[AC_BEFORE([$0], [AC_PROG_CCPP])AC_CHECK_PROGS(CC, cc, gcc)CYG_AC_PROG_GCC_WORKSif test $ac_cv_prog_gcc = yes; then  GCC=yesdnl Check whether -g works, even if CFLAGS is set, in case the packagednl plays around with CFLAGS (such as to build both debugging anddnl 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"  fielse  GXX=  test "${CFLAGS+set}" = set || CFLAGS="-g"fi])dnl See if the GCC compiler we found works.AC_DEFUN(CYG_AC_PROG_GCC_WORKS,[AC_MSG_CHECKING([whether the Gcc compiler ($CC $CFLAGS $LDFLAGS) actually works])AC_LANG_SAVEAC_LANG_Cdnl Try a test case. We only compile, because it's close to impossiblednl to get a correct fully linked executable with a crossdnl compiler. For most cross compilers, this test is bogus. For G++,dnl we can use various other compile line options to get a decent ideadnl that the cross compiler actually does work, even though we can'tdnl produce an executable without more info about the target it'sdnl being compiled for. This only works for the GNU C++ compiler.dnl Transform the name of the compiler to it's cross variant, unlessdnl CXX is set. This is also what CC gets set to in the generated Makefile.if test x"${CC}" = xcc ; then    CC=`echo gcc | sed -e "${program_transform_name}"`fidnl Get Gcc's full path to libgcc.alibgccpath=`${CC} --print-libgcc`dnl If we don't have a path with libgcc.a on the end, this isn't G++.if test `echo $libgccpath | sed -e 's:/.*/::'` = libgcc.a ; then   ac_cv_prog_gcc=yeselse   ac_cv_prog_gcc=nofidnl If we are using Gcc, look for the files that need to exist if thisdnl compiler works.if test x"${ac_cv_prog_gcc}" = xyes ; then    gccfiles=`echo $libgccpath | sed -e 's:/libgcc.a::'`    if test -f ${gccfiles}/specs -a -f ${gccfiles}/cpp -a -f ${gccfiles}/cc1plus; then	gccfiles=yes    else	gccfiles=no    fi    gcclibs=`echo $libgccpath | sed -e 's:lib/gcc-lib/::' -e 's:/libgcc.a::' -e 's,\(.*\)/.*,\1,g'`/lib    if test -d ${gcclibs}/ldscripts -a -f ${gcclibs}/libc.a -a -f ${gcclibs}/libstdc++.a ; then	gcclibs=yes    else	gcclibs=no    fifidnl If everything is OK, then we can safely assume the compiler works.if test x"${gccfiles}" = xno -o x"${gcclibs}" = xno; then    ac_cv_prog_cc_works=no    AC_MSG_ERROR(${CC} is a non-working cross compiler)    else    ac_cv_prog_cc_works=yesfiAC_LANG_RESTOREAC_MSG_RESULT($ac_cv_prog_cc_works)if test x"$ac_cv_prog_cc_works" = xno; then  AC_MSG_ERROR([installation or configuration problem: C++ compiler cannot create executables.])fiAC_MSG_CHECKING([whether the Gcc compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler])AC_MSG_RESULT($ac_cv_prog_cc_cross)cross_compiling=$ac_cv_prog_cc_crossAC_SUBST(CC)])dnl ====================================================================dnl Find the BFD library in the build tree. This is used to access anddnl manipulate object or executable files.AC_DEFUN(CYG_AC_PATH_BFD, [AC_MSG_CHECKING(for the bfd header in the build tree)dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."dnl Look for the header fileAC_CACHE_VAL(ac_cv_c_bfdh,[for i in $dirlist; do    if test -f "$i/bfd/bfd.h" ; then	ac_cv_c_bfdh=`(cd $i/bfd; pwd)`	break    fidone])if test x"${ac_cv_c_bfdh}" != x; then    BFDHDIR="-I${ac_cv_c_bfdh}"    AC_MSG_RESULT(${ac_cv_c_bfdh})else    AC_MSG_RESULT(none)fiAC_SUBST(BFDHDIR)dnl Look for the libraryAC_MSG_CHECKING(for the bfd library in the build tree)AC_CACHE_VAL(ac_cv_c_bfdlib,[for i in $dirlist; do    if test -f "$i/bfd/Makefile" ; then	ac_cv_c_bfdlib=`(cd $i/bfd; pwd)`    fidone])dnl We list two directories cause bfd now uses libtoolif test x"${ac_cv_c_bfdlib}" != x; then    BFDLIB="-L${ac_cv_c_bfdlib} -L${ac_cv_c_bfdlib}/.libs"    AC_MSG_RESULT(${ac_cv_c_bfdlib})else    AC_MSG_RESULT(none)fiAC_SUBST(BFDLIB)])dnl ====================================================================dnl Find the libiberty library. This defines many commonly used Cdnl functions that exists in various states based on the underlying OS.AC_DEFUN(CYG_AC_PATH_LIBERTY, [AC_MSG_CHECKING(for the liberty library in the build tree)dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."AC_CACHE_VAL(ac_cv_c_liberty,[for i in $dirlist; do    if test -f "$i/libiberty/Makefile" ; then	ac_cv_c_liberty=`(cd $i/libiberty; pwd)`    fidone])if test x"${ac_cv_c_liberty}" != x; then    LIBERTY="-L${ac_cv_c_liberty}"    AC_MSG_RESULT(${ac_cv_c_liberty})else    AC_MSG_RESULT(none)fiAC_SUBST(LIBERTY)])dnl ====================================================================dnl Find the opcodes library. This is used to do dissasemblies.AC_DEFUN(CYG_AC_PATH_OPCODES, [AC_MSG_CHECKING(for the opcodes library in the build tree)dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."AC_CACHE_VAL(ac_cv_c_opc,[for i in $dirlist; do    if test -f "$i/opcodes/Makefile" ; then	ac_cv_c_opc=`(cd $i/opcodes; pwd)`    fidone])if test x"${ac_cv_c_opc}" != x; then    OPCODESLIB="-L${ac_cv_c_opc}"    AC_MSG_RESULT(${ac_cv_c_opc})else    AC_MSG_RESULT(none)fiAC_SUBST(OPCODESLIB)])dnl ====================================================================dnl Look for the DejaGnu header file in the source tree. This filednl defines the functions used to testing support.AC_DEFUN(CYG_AC_PATH_DEJAGNU, [AC_MSG_CHECKING(for the testing support files in the source tree)dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."AC_CACHE_VAL(ac_cv_c_dejagnu,[for i in $dirlist; do    if test -f "$srcdir/$i/ecc/ecc/infra/testlib/current/include/dejagnu.h" ; then	ac_cv_c_dejagnu=`(cd $srcdir/$i/ecc/ecc/infra/testlib/current/include; pwd)`    fidone])if test x"${ac_cv_c_dejagnu}" != x; then    DEJAGNUHDIR="-I${ac_cv_c_dejagnu}"    AC_MSG_RESULT(${ac_cv_c_dejagnu})else    AC_MSG_RESULT(none)fiAC_CACHE_VAL(ac_cv_c_dejagnulib,[for i in $dirlist; do    if test -f "$srcdir/$i/infra/testlib/current/lib/hostutil.exp" ; then	ac_cv_c_dejagnulib=`(cd $srcdir/$i/infra/testlib/current/lib; pwd)`    fidone])if test x"${ac_cv_c_dejagnulib}" != x; then    DEJAGNULIB="${ac_cv_c_dejagnulib}"else    DEJAGNULIB=""fiAC_MSG_CHECKING(for runtest in the source tree)AC_CACHE_VAL(ac_cv_c_runtest,[for i in $dirlist; do    if test -f "$srcdir/$i/dejagnu/runtest" ; then	ac_cv_c_runtest=`(cd $srcdir/$i/dejagnu; pwd)`    fidone])if test x"${ac_cv_c_runtest}" != x; then    RUNTESTDIR="${ac_cv_c_runtest}"   AC_MSG_RESULT(${ac_cv_c_runtest})else    RUNTESTDIR=""    AC_MSG_RESULT(none)fiAC_SUBST(RUNTESTDIR)AC_SUBST(DEJAGNULIB)AC_SUBST(DEJAGNUHDIR)])dnl ====================================================================dnl Find the libintl library in the build tree. This is fordnl  internationalization support.AC_DEFUN(CYG_AC_PATH_INTL, [AC_MSG_CHECKING(for the intl header in the build tree)dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."dnl Look for the header fileAC_CACHE_VAL(ac_cv_c_intlh,[for i in $dirlist; do    if test -f "$i/intl/libintl.h" ; then	ac_cv_c_intlh=`(cd $i/intl; pwd)`	break    fidone])if test x"${ac_cv_c_intlh}" != x; then    INTLHDIR="-I${ac_cv_c_intlh}"    AC_MSG_RESULT(${ac_cv_c_intlh})else    AC_MSG_RESULT(none)fiAC_SUBST(INTLHDIR)dnl Look for the libraryAC_MSG_CHECKING(for the libintl library in the build tree)AC_CACHE_VAL(ac_cv_c_intllib,[for i in $dirlist; do    if test -f "$i/intl/Makefile" ; then	ac_cv_c_intllib=`(cd $i/intl; pwd)`    fidone])if test x"${ac_cv_c_intllib}" != x; then    INTLLIB="-L${ac_cv_c_intllib} -lintl"    AC_MSG_RESULT(${ac_cv_c_intllib})else    AC_MSG_RESULT(none)fiAC_SUBST(INTLLIB)])dnl ====================================================================dnl Find the simulator library.AC_DEFUN(CYG_AC_PATH_SIM, [dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.. ../../../../../../../../../.."case "$target_cpu" in    powerpc)	target_dir=ppc ;;    sparc*)	target_dir=erc32 ;;    mips*)	target_dir=mips ;;    *)		target_dir=$target_cpu ;;esacdnl First look for the header fileAC_MSG_CHECKING(for the simulator header file)AC_CACHE_VAL(ac_cv_c_simh,[for i in $dirlist; do    if test -f "${srcdir}/$i/include/remote-sim.h" ; then	ac_cv_c_simh=`(cd ${srcdir}/$i/include; pwd)`	break    fidone])if test x"${ac_cv_c_simh}" != x; then    SIMHDIR="-I${ac_cv_c_simh}"    AC_MSG_RESULT(${ac_cv_c_simh})else    AC_MSG_RESULT(none)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?