zfec: conditionally-compile the right magic to use alloca() with gcc -mno-cygwin
authorzooko <zooko@zooko.com>
Tue, 13 Nov 2007 20:13:52 +0000 (01:43 +0530)
committerzooko <zooko@zooko.com>
Tue, 13 Nov 2007 20:13:52 +0000 (01:43 +0530)
darcs-hash:d1c2597ea94772afcbb81c50ab7ff8efd0eacd6e

zfec/TODO
zfec/zfec/_fecmodule.c
zfec/zfec/fec.c
zfec/zfec/fec.h

index 28d0cf1a22ee5b3cdb019c82bda5116d5f8e19fe..bad195140273f1ba34d9eaf18444940a60c78919 100644 (file)
--- a/zfec/TODO
+++ b/zfec/TODO
@@ -8,6 +8,7 @@
  * Jerasure
   ** try multiplication without a lookup table? (to save cache pressure)
  * conditional compilation to handle a printf that doesn't understand %Zu
+ * try malloc() instead of alloca() (more portable, possibly better for keeping stacks aligned)
 
  * announce on lwn, p2p-hackers
  
index 13da1c9aa029a81363087accd7bf84af587d5baa..abe21ec15e08d55dd5b37c60f28186605a02283e 100644 (file)
@@ -13,6 +13,22 @@ typedef int Py_ssize_t;
 
 #include "stdarg.h"
 
+#if defined(_MSC_VER)
+// actually, some of the flavors (i.e. Enterprise) do support restrict
+//#define restrict __restrict
+#define restrict
+#define inline __inline
+#define alloca _alloca
+#else
+#ifdef __GNUC__
+#define alloca(x) __builtin_alloca(x)
+#else
+#include <alloca.h>
+#endif
+#endif
+
+
+
 static PyObject *py_fec_error;
 
 static char fec__doc__[] = "\
index 62f908f21c8fda31f926714baae39f3e5e4a8792..761e04555d18066126c7315f3a472089d7c98111 100644 (file)
@@ -2,13 +2,26 @@
  * zfec -- fast forward error correction library with Python interface
  */
 
+#include "fec.h"
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <assert.h>
-#include <alloca.h>
 
-#include "fec.h"
+#if defined(_MSC_VER)
+// actually, some of the flavors (i.e. Enterprise) do support it
+//#define restrict __restrict
+#define restrict
+#define inline __inline
+#define alloca _alloca
+#else
+#ifdef __GNUC__
+#define alloca(x) __builtin_alloca(x)
+#else
+#include <alloca.h>
+#endif
+#endif
 
 
 /*
index 3931017e6f38fc6de467f99aa6437cd79e0877bb..2a7981aee6074339a236911d92951b5e8bb735a9 100644 (file)
@@ -2,13 +2,7 @@
  * zfec -- fast forward error correction library with Python interface
  */
 
-#if defined(_MSC_VER)
-// actually, some of the flavors (i.e. Enterprise) do support it
-//#define restrict __restrict
-#define restrict
-#define inline __inline
-#define alloca _alloca
-#endif
+#include <stddef.h>
 
 typedef unsigned char gf;