On Wed, Dec 31, 2008 at 10:59:22AM -0500, Chris Noyes wrote:
> I'm trying to do an out of tree build using gcell on a PS3 with Fedora 8. Is
> anybody else working on this? Any pointers?
> I copied the 'gr-howto-write-a-block' folder out of the tree and followed
> the documentation to create my own block. I then copied
> 'Makefile.common.spu' and used the 'gr-gcell' fft example as a guide to edit
> my program. I was successful in getting a 'hello world from spe', but not
> without manually hacking the Makefiles to include/exclude certain includes
> and libraries. I'm hoping there's an easier way.
> 
> Thanks,
> Chris


Hi Chris,

Yes, there's an easier way.  The main thing you want to do is to copy
config/gr_standalone.m4, config/gr_gcell.m4, and config/pkg.m4 out of the
trunk and add them to your out-of-tree config directory.  Invoke
GR_GCELL in your configure.ac and most of what you need will be set
up.  See the attached files below.

I generally use a directory structure that looks like this:

  mymodule/config               # m4 macros
  mymodule/include/mymodule     # includes that will be installed in 
PREFIX/include/mymodule
  mymodule/include/mymodule/spu # SPU specific includes that will be installed
  mymodule/lib                  # generic code
  mymodule/lib/gcell            # code that uses gcell
  mymodule/lib/gcell/spu        # SPU code used by code in lib/gcell
  mymodule/python
  mymodule/apps

lib/gcell is only built if the AM_CONDITIONAL HAVE_GCELL is true.

There's also a HAVE_GCELL value in config.h


If I get some time, I'll work up a revised out-of-tree skeleton that
includes conditionally built code that uses gcell.  In the meantime, 
I'm working on a "gcell-ized" version of FFTW :-)

Eric
dnl 
dnl  Copyright 2004,2005,2007,2008 Free Software Foundation, Inc.
dnl  
dnl  This file is part of GNU Radio
dnl  
dnl  GNU Radio is free software; you can redistribute it and/or modify
dnl  it under the terms of the GNU General Public License as published by
dnl  the Free Software Foundation; either version 3, or (at your option)
dnl  any later version.
dnl  
dnl  GNU Radio is distributed in the hope that it will be useful,
dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
dnl  GNU General Public License for more details.
dnl  
dnl  You should have received a copy of the GNU General Public License
dnl  along with GNU Radio; see the file COPYING.  If not, write to
dnl  the Free Software Foundation, Inc., 51 Franklin Street,
dnl  Boston, MA 02110-1301, USA.
dnl 

dnl This is kind of non-standard, but it sure shortens up this file :-)
m4_include([config/gr_standalone.m4])

GR_STANDALONE(mymodule,0.1.svn)

dnl Check for any libraries you need
dnl AC_CHECK_LIBRARY

dnl Check for header files you need
dnl AC_CHECK_HEADERS(fcntl.h limits.h strings.h sys/ioctl.h sys/time.h unistd.h)
dnl AC_CHECK_HEADERS(sys/mman.h)

dnl Checks for library functions.
dnl AC_CHECK_FUNCS([])

dnl We pick up the boost cppflags, cxxflags and thread lib via GNURADIO_CORE
dnl
dnl If you need additional boost libraries, you'll need to
dnl uncomment AX_BOOST_BASE, plus some of the following:
dnl
dnl calls AC_SUBST(BOOST_CPPFLAGS), AC_SUBST(BOOST_LDFLAGS) and defines 
HAVE_BOOST
dnl AX_BOOST_BASE([1.35])
dnl
dnl All the rest of these call AC_SUBST(BOOST_<foo>_LIB) and define 
HAVE_BOOST_<foo>
dnl
dnl AX_BOOST_DATE_TIME
dnl AX_BOOST_FILESYSTEM
dnl AX_BOOST_IOSTREAMS
dnl AX_BOOST_PROGRAM_OPTIONS
dnl AX_BOOST_REGEX
dnl AX_BOOST_SERIALIZATION
dnl AX_BOOST_SIGNALS
dnl AX_BOOST_SYSTEM
dnl AX_BOOST_TEST_EXEC_MONITOR
dnl AX_BOOST_UNIT_TEST_FRAMEWORK
dnl AX_BOOST_WSERIALIZATION


GR_GCELL

LIBS="$LIBS $GNURADIO_CORE_LIBS"

AC_CONFIG_FILES([\
          Makefile \
          apps/Makefile \
          config/Makefile \
          data/Makefile \
          doc/Makefile \
          include/Makefile \
          include/mymodule/Makefile \
          include/mymodule/spu/Makefile \
          lib/Makefile \
          lib/gcell/Makefile \
          lib/gcell/spu/Makefile \
          python/Makefile \
          python/run_tests \
        ])

dnl run_tests is created from run_tests.in.  Make it executable.
AC_CONFIG_COMMANDS([run_tests], [chmod +x python/run_tests])

