Bug #794140: cygwin builds do not embed

The embed2.diff patch solves the user's problem by exporting the missing
symbols from the Python core so Python can be embedded in another Cygwin
application (well, at lest vim).
diff --git a/Include/pyport.h b/Include/pyport.h
index 06ce6ab..8747271 100644
--- a/Include/pyport.h
+++ b/Include/pyport.h
@@ -428,7 +428,12 @@
 #			define PyAPI_FUNC(RTYPE) __declspec(dllexport) RTYPE
 #			define PyAPI_DATA(RTYPE) extern __declspec(dllexport) RTYPE
 			/* module init functions inside the core need no external linkage */
-#			define PyMODINIT_FUNC void
+			/* except for Cygwin to handle embedding (FIXME: BeOS too?) */
+#			if defined(__CYGWIN__)
+#				define PyMODINIT_FUNC __declspec(dllexport) void
+#			else /* __CYGWIN__ */
+#				define PyMODINIT_FUNC void
+#			endif /* __CYGWIN__ */
 #		else /* Py_BUILD_CORE */
 			/* Building an extension module, or an embedded situation */
 			/* public Python functions and data are imported */
diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c
index bb40b8f..6442fe5 100644
--- a/Modules/gcmodule.c
+++ b/Modules/gcmodule.c
@@ -951,7 +951,7 @@
 	{NULL,	NULL}		/* Sentinel */
 };
 
-void
+PyMODINIT_FUNC
 initgc(void)
 {
 	PyObject *m;
diff --git a/Python/import.c b/Python/import.c
index 858f9e5..abe3a19 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -2841,7 +2841,7 @@
 	return err;
 }
 
-void
+PyMODINIT_FUNC
 initimp(void)
 {
 	PyObject *m, *d;
diff --git a/Python/marshal.c b/Python/marshal.c
index 5aaa382..0bb7b4f 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -875,7 +875,7 @@
 	{NULL,		NULL}		/* sentinel */
 };
 
-void
+PyMODINIT_FUNC
 PyMarshal_Init(void)
 {
 	(void) Py_InitModule("marshal", marshal_methods);