X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=gnuradio-core%2Fsrc%2Flib%2Fswig%2FMakefile.am;h=75b152dc0b52109cf0be208eb161fc749282f880;hb=ea29b08aeb54227e6628f655ccfdb96fe4d8c378;hp=f8d9297e69eb4e810ee07d5c47b6483963a27757;hpb=09a1e803a9e6587c78d20cdf16891e5295874668;p=debian%2Fgnuradio diff --git a/gnuradio-core/src/lib/swig/Makefile.am b/gnuradio-core/src/lib/swig/Makefile.am index f8d9297e..75b152dc 100644 --- a/gnuradio-core/src/lib/swig/Makefile.am +++ b/gnuradio-core/src/lib/swig/Makefile.am @@ -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 # @@ -21,94 +21,81 @@ 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.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)