Imported Upstream version 3.2.2
[debian/gnuradio] / gr-trellis / src / lib / Makefile.am
index 0cae1b0b4e139aac23c399f050a05194892ea9cb..2e7591e4b9bc76e87136ea009e1d0033f81e3ffd 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright 2004,2005,2006 Free Software Foundation, Inc.
+# Copyright 2004,2005,2006,2007,2008,2009 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
 
 include $(top_srcdir)/Makefile.common
 
-include Makefile.gen
-
-# Install this stuff so that it ends up as the gnuradio.trellis module
-# This usually ends up at:
-#   ${prefix}/lib/python${python_version}/site-packages/gnuradio
-
-ourpythondir = $(grpythondir)
-ourlibdir    = $(grpyexecdir)
-
-INCLUDES = $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS)
-
-SWIGPYTHONARGS = $(SWIGPYTHONFLAGS) $(STD_DEFINES_AND_INCLUDES)
-
-ALL_IFILES =                           \
-       $(LOCAL_IFILES)                 \
-       $(NON_LOCAL_IFILES)             
-
-NON_LOCAL_IFILES =                     \
-       $(GNURADIO_I)                   
-
-
-LOCAL_IFILES =                                 \
-       $(top_srcdir)/gr-trellis/src/lib/trellis.i                      
+AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS) $(WITH_INCLUDES)
+
+# ----------------------------------------------------------------
+# these scripts generate trellis codes from template files
+
+core_generator =                               \
+       generate_all.py                         \
+       generate_trellis.py                     \
+       trellis_encoder_XX.cc.t                 \
+       trellis_encoder_XX.h.t                  \
+       trellis_encoder_XX.i.t                  \
+       trellis_metrics_X.cc.t                  \
+       trellis_metrics_X.h.t                   \
+       trellis_metrics_X.i.t                   \
+       trellis_viterbi_combined_XX.cc.t        \
+       trellis_viterbi_combined_XX.h.t         \
+       trellis_viterbi_combined_XX.i.t         \
+       trellis_viterbi_X.cc.t                  \
+       trellis_viterbi_X.h.t                   \
+       trellis_viterbi_X.i.t
+
+# Source built by Python into $(builddir)
+python_built_sources =         \
+       $(GENERATED_H)          \
+       $(GENERATED_I)          \
+       $(GENERATED_CC)         \
+       trellis_generated.i
 
+EXTRA_DIST =                   \
+       $(core_generator)
 
-# These files are built by SWIG.  The first is the C++ glue.
-# The second is the python wrapper that loads the _trellis shared library
-# and knows how to call our extensions.
+# These headers get installed in ${prefix}/include/gnuradio
+grinclude_HEADERS =                    \
+        fsm.h                          \
+        quicksort_index.h              \
+        base.h                         \
+        interleaver.h                  \
+        trellis_metric_type.h          \
+        trellis_calc_metric.h          \
+        trellis_permutation.h          \
+        trellis_siso_type.h            \
+       trellis_siso_f.h                \
+       trellis_siso_combined_f.h       \
+       $(GENERATED_H)
 
-BUILT_SOURCES =                        \
-       trellis.cc                      \
-       trellis.py                              
+#################################
+# SWIG interface and library
 
-# This gets trellis.py installed in the right place
-ourpython_PYTHON =                     \
-       trellis.py
+TOP_SWIG_IFILES =                      \
+       trellis.i
 
-ourlib_LTLIBRARIES = _trellis.la
+# Install so that they end up available as:
+#   import gnuradio.trellis
+# This ends up at:
+#   ${prefix}/lib/python${python_version}/site-packages/gnuradio
+trellis_pythondir_category =           \
+       gnuradio
 
-# These are the source files that go into the shared library
-_trellis_la_SOURCES =                  \
-       trellis.cc                      \
+# additional sources for the SWIG-generated library
+trellis_la_swig_sources =              \
         fsm.cc                         \
         quicksort_index.cc             \
         base.cc                                \
@@ -71,39 +89,14 @@ _trellis_la_SOURCES =                       \
         trellis_permutation.cc         \
        trellis_siso_f.cc               \
        trellis_siso_combined_f.cc      \
-       $(GENERATED_CC)                 
-
-# magic flags
-_trellis_la_LDFLAGS = $(NO_UNDEFINED) -module -avoid-version
-
-# link the library against some comon swig runtime code and the 
-# c++ standard library
-_trellis_la_LIBADD =                   \
-       $(PYTHON_LDFLAGS)               \
-       $(GNURADIO_CORE_LA)             \
-       -lstdc++                        
-
-trellis.cc trellis.py: $(ALL_IFILES) $(grinclude_HEADERS)
-       $(SWIG) $(SWIGPYTHONARGS) -module trellis -o trellis.cc $(LOCAL_IFILES)
-
-# These headers get installed in ${prefix}/include/gnuradio
-grinclude_HEADERS =                    \
-        fsm.h                          \
-        quicksort_index.h              \
-        base.h                         \
-        interleaver.h                  \
-        trellis_metric_type.h          \
-        trellis_calc_metric.h          \
-        trellis_permutation.h          \
-        trellis_siso_type.h            \
-       trellis_siso_f.h                \
-       trellis_siso_combined_f.h               \
-       $(GENERATED_H)                  
+       $(GENERATED_CC)
 
+# additional libraries for linking with the SWIG-generated library
+trellis_la_swig_libadd =               \
+       $(GNURADIO_CORE_LA)
 
-# These swig headers get installed in ${prefix}/include/gnuradio/swig
-swiginclude_HEADERS =                  \
-       $(LOCAL_IFILES)                 \
+# additional SWIG files to be installed
+trellis_swiginclude_headers =          \
        $(GENERATED_I)                  \
        fsm.i                           \
        interleaver.i                   \
@@ -112,11 +105,29 @@ swiginclude_HEADERS =                     \
        trellis_siso_combined_f.i       \
        trellis_generated.i
 
+# Do creation and inclusion of other Makefiles last
+
+# include the srcdir's Makefile.gen; doing this creates an implicit
+# dependency between $(srcdir)/Makefile.in and $(srcdir)/Makefile.gen.
+include $(srcdir)/Makefile.gen
+
+# common way for generating local Makefile.gen
+makefile_gen_gen_command = PYTHONPATH=$(top_srcdir)/gnuradio-core/src/python srcdir=$(srcdir) do_makefile=1 do_sources=0 $(PYTHON) $(srcdir)/generate_all.py
+include $(top_srcdir)/Makefile.gen.gen
+
+# common way for generating sources from templates when using
+# BUILT_SOURCES, using parallel build protection.
+gen_sources = $(python_built_sources)
+gen_sources_deps = $(core_generator)
+par_gen_command = PYTHONPATH=$(top_srcdir)/gnuradio-core/src/python srcdir=$(srcdir) $(PYTHON) $(srcdir)/generate_all.py
+include $(top_srcdir)/Makefile.par.gen
 
+include $(top_srcdir)/Makefile.swig
 
-MOSTLYCLEANFILES = $(BUILT_SOURCES) *.pyc
+# add some of the variables generated inside the Makefile.swig.gen
+BUILT_SOURCES =                                \
+       $(python_built_sources)         \
+       $(swig_built_sources)
 
-# 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
+# Do not distribute the output of SWIG
+no_dist_files = $(swig_built_sources)