dnl AX_CELL_SPU - check for needed binutils stuff for Cell BE SPU AC_DEFUN([AX_CELL_SPU], [ # On Cell BE architecture, OProfile uses bfd_openr_iovec when processing some # SPU profiles. To parse embedded SPU ELF on Cell BE, OProfile requires a # version of bfd_openr_iovec that supports the elf32-spu target. # This version of the function also has a 7th parameter that's been added. # First, we check for existence of the base bfd_openr_iovec. If it exists, # we then use a temporary test program below that passes 7 arguments to # bfd_openr_iovec; if it compiles OK, we assume we have the right BFD # library to support Cell BE SPU profiling. AC_LANG_PUSH(C) AC_CHECK_LIB(bfd, bfd_openr_iovec, [bfd_openr_iovec_exists="yes"], [bfd_openr_iovec_exists="no"] ) if test "$bfd_openr_iovec_exists" = "yes"; then AC_MSG_CHECKING([whether bfd_openr_iovec has seven parameters]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include #include ], [[struct bfd *nbfd = bfd_openr_iovec("some-file", "elf32-spu", NULL, NULL, NULL, NULL, NULL); return 0; ]])], [AC_DEFINE([HAVE_BFD_OPENR_IOVEC_WITH_7PARMS], [], [Defined if you have the version of bfd_openr_iovec with 7 parameters]) bfd_open_iovec_7="yes" AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])] ) fi AC_LANG_POP(C) arch="unknown" AC_ARG_WITH(target, [ --with-target=cell-be Check BFD support for Cell Broadband Engine SPU profiling], arch=$withval) if test "$arch" = "cell-be"; then if test "$bfd_open_iovec_7" = "yes"; then AC_MSG_NOTICE([BFD library has support for Cell Broadband Engine SPU profiling]) else AC_ERROR([BFD library does not support elf32-spu target; SPU profiling is unsupported]) fi fi ] )