2 # Copyright 2001,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
4 # This file is part of GNU Radio
6 # GNU Radio is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2, or (at your option)
11 # GNU Radio is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with GNU Radio; see the file COPYING. If not, write to
18 # the Free Software Foundation, Inc., 51 Franklin Street,
19 # Boston, MA 02110-1301, USA.
22 include $(top_srcdir)/Makefile.common
24 # Install this stuff in the gr subdirectory of the python pkg dir.
25 # This usually ends up at:
26 # ${prefix}/lib/python${python_version}/site-packages/gnuradio/gr
28 grgrpythondir = $(grpythondir)/gr
29 grgrlibdir = $(grpyexecdir)/gr
32 INCLUDES = $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS) -I$(srcdir)
35 EXTRA_DIST = gen-swig-bug-fix
53 # ----------------------------------------------------------------
54 # We've split the previously monstrous gnuradio_swig_python into
55 # 5 smaller pieces. This reduces compile time coupling and
56 # creates smaller pieces for the compiler to digest.
57 # prior to this change, on X86_64, g++'s resident set size was
61 gnuradio_swig_py_runtime.cc \
62 gnuradio_swig_py_runtime.py \
63 gnuradio_swig_py_runtime.h \
64 gnuradio_swig_py_general.cc \
65 gnuradio_swig_py_general.py \
66 gnuradio_swig_py_general.h \
67 gnuradio_swig_py_gengen.cc \
68 gnuradio_swig_py_gengen.py \
69 gnuradio_swig_py_gengen.h \
70 gnuradio_swig_py_filter.cc \
71 gnuradio_swig_py_filter.py \
72 gnuradio_swig_py_filter.h \
73 gnuradio_swig_py_io.cc \
74 gnuradio_swig_py_io.py \
75 gnuradio_swig_py_io.h \
76 gnuradio_swig_bug_workaround.h
79 SWIGPYTHONARGS = $(SWIGPYTHONFLAGS) $(INCLUDES)
81 # ----------------------------------------------------------------
82 # We break this up into 5 libraries...
84 grgrlib_LTLIBRARIES = \
85 _gnuradio_swig_py_runtime.la \
86 _gnuradio_swig_py_general.la \
87 _gnuradio_swig_py_gengen.la \
88 _gnuradio_swig_py_filter.la \
89 _gnuradio_swig_py_io.la
93 gnuradio_swig_python.py \
94 gnuradio_swig_py_runtime.py \
95 gnuradio_swig_py_general.py \
96 gnuradio_swig_py_gengen.py \
97 gnuradio_swig_py_filter.py \
98 gnuradio_swig_py_io.py
101 # This results in the code being compiled with -O1 instead of -g -O2
103 _gnuradio_swig_py_runtime_la_CXXFLAGS = @swig_CXXFLAGS@
104 _gnuradio_swig_py_general_la_CXXFLAGS = @swig_CXXFLAGS@
105 _gnuradio_swig_py_gengen_la_CXXFLAGS = @swig_CXXFLAGS@
106 _gnuradio_swig_py_filter_la_CXXFLAGS = @swig_CXXFLAGS@
107 _gnuradio_swig_py_io_la_CXXFLAGS = @swig_CXXFLAGS@
110 # ----------------------------------------------------------------
111 # Part 1: gnuradio.i -> gnuradio_swig_py_runtime
113 # We continue to call this gnuradio.i to avoid having to touch
114 # lots of code in other modules
116 _gnuradio_swig_py_runtime_la_SOURCES = \
117 gnuradio_swig_py_runtime.cc
120 _gnuradio_swig_py_runtime_la_LIBADD = \
121 $(top_builddir)/gnuradio-core/src/lib/libgnuradio-core.la \
125 _gnuradio_swig_py_runtime_la_LDFLAGS = -module -avoid-version $(NO_UNDEFINED)
128 # KLUDGE: Force runtime include of gnuradio_swig_py_runtime.d dependency file.
129 # This is not guaranteed to be portable, but will probably work.
130 # If it works, we have accurate dependencies for our swig stuff, which is good.
131 @am__include@ @am__quote@./gnuradio_swig_py_runtime.d@am__quote@
133 gnuradio_swig_py_runtime.py gnuradio_swig_py_runtime.h: gnuradio_swig_py_runtime.cc
135 gnuradio_swig_py_runtime.cc : gnuradio.i
136 if $(SWIG) $(SWIGPYTHONARGS) -MMD -MF gnuradio_swig_py_runtime.Td -module gnuradio_swig_py_runtime -o gnuradio_swig_py_runtime.cc gnuradio.i ;\
137 then if test $(host_os) = mingw32; \
138 then sed 's,\\\\,/,g' <gnuradio_swig_py_runtime.Td >gnuradio_swig_py_runtime.d; rm -f gnuradio_swig_py_runtime.Td; \
139 else mv -f gnuradio_swig_py_runtime.Td gnuradio_swig_py_runtime.d; fi \
140 else rm -f gnuradio_swig_py_runtime.Td; exit 1; fi
143 # ----------------------------------------------------------------
144 # Part 2: sw_general.i -> gnuradio_swig_py_general
147 _gnuradio_swig_py_general_la_SOURCES = \
148 gnuradio_swig_py_general.cc
151 _gnuradio_swig_py_general_la_LIBADD = \
152 $(top_builddir)/gnuradio-core/src/lib/libgnuradio-core.la \
156 _gnuradio_swig_py_general_la_LDFLAGS = -module -avoid-version $(NO_UNDEFINED)
159 # KLUDGE: Force general include of gnuradio_swig_py_general.d dependency file.
160 # This is not guaranteed to be portable, but will probably work.
161 # If it works, we have accurate dependencies for our swig stuff, which is good.
162 @am__include@ @am__quote@./gnuradio_swig_py_general.d@am__quote@
164 gnuradio_swig_py_general.py gnuradio_swig_py_general.h: gnuradio_swig_py_general.cc
166 gnuradio_swig_py_general.cc : sw_general.i
167 if $(SWIG) $(SWIGPYTHONARGS) -MMD -MF gnuradio_swig_py_general.Td -module gnuradio_swig_py_general -o gnuradio_swig_py_general.cc sw_general.i ;\
168 then if test $(host_os) = mingw32; \
169 then sed 's,\\\\,/,g' <gnuradio_swig_py_general.Td >gnuradio_swig_py_general.d; rm -f gnuradio_swig_py_general.Td; \
170 else mv -f gnuradio_swig_py_general.Td gnuradio_swig_py_general.d; fi \
171 else rm -f gnuradio_swig_py_general.Td; exit 1; fi
174 # ----------------------------------------------------------------
175 # Part 3: sw_gengen.i -> gnuradio_swig_py_gengen
178 _gnuradio_swig_py_gengen_la_SOURCES = \
179 gnuradio_swig_py_gengen.cc
182 _gnuradio_swig_py_gengen_la_LIBADD = \
183 $(top_builddir)/gnuradio-core/src/lib/libgnuradio-core.la \
187 _gnuradio_swig_py_gengen_la_LDFLAGS = -module -avoid-version $(NO_UNDEFINED)
190 # KLUDGE: Force gengen include of gnuradio_swig_py_gengen.d dependency file.
191 # This is not guaranteed to be portable, but will probably work.
192 # If it works, we have accurate dependencies for our swig stuff, which is good.
193 @am__include@ @am__quote@./gnuradio_swig_py_gengen.d@am__quote@
195 gnuradio_swig_py_gengen.py gnuradio_swig_py_gengen.h: gnuradio_swig_py_gengen.cc
197 gnuradio_swig_py_gengen.cc : sw_gengen.i
198 if $(SWIG) $(SWIGPYTHONARGS) -MMD -MF gnuradio_swig_py_gengen.Td -module gnuradio_swig_py_gengen -o gnuradio_swig_py_gengen.cc sw_gengen.i ;\
199 then if test $(host_os) = mingw32; \
200 then sed 's,\\\\,/,g' <gnuradio_swig_py_gengen.Td >gnuradio_swig_py_gengen.d; rm -f gnuradio_swig_py_gengen.Td; \
201 else mv -f gnuradio_swig_py_gengen.Td gnuradio_swig_py_gengen.d; fi \
202 else rm -f gnuradio_swig_py_gengen.Td; exit 1; fi
205 # ----------------------------------------------------------------
206 # Part 4: sw_filter.i -> gnuradio_swig_py_filter
209 _gnuradio_swig_py_filter_la_SOURCES = \
210 gnuradio_swig_py_filter.cc
213 _gnuradio_swig_py_filter_la_LIBADD = \
214 $(top_builddir)/gnuradio-core/src/lib/libgnuradio-core.la \
218 _gnuradio_swig_py_filter_la_LDFLAGS = -module -avoid-version $(NO_UNDEFINED)
221 # KLUDGE: Force filter include of gnuradio_swig_py_filter.d dependency file.
222 # This is not guaranteed to be portable, but will probably work.
223 # If it works, we have accurate dependencies for our swig stuff, which is good.
224 @am__include@ @am__quote@./gnuradio_swig_py_filter.d@am__quote@
226 gnuradio_swig_py_filter.py gnuradio_swig_py_filter.h: gnuradio_swig_py_filter.cc
228 gnuradio_swig_py_filter.cc : sw_filter.i
229 if $(SWIG) $(SWIGPYTHONARGS) -MMD -MF gnuradio_swig_py_filter.Td -module gnuradio_swig_py_filter -o gnuradio_swig_py_filter.cc sw_filter.i ;\
230 then if test $(host_os) = mingw32; \
231 then sed 's,\\\\,/,g' <gnuradio_swig_py_filter.Td >gnuradio_swig_py_filter.d; rm -f gnuradio_swig_py_filter.Td; \
232 else mv -f gnuradio_swig_py_filter.Td gnuradio_swig_py_filter.d; fi \
233 else rm -f gnuradio_swig_py_filter.Td; exit 1; fi
236 # ----------------------------------------------------------------
237 # Part 5: sw_io.i -> gnuradio_swig_py_io
240 _gnuradio_swig_py_io_la_SOURCES = \
241 gnuradio_swig_py_io.cc
244 _gnuradio_swig_py_io_la_LIBADD = \
245 $(top_builddir)/gnuradio-core/src/lib/libgnuradio-core.la \
249 _gnuradio_swig_py_io_la_LDFLAGS = -module -avoid-version $(NO_UNDEFINED)
252 # KLUDGE: Force io include of gnuradio_swig_py_io.d dependency file.
253 # This is not guaranteed to be portable, but will probably work.
254 # If it works, we have accurate dependencies for our swig stuff, which is good.
255 @am__include@ @am__quote@./gnuradio_swig_py_io.d@am__quote@
257 gnuradio_swig_py_io.py gnuradio_swig_py_io.h: gnuradio_swig_py_io.cc
259 gnuradio_swig_py_io.cc : sw_io.i
260 if $(SWIG) $(SWIGPYTHONARGS) -MMD -MF gnuradio_swig_py_io.Td -module gnuradio_swig_py_io -o gnuradio_swig_py_io.cc sw_io.i ;\
261 then if test $(host_os) = mingw32; \
262 then sed 's,\\\\,/,g' <gnuradio_swig_py_io.Td >gnuradio_swig_py_io.d; rm -f gnuradio_swig_py_io.Td; \
263 else mv -f gnuradio_swig_py_io.Td gnuradio_swig_py_io.d; fi \
264 else rm -f gnuradio_swig_py_io.Td; exit 1; fi
267 # ----------------------------------------------------------------
268 # FIXME As of swig 1.3.31, this still seems to be required...
270 gnuradio_swig_bug_workaround.h : gnuradio_swig_py_runtime.cc $(srcdir)/gen-swig-bug-fix
271 $(srcdir)/gen-swig-bug-fix gnuradio_swig_py_runtime.cc $@
273 # ----------------------------------------------------------------
275 # Don't distribute output of swig
277 @for file in $(BUILT_SOURCES); do echo $(RM) $(distdir)/$$file; done
278 @for file in $(BUILT_SOURCES); do $(RM) $(distdir)/$$file; done
281 grinclude_HEADERS = \
282 gnuradio_swig_bug_workaround.h
284 swiginclude_HEADERS = \
288 $(BUILT_SOURCES) *~ *.pyc
291 gnuradio_swig_py_runtime.d \
292 gnuradio_swig_py_general.d \
293 gnuradio_swig_py_gengen.d \
294 gnuradio_swig_py_filter.d \
295 gnuradio_swig_py_io.d