AC_OUTPUT
#
# Copyright 2004,2008 Free Software Foundation, Inc.
# 
# This file is part of GNU Radio
# 
# GNU Radio is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
# 
# GNU Radio is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with GNU Radio; see the file COPYING.  If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.
# 

ACLOCAL_AMFLAGS = -I config

include $(top_srcdir)/Makefile.common

EXTRA_DIST = bootstrap configure config.h.in
SUBDIRS = config include lib apps doc
if USE_PYTHON
SUBDIRS += python 
endif

pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA =
# -*- Makefile -*-
#
# Copyright 2004,2006,2008 Free Software Foundation, Inc.
# 
# This file is part of GNU Radio
# 
# GNU Radio is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
# 
# GNU Radio is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with GNU Radio; see the file COPYING.  If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.
# 

ourincludedir  = $(includedir)/mymodule

# swig includes 
ourswigincludedir = $(ourincludedir)/swig

# Install this stuff in the appropriate subdirectory
# This usually ends up at:
#   ${prefix}/lib/python${python_version}/site-packages/mymodule

ourpythondir = $(pythondir)/mymodule
ourpyexecdir = $(pyexecdir)/mymodule

# spu stuff
ourspuincludedir = $(ourincludedir)/spu
libspudir = $(libdir)spu

gcell_embedspu_libto...@gcell_embedspu_libtool@

# swig flags
SWIGPYTHONFLAGS = -fvirtual -python -modern
SWIGGRFLAGS = -I$(GNURADIO_CORE_INCLUDEDIR)/swig -I$(GNURADIO_CORE_INCLUDEDIR) 
$(GNURADIO_CORE_CPPFLAGS)

# standard defins and includes
STD_DEFINES_AND_INCLUDES=$(GNURADIO_CORE_CPPFLAGS) -I$(top_srcdir)/include 
-I$(top_srcdir)/lib

# Don't assume that make predefines $(RM), because BSD make does
# not. We define it now in configure.ac using AM_PATH_PROG, but now
# here have to add a -f to be like GNU make.
RM=$(RM_PROG) -f
# -*- Makefile -*-
#
# Copyright 2007,2008 Free Software Foundation, Inc.
# 
# This file is part of GNU Radio
# 
# GNU Radio is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
# 
# GNU Radio is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#

include $(top_srcdir)/Makefile.common

# We're abusing automake, getting it to generate code for two
# architectures under the same tree.  If you've got a better way to do
# this, please let us know

AR=spu-ar
RANLIB=spu-ranlib
CC=spu-gcc
CCAS = spu-gcc
LD=spu-ld

C_WARNINGS = \
  -Wall -Wextra -Wstrict-prototypes -Werror-implicit-function-declaration

# Need to override user stuff even though it gives a warning.
# (Otherwise these contain PPE related info.)

CPPFLAGS=
LDFLAGS=
CFLAGS=
LIBS=

AM_CFLAGS = -O3 -g --std=gnu99 -fstrict-aliasing $(C_WARNINGS)


#!/bin/bash

#
# Before trying to use this script, please follow the instructions at
# http://gnuradio.org/trac/wiki/CrossCompilingForCell
#

scriptdir=`dirname $0`

prefix=
for arg in "$@"
do
  case $arg in
    --prefix=*)
      prefix=${arg#--prefix=}
      ;;
    --help)
      $scriptdir/configure --help
      exit
      ;;
  esac
done

if test x$prefix = x
then
  echo "usage: $0 --prefix=PREFIX [configure options...]" 1>&2
  exit 1
fi


arch=ppu
cell_root=/mnt/cell-root
python_version=2.5
compiler_includes="-isystem ${cell_root}/usr/include"

$scriptdir/configure                        \
    CC=${arch}32-gcc                        \
    CXX=${arch}32-g++                       \
    AR=${arch}-ar                           \
    NM=${arch}-nm                           \
    RANLIB=${arch}-ranlib                   \
    STRIP=${arch}-strip                     \
    F77=false                               \
    CPPFLAGS="$compiler_includes"                                               
        \
    LDFLAGS="-L${cell_root}/lib -L${cell_root}/usr/lib -L${prefix}/lib"         
        \
    PYTHON_CPPFLAGS=-I${cell_root}/usr/include/python${python_version}          
        \
    
PKG_CONFIG_PATH=${cell_root}/usr/lib/pkgconfig:${cell_root}/usr/local/lib/pkgconfig
 \
    --host=powerpc64-unknown-linux-gnu                                          
        \
    --with-pythondir=$prefix/lib/python${python_version}/site-packages          
        \
    --disable-gr-video-sdl \
    --disable-gr-audio-portaudio \
    --disable-usrp2-firmware \
    "$@"


# Hack the libtool script so that it doesn't code an --rpath flag into anything

#sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
#sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to