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 + -
显示快捷键?