From 887f86de49636cea9c8e87f99e9efb729a74dfc5 Mon Sep 17 00:00:00 2001
From: zooko <zooko@zooko.com>
Date: Mon, 8 Sep 2008 23:41:51 +0530
Subject: [PATCH] make the STRIDE settable at build-time with the "--stride="
 option to "./setup.py build"

darcs-hash:ea947aeba28a1e301c3c52b79e7bfefcab907971
---
 zfec/setup.py   | 12 +++++++++++-
 zfec/zfec/fec.c |  2 ++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/zfec/setup.py b/zfec/setup.py
index 391c19c..451786e 100755
--- a/zfec/setup.py
+++ b/zfec/setup.py
@@ -34,8 +34,18 @@ extra_link_args=[]
 
 extra_compile_args.append("-std=c99")
 
+define_macros=[]
 undef_macros=[]
 
+for arg in sys.argv:
+    if arg.startswith("--STRIDE="):
+        stride = int(arg[len("--stride="):])
+        define_macros.append(('STRIDE', stride))
+        break
+
+sys.argv.remove(arg)
+
+
 if DEBUGMODE:
     extra_compile_args.append("-O0")
     extra_compile_args.append("-g")
@@ -129,7 +139,7 @@ setup(name=PKG,
       setup_requires=setup_requires,
       classifiers=trove_classifiers,
       entry_points = { 'console_scripts': [ 'zfec = %s.cmdline_zfec:main' % PKG, 'zunfec = %s.cmdline_zunfec:main' % PKG ] },
-      ext_modules=[Extension(PKG+'._fec', [PKG+'/fec.c', PKG+'/_fecmodule.c',], extra_link_args=extra_link_args, extra_compile_args=extra_compile_args, undef_macros=undef_macros),],
+      ext_modules=[Extension(PKG+'._fec', [PKG+'/fec.c', PKG+'/_fecmodule.c',], extra_link_args=extra_link_args, extra_compile_args=extra_compile_args, undef_macros=undef_macros, define_macros=define_macros),],
       test_suite=PKG+".test",
       zip_safe=False, # I prefer unzipped for easier access.
       )
diff --git a/zfec/zfec/fec.c b/zfec/zfec/fec.c
index ba6e347..04a7132 100644
--- a/zfec/zfec/fec.c
+++ b/zfec/zfec/fec.c
@@ -458,7 +458,9 @@ fec_new(unsigned k, unsigned n) {
 
 /* To make sure that we stay within cache in the inner loops of fec_encode()
    and fec_decode(). */
+#ifndef STRIDE
 #define STRIDE 8192
+#endif
 
 void
 fec_encode(const fec_t* code, const gf*restrict const*restrict const src, gf*restrict const*restrict const fecs, const unsigned*restrict const block_nums, size_t num_block_nums, size_t sz) {
-- 
2.45.2