From f02ebe37031fc8f21f15a62dee2b81f111de15e8 Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Thu, 4 Apr 2013 23:33:45 -0400
Subject: blocks: split blocks swig into 3 files to be swigged individually.

Cuts down on memory footprint of swig. Using blocks_swig.py.in to pull them all in to one file afterwards.
---
 gr-blocks/swig/CMakeLists.txt | 44 +++++++++++++++++++++++++++++++++++--------
 1 file changed, 36 insertions(+), 8 deletions(-)

(limited to 'gr-blocks/swig/CMakeLists.txt')

diff --git a/gr-blocks/swig/CMakeLists.txt b/gr-blocks/swig/CMakeLists.txt
index 84ab5b660f..64fca9fe3c 100644
--- a/gr-blocks/swig/CMakeLists.txt
+++ b/gr-blocks/swig/CMakeLists.txt
@@ -31,23 +31,51 @@ set(GR_SWIG_INCLUDE_DIRS
     ${Boost_INCLUDE_DIRS}
 )
 
-set(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/blocks_swig_doc.i)
+configure_file(
+    ${CMAKE_CURRENT_SOURCE_DIR}/blocks_swig.py.in
+    ${CMAKE_CURRENT_BINARY_DIR}/blocks_swig.py
+@ONLY)
+
 set(GR_SWIG_DOC_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../lib)
 set(GR_SWIG_TARGET_DEPS blocks_generated_includes)
 set(GR_SWIG_LIBRARIES gnuradio-blocks)
 
-GR_SWIG_MAKE(blocks_swig blocks_swig.i)
+# We split up the swig files into multiple sections to minimize the
+# memory overhead. If a .i file grows too large, create a new file
+# named 'blocks_swigN.i' and add it to this list.
+#
+# Also add the line "from swig_blocksN import *" line to
+# blocks_swig.py.in.
+set(GR_SWIG_BLOCK_IFILES
+  blocks_swig0
+  blocks_swig1
+  blocks_swig2
+)
+
+foreach(swigfile ${GR_SWIG_BLOCK_IFILES})
+  set(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/${swigfile}_doc.i)
+  GR_SWIG_MAKE(${swigfile} ${swigfile}.i)
 
-GR_SWIG_INSTALL(
-    TARGETS blocks_swig
+  GR_SWIG_INSTALL(
+    TARGETS ${swigfile}
     DESTINATION ${GR_PYTHON_DIR}/gnuradio/blocks
-    COMPONENT "blocks_python"
-)
+    COMPONENT "blocks_python")
+
+  list(APPEND SWIGFILES ${swigfile}.i)
+  list(APPEND SWIGDOCFILES ${CMAKE_CURRENT_BINARY_DIR}/${swigfile}_doc.i)
+endforeach(swigfile)
 
 install(
     FILES
-    blocks_swig.i
-    ${CMAKE_CURRENT_BINARY_DIR}/blocks_swig_doc.i
+    ${SWIGFILES}
+    ${SWIGDOCFILES}
     DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
     COMPONENT "blocks_swig"
 )
+
+# Install the Python file that pulls in the swig built files.
+GR_PYTHON_INSTALL(
+    FILES ${CMAKE_CURRENT_BINARY_DIR}/blocks_swig.py
+    DESTINATION ${GR_PYTHON_DIR}/gnuradio/blocks
+    COMPONENT "blocks_python"
+)
-- 
cgit v1.2.3