First step in porting MacPython modules to OSX/unix: break all references between modules except for the obj_New() and obj_Convert() routines, the PyArg_Parse and Py_BuildValue helpers.

And these can now be vectored through glue routines (by defining USE_TOOLBOX_OBJECT_GLUE) which will do the necessary imports, whereupon the module's init routine will tell the glue routine about the real conversion routine address and everything is fine again.
diff --git a/Mac/Modules/drag/Dragmodule.c b/Mac/Modules/drag/Dragmodule.c
index fa6c2d9..3ce19b7 100644
--- a/Mac/Modules/drag/Dragmodule.c
+++ b/Mac/Modules/drag/Dragmodule.c
@@ -19,6 +19,14 @@
 DragDrawingUPP dragglue_DrawingUPP;
 #endif
 
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_DragObj_New(DragRef);
+extern int _DragObj_Convert(PyObject *, DragRef *);
+
+#define DragObj_New _DragObj_New
+#define DragObj_Convert _DragObj_Convert
+#endif
+
 static PyObject *Drag_Error;
 
 /* ---------------------- Object type DragObj ----------------------- */
@@ -1040,6 +1048,9 @@
 
 
 
+		PyMac_INIT_TOOLBOX_OBJECT_NEW(DragObj_New);
+		PyMac_INIT_TOOLBOX_OBJECT_CONVERT(DragObj_Convert);
+
 
 	m = Py_InitModule("Drag", Drag_methods);
 	d = PyModule_GetDict(m);
diff --git a/Mac/Modules/drag/dragsupport.py b/Mac/Modules/drag/dragsupport.py
index d90acc9..79bf00c 100644
--- a/Mac/Modules/drag/dragsupport.py
+++ b/Mac/Modules/drag/dragsupport.py
@@ -54,6 +54,14 @@
 DragInputUPP dragglue_InputUPP;
 DragDrawingUPP dragglue_DrawingUPP;
 #endif
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_DragObj_New(DragRef);
+extern int _DragObj_Convert(PyObject *, DragRef *);
+
+#define DragObj_New _DragObj_New
+#define DragObj_Convert _DragObj_Convert
+#endif
 """
 
 finalstuff = finalstuff + """
@@ -153,6 +161,11 @@
 
 """
 
+initstuff = initstuff + """
+	PyMac_INIT_TOOLBOX_OBJECT_NEW(DragObj_New);
+	PyMac_INIT_TOOLBOX_OBJECT_CONVERT(DragObj_Convert);
+"""
+
 variablestuff = """
 dragglue_TrackingHandlerUPP = NewDragTrackingHandlerProc(dragglue_TrackingHandler);
 dragglue_ReceiveHandlerUPP = NewDragReceiveHandlerProc(dragglue_ReceiveHandler);