diff --git a/bfps/cpp/fftw_interface.hpp b/bfps/cpp/fftw_interface.hpp
index 00c71d27ddc973f7636dc48886ffc90460399b5d..7f5e014400c86ffe4caa594a67e1756c890c6503 100644
--- a/bfps/cpp/fftw_interface.hpp
+++ b/bfps/cpp/fftw_interface.hpp
@@ -35,7 +35,8 @@
 #endif
 
 // To have multiple calls to c2r/r2c
-#define SPLIT_FFTW_MANY
+// you must define SPLIT_FFTW_MANY
+// by calling setup.py --split-fftw-many
 #ifdef SPLIT_FFTW_MANY
 #include <vector>
 #include <memory>
diff --git a/setup.py b/setup.py
index b03bd4f4268cdaac9e16bdb3fe68384aae7958a3..7d7e6ff2890023a7508a0e15af81ed21ce3566a3 100644
--- a/setup.py
+++ b/setup.py
@@ -183,15 +183,18 @@ class CompileLibCommand(distutils.cmd.Command):
     user_options = [
             ('timing-output=', None, 'Toggle timing output.'),
             ('fftw-estimate=', None, 'Use FFTW ESTIMATE.'),
+            ('split-fftw-many=', None, 'Turn on SPLIT_FFTW_MANY.'),
             ('disable-fftw-omp=', None, 'Turn Off FFTW OpenMP.'),
             ]
     def initialize_options(self):
         self.timing_output = 0
         self.fftw_estimate = 0
         self.disable_fftw_omp = 0
+        self.split_fftw_many = 0
         return None
     def finalize_options(self):
         self.timing_output = (int(self.timing_output) == 1)
+        self.split_fftw_many = (int(self.split_fftw_many) == 1)
         self.fftw_estimate = (int(self.fftw_estimate) == 1)
         self.disable_fftw_omp = (int(self.disable_fftw_omp) == 1)
         return None
@@ -216,6 +219,8 @@ class CompileLibCommand(distutils.cmd.Command):
         eca += ['-fPIC']
         if self.timing_output:
             eca += ['-DUSE_TIMINGOUTPUT']
+        if self.split_fftw_many:
+            eca += ['-DSPLIT_FFTW_MANY']
         if self.fftw_estimate:
             eca += ['-DUSE_FFTWESTIMATE']
         if self.disable_fftw_omp: