Imported Upstream version 3.2.2
[debian/gnuradio] / gnuradio-core / src / lib / swig / Makefile.am
index f8d9297e69eb4e810ee07d5c47b6483963a27757..75b152dc0b52109cf0be208eb161fc749282f880 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright 2001,2003,2004,2005 Free Software Foundation, Inc.
+# Copyright 2001,2003,2004,2005,2006,2007,2008,2009 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
 
 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)
-
+AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS) -I$(srcdir) \
+        $(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         
-
-
-_gnuradio_swig_python_la_LIBADD  =                     \
-       $(GNURADIO_CORE_LA)                             \
-       $(PYTHON_LDFLAGS)                               \
-       -lstdc++
+# FIXME As of swig 1.3.31, this still seems to be required...
 
-_gnuradio_swig_python_la_LDFLAGS = -module -avoid-version $(NO_UNDEFINED)
+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 $@
 
-
-# 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.py gnuradio_swig_python.h: gnuradio_swig_python.cc
-
-gnuradio_swig_python.cc : gnuradio.i
-       if $(SWIG) $(SWIGPYTHONARGS) -MMD -MF gnuradio_swig_python.Td -module gnuradio_swig_python -o gnuradio_swig_python.cc gnuradio.i ;\
-       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
-       $(PYTHON) $(srcdir)/gen-swig-bug-fix gnuradio_swig_python.cc $@
-
-
-# ----------------------------------------------------------------
-
-# 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)