#
-# Copyright 2001,2003,2004,2005 Free Software Foundation, Inc.
+# Copyright 2001,2003,2004,2005,2006,2007,2008,2009,2010 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 2, or (at your option)
+# 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,
#
# 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., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
#
include $(top_srcdir)/Makefile.common
-# Install this stuff in the gr subdirectory of the python pkg dir.
-# This usually ends up at:
-# ${prefix}/lib/python${python_version}/site-packages/gnuradio/gr
-
-grgrpythondir = $(grpythondir)/gr
-grgrlibdir = $(grpyexecdir)/gr
-
-
-INCLUDES = $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS) -I$(srcdir)
-
+if PYTHON
+AM_CPPFLAGS = -I$(srcdir) $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS) \
+ $(WITH_INCLUDES)
EXTRA_DIST = gen-swig-bug-fix
-
-LOCAL_IFILES = \
+# SWIG headers get installed in ${prefix}/include/gnuradio/swig
+swiginclude_HEADERS = \
gnuradio.i \
- shared_ptr.i
-
-ALL_IFILES = \
- $(LOCAL_IFILES)
-
-
-BUILT_SOURCES = \
- gnuradio_swig_python.cc \
- gnuradio_swig_python.py \
- gnuradio_swig_python.h \
- gnuradio_swig_bug_workaround.h
-
-grgrpython_PYTHON = \
- gnuradio_swig_python.py
-
-
-SWIGPYTHONARGS = $(SWIGPYTHONFLAGS) $(INCLUDES)
+ gr_swig_block_magic.i \
+ gr_shared_ptr.i
+# special install for this top-level Python script which includes all
+# of the split Python libraries.
+ourpythondir = $(grpythondir)/gr
+ourpython_PYTHON = gnuradio_swig_python.py
# ----------------------------------------------------------------
-# _gnuradio_swig_python contains all the glue that implements
-# the gnuradio.gr python package
-
-grgrlib_LTLIBRARIES = \
- _gnuradio_swig_python.la
-
-_gnuradio_swig_python_la_SOURCES = \
- gnuradio_swig_python.cc
-
+# FIXME As of swig 1.3.31, this still seems to be required...
-_gnuradio_swig_python_la_LIBADD = \
- $(top_builddir)/gnuradio-core/src/lib/libgnuradio-core.la \
- $(PYTHON_LDFLAGS) \
- -lstdc++
+gnuradio_swig_bug_workaround.h : gnuradio_swig_py_runtime.cc $(srcdir)/gen-swig-bug-fix
+ $(PYTHON) $(srcdir)/gen-swig-bug-fix gnuradio_swig_py_runtime.cc $@
-_gnuradio_swig_python_la_LDFLAGS = -module -avoid-version $(NO_UNDEFINED)
-
-
-# KLUDGE: Force runtime include of gnuradio_swig_python.d dependency file.
-# This is not guaranteed to be portable, but will probably work.
-# If it works, we have accurate dependencies for our swig stuff, which is good.
-@am__include@ @am__quote@./gnuradio_swig_python.d@am__quote@
-
-gnuradio_swig_python.cc gnuradio_swig_python.py gnuradio_swig_python.h : gnuradio.i
- if $(SWIG) $(SWIGPYTHONARGS) -MMD -MF gnuradio_swig_python.Td -module gnuradio_swig_python -o gnuradio_swig_python.cc $< ;\
- then if test $(host_os) = mingw32; \
- then sed 's,\\\\,/,g' <gnuradio_swig_python.Td >gnuradio_swig_python.d; rm -f gnuradio_swig_python.Td; \
- else mv -f gnuradio_swig_python.Td gnuradio_swig_python.d; fi \
- else rm -f gnuradio_swig_python.Td; exit 1; fi
-
-gnuradio_swig_bug_workaround.h : gnuradio_swig_python.cc $(srcdir)/gen-swig-bug-fix
- $(srcdir)/gen-swig-bug-fix $< $@
-
-
-# ----------------------------------------------------------------
-
-# Don't distribute output of swig
-dist-hook:
- @for file in $(BUILT_SOURCES); do echo $(RM) $(distdir)/$$file; done
- @for file in $(BUILT_SOURCES); do $(RM) $(distdir)/$$file; done
-
-
-grinclude_HEADERS = \
+# C/C++ headers get installed in ${prefix}/include/gnuradio
+grinclude_HEADERS = \
gnuradio_swig_bug_workaround.h
-swiginclude_HEADERS = \
- $(LOCAL_IFILES)
-
-MOSTLYCLEANFILES = \
- $(BUILT_SOURCES) *~ *.pyc
+# ----------------------------------------------------------------
+# We've split the previously monstrous gnuradio_swig_python into 6
+# smaller pieces. This reduces compile time coupling and creates
+# smaller pieces for the compiler to digest. prior to this change, on
+# X86_64, g++'s resident set size was 650MB!
+# ----------------------------------------------------------------
-DISTCLEANFILES = gnuradio_swig_python.d
+TOP_SWIG_IFILES = \
+ gnuradio_swig_py_runtime.i \
+ gnuradio_swig_py_general.i \
+ gnuradio_swig_py_gengen.i \
+ gnuradio_swig_py_filter.i \
+ gnuradio_swig_py_io.i \
+ gnuradio_swig_py_hier.i
+
+# Install so that they end up available as:
+# import gnuradio.gr
+# This ends up at:
+# ${prefix}/lib/python${python_version}/site-packages/gnuradio/gr
+gnuradio_swig_py_runtime_pythondir_category = gnuradio/gr
+gnuradio_swig_py_general_pythondir_category = gnuradio/gr
+gnuradio_swig_py_gengen_pythondir_category = gnuradio/gr
+gnuradio_swig_py_filter_pythondir_category = gnuradio/gr
+gnuradio_swig_py_io_pythondir_category = gnuradio/gr
+gnuradio_swig_py_hier_pythondir_category = gnuradio/gr
+
+# additional libraries for linking with each SWIG-generated library
+gnuradio_swig_py_runtime_la_swig_libadd = $(GNURADIO_CORE_LA)
+gnuradio_swig_py_general_la_swig_libadd = $(GNURADIO_CORE_LA)
+gnuradio_swig_py_gengen_la_swig_libadd = $(GNURADIO_CORE_LA)
+gnuradio_swig_py_filter_la_swig_libadd = $(GNURADIO_CORE_LA)
+gnuradio_swig_py_io_la_swig_libadd = $(GNURADIO_CORE_LA)
+gnuradio_swig_py_hier_la_swig_libadd = $(GNURADIO_CORE_LA)
+
+include $(top_srcdir)/Makefile.swig
+
+# add some of the variables generated inside the Makefile.swig
+
+# include the SWIG-generated .h files in the BUILT SOURCES, since they
+# aren't by default when using Makefile.swig; order doesn't matter.
+BUILT_SOURCES = \
+ gnuradio_swig_py_runtime.h \
+ gnuradio_swig_py_general.h \
+ gnuradio_swig_py_gengen.h \
+ gnuradio_swig_py_filter.h \
+ gnuradio_swig_py_io.h \
+ gnuradio_swig_py_hier.h \
+ $(grinclude_HEADERS) \
+ $(swig_built_sources)
+
+# Do not distribute the output of SWIG
+no_dist_files = $(swig_built_sources)
+endif