blob: e04ee8741034631fe5c1214cf83a7e224816d8ac [file] [log] [blame]
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 <bfd.h>
#include <stdlib.h>
],
[[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
]
)