- FreeBSD provides alloca() via stdlib.h, in contrast to Linux and Windows
- Move the includes for alloca() intp mpconfigport.h
diff --git a/py/builtinimport.c b/py/builtinimport.c
index 795d9fd..44ba4d5 100644
--- a/py/builtinimport.c
+++ b/py/builtinimport.c
@@ -29,7 +29,6 @@
#include <stdio.h>
#include <string.h>
#include <assert.h>
-#include <alloca.h>
#include "mpconfig.h"
#include "nlr.h"
diff --git a/py/objfun.c b/py/objfun.c
index 77d5782..5c085f8 100644
--- a/py/objfun.c
+++ b/py/objfun.c
@@ -28,7 +28,6 @@
#include <stdbool.h>
#include <string.h>
#include <assert.h>
-#include <alloca.h>
#include "mpconfig.h"
#include "nlr.h"
diff --git a/py/runtime.c b/py/runtime.c
index cdbf99d..b1fd194 100644
--- a/py/runtime.c
+++ b/py/runtime.c
@@ -27,7 +27,6 @@
#include <stdio.h>
#include <string.h>
#include <assert.h>
-#include <alloca.h>
#include "mpconfig.h"
#include "nlr.h"
diff --git a/py/vm.c b/py/vm.c
index d57fbf1..b24c85a 100644
--- a/py/vm.c
+++ b/py/vm.c
@@ -28,7 +28,6 @@
#include <stdio.h>
#include <string.h>
#include <assert.h>
-#include <alloca.h>
#include "mpconfig.h"
#include "nlr.h"
diff --git a/unix/modsocket.c b/unix/modsocket.c
index d6f7323..b1a34a3 100644
--- a/unix/modsocket.c
+++ b/unix/modsocket.c
@@ -37,7 +37,6 @@
#include <arpa/inet.h>
#include <netdb.h>
#include <errno.h>
-#include <alloca.h>
#include "mpconfig.h"
#include "nlr.h"
diff --git a/unix/mpconfigport.h b/unix/mpconfigport.h
index ace7a41..fe68b99 100644
--- a/unix/mpconfigport.h
+++ b/unix/mpconfigport.h
@@ -98,3 +98,11 @@
#define MICROPY_PORT_BUILTINS \
{ MP_OBJ_NEW_QSTR(MP_QSTR_input), (mp_obj_t)&mp_builtin_input_obj }, \
{ MP_OBJ_NEW_QSTR(MP_QSTR_open), (mp_obj_t)&mp_builtin_open_obj },
+
+
+/* We need the correct header for alloca() */
+#ifdef __FreeBSD__
+#include <stdlib.h>
+#else
+#include <alloca.h>
+#endif
diff --git a/windows/mpconfigport.h b/windows/mpconfigport.h
index 94304e2..831a218 100644
--- a/windows/mpconfigport.h
+++ b/windows/mpconfigport.h
@@ -114,7 +114,7 @@
#include <stddef.h> //for NULL
#include <assert.h> //for assert
-
+#include <alloca.h> //for alloca()
// Functions implemented in platform code