Fix 32-bit builds on macOS Sierra 10.12 broken by removal of deprecated
QuickTime/QuickTime.h header file

[Python Issue #27806] -- http://bugs.python.org/issue27806

Originally fixed in 2.7 by "sashk" <b@compuix.com>:
- https://hg.python.org/cpython/rev/4030300fcb18

Adapted for 2.6.

Signed-off-by: Lawrence Velázquez <larryv@macports.org>
Index: Include/pymactoolbox.h
===================================================================
--- Include/pymactoolbox.h.orig
+++ Include/pymactoolbox.h
@@ -9,9 +9,24 @@
 
 #include <Carbon/Carbon.h>
 
-#ifndef __LP64__
+/*
+** Issue #27806: Workaround for gcc 4.x which does not have _has_include.
+*/
+#ifndef __has_include
+#define __has_include(x) 0
+#endif
+/* Workaround */
+
+#if __has_include(<Availability.h>)
+#include <Availability.h>
+#define APPLE_SUPPORTS_QUICKTIME (__MAC_OS_X_VERSION_MAX_ALLOWED < 101200) && !__LP64__
+#else
+#define APPLE_SUPPORTS_QUICKTIME !__LP64__
+#endif
+
+#if APPLE_SUPPORTS_QUICKTIME
 #include <QuickTime/QuickTime.h>
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 /*
 ** Helper routines for error codes and such.
@@ -21,10 +36,10 @@ extern PyObject *PyMac_OSErrException;		
 PyObject *PyMac_GetOSErrException(void);	/* Initialize & return it */
 PyObject *PyErr_Mac(PyObject *, int);		/* Exception with a mac error */
 PyObject *PyMac_Error(OSErr);			/* Uses PyMac_GetOSErrException */
-#ifndef __LP64__ 
+#if APPLE_SUPPORTS_QUICKTIME
 extern OSErr PyMac_GetFullPathname(FSSpec *, char *, int); /* convert
 							      fsspec->path */
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 /*
 ** These conversion routines are defined in mactoolboxglue.c itself.
@@ -109,54 +124,54 @@ extern PyObject *CmpInstObj_New(Componen
 extern int CmpInstObj_Convert(PyObject *, ComponentInstance *);
 
 /* Ctl exports */
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 extern PyObject *CtlObj_New(ControlHandle);
 extern int CtlObj_Convert(PyObject *, ControlHandle *);
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 /* Dlg exports */
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 extern PyObject *DlgObj_New(DialogPtr);
 extern int DlgObj_Convert(PyObject *, DialogPtr *);
 extern PyObject *DlgObj_WhichDialog(DialogPtr);
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 /* Drag exports */
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 extern PyObject *DragObj_New(DragReference);
 extern int DragObj_Convert(PyObject *, DragReference *);
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 /* List exports */
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 extern PyObject *ListObj_New(ListHandle);
 extern int ListObj_Convert(PyObject *, ListHandle *);
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 /* Menu exports */
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 extern PyObject *MenuObj_New(MenuHandle);
 extern int MenuObj_Convert(PyObject *, MenuHandle *);
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 /* Qd exports */
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 extern PyObject *GrafObj_New(GrafPtr);
 extern int GrafObj_Convert(PyObject *, GrafPtr *);
 extern PyObject *BMObj_New(BitMapPtr);
 extern int BMObj_Convert(PyObject *, BitMapPtr *);
 extern PyObject *QdRGB_New(RGBColor *);
 extern int QdRGB_Convert(PyObject *, RGBColor *);
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 /* Qdoffs exports */
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 extern PyObject *GWorldObj_New(GWorldPtr);
 extern int GWorldObj_Convert(PyObject *, GWorldPtr *);
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 /* Qt exports */
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 extern PyObject *TrackObj_New(Track);
 extern int TrackObj_Convert(PyObject *, Track *);
 extern PyObject *MovieObj_New(Movie);
@@ -169,7 +184,7 @@ extern PyObject *UserDataObj_New(UserDat
 extern int UserDataObj_Convert(PyObject *, UserData *);
 extern PyObject *MediaObj_New(Media);
 extern int MediaObj_Convert(PyObject *, Media *);
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 /* Res exports */
 extern PyObject *ResObj_New(Handle);
@@ -178,17 +193,17 @@ extern PyObject *OptResObj_New(Handle);
 extern int OptResObj_Convert(PyObject *, Handle *);
 
 /* TE exports */
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 extern PyObject *TEObj_New(TEHandle);
 extern int TEObj_Convert(PyObject *, TEHandle *);
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 /* Win exports */
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 extern PyObject *WinObj_New(WindowPtr);
 extern int WinObj_Convert(PyObject *, WindowPtr *);
 extern PyObject *WinObj_WhichWindow(WindowPtr);
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 /* CF exports */
 extern PyObject *CFObj_New(CFTypeRef);
Index: Mac/Modules/ColorPickermodule.c
===================================================================
--- Mac/Modules/ColorPickermodule.c.orig
+++ Mac/Modules/ColorPickermodule.c
@@ -28,7 +28,7 @@ PERFORMANCE OF THIS SOFTWARE.
 /* ----------------------------------------------------- */
 
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 
 static char cp_GetColor__doc__[] =
 "GetColor(prompt, (r, g, b)) -> (r, g, b), ok"
@@ -49,14 +49,14 @@ cp_GetColor(PyObject *self, PyObject *ar
 
     return Py_BuildValue("O&h", QdRGB_New, &outColor, ok);
 }
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 /* List of methods defined in the module */
 
 static struct PyMethodDef cp_methods[] = {
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     {"GetColor",        (PyCFunction)cp_GetColor,       METH_VARARGS,   cp_GetColor__doc__},
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
     {NULL,                      (PyCFunction)NULL,                      0,                              NULL}           /* sentinel */
 };
 
@@ -87,4 +87,3 @@ void initColorPicker(void)
     if (PyErr_Occurred())
         Py_FatalError("can't initialize module ColorPicker");
 }
-
Index: Mac/Modules/MacOS.c
===================================================================
--- Mac/Modules/MacOS.c.orig
+++ Mac/Modules/MacOS.c
@@ -296,7 +296,7 @@ MacOS_GetCreatorAndType(PyObject *self, 
     FileInfo* finfo;
 
     if (!PyArg_ParseTuple(args, "O&", PyMac_GetFSRef, &ref)) {
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
         /* This function is documented to take an FSSpec as well,
          * which only works in 32-bit mode.
          */
@@ -317,9 +317,9 @@ MacOS_GetCreatorAndType(PyObject *self, 
         Py_DECREF(creator);
         Py_DECREF(type);
         return res;
-#else   /* __LP64__ */
+#else   /* APPLE_SUPPORTS_QUICKTIME */
         return NULL;
-#endif  /* __LP64__ */
+#endif  /* APPLE_SUPPORTS_QUICKTIME */
     }
 
     err = FSGetCatalogInfo(&ref,
@@ -363,7 +363,7 @@ MacOS_SetCreatorAndType(PyObject *self, 
 
     if (!PyArg_ParseTuple(args, "O&O&O&",
                     PyMac_GetFSRef, &ref, PyMac_GetOSType, &creator, PyMac_GetOSType, &type)) {
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
         /* Try to handle FSSpec arguments, for backward compatibility */
         FSSpec fss;
         FInfo info;
@@ -382,9 +382,9 @@ MacOS_SetCreatorAndType(PyObject *self, 
             return PyErr_Mac(MacOS_Error, err);
         Py_INCREF(Py_None);
         return Py_None;
-#else /* __LP64__ */
+#else /* APPLE_SUPPORTS_QUICKTIME */
         return NULL;
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
     }
 
     err = FSGetCatalogInfo(&ref,
Index: Mac/Modules/OSATerminology.c
===================================================================
--- Mac/Modules/OSATerminology.c.orig
+++ Mac/Modules/OSATerminology.c
@@ -11,7 +11,7 @@
 
 #include <Carbon/Carbon.h>
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 static PyObject *
 PyOSA_GetAppTerminology(PyObject* self, PyObject* args)
 {
@@ -69,14 +69,14 @@ PyOSA_GetSysTerminology(PyObject* self, 
     if (err) return PyMac_Error(err);
     return Py_BuildValue("O&i", AEDesc_New, &theDesc, didLaunch);
 }
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 /*
  * List of methods defined in the module
  */
 static struct PyMethodDef OSATerminology_methods[] =
 {
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     {"GetAppTerminology",
         (PyCFunction) PyOSA_GetAppTerminology,
         METH_VARARGS,
@@ -85,7 +85,7 @@ static struct PyMethodDef OSATerminology
         (PyCFunction) PyOSA_GetSysTerminology,
         METH_VARARGS,
         "Get an applications system terminology, as an AEDesc object."},
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
     {NULL, (PyCFunction) NULL, 0, NULL}
 };
 
Index: Mac/Modules/app/_Appmodule.c
===================================================================
--- Mac/Modules/app/_Appmodule.c.orig
+++ Mac/Modules/app/_Appmodule.c
@@ -2,13 +2,11 @@
 /* ========================== Module _App =========================== */
 
 #include "Python.h"
+#include "pymactoolbox.h"
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     /* Carbon GUI stuff, not available in 64-bit mode */
 
-
-#include "pymactoolbox.h"
-
 /* Macro to test whether a weak-loaded CFM function exists */
 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
     PyErr_SetString(PyExc_NotImplementedError, \
@@ -1806,13 +1804,13 @@ static PyMethodDef App_methods[] = {
 void init_App(void)
 {
     PyObject *m;
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     PyObject *d;
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 
     m = Py_InitModule("_App", App_methods);
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     d = PyModule_GetDict(m);
     App_Error = PyMac_GetOSErrException();
     if (App_Error == NULL ||
@@ -1825,7 +1823,7 @@ void init_App(void)
     /* Backward-compatible name */
     Py_INCREF(&ThemeDrawingState_Type);
     PyModule_AddObject(m, "ThemeDrawingStateType", (PyObject *)&ThemeDrawingState_Type);
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 }
 
 /* ======================== End module _App ========================= */
Index: Mac/Modules/carbonevt/_CarbonEvtmodule.c
===================================================================
--- Mac/Modules/carbonevt/_CarbonEvtmodule.c.orig
+++ Mac/Modules/carbonevt/_CarbonEvtmodule.c
@@ -2,10 +2,10 @@
 /* ======================= Module _CarbonEvt ======================== */
 
 #include "Python.h"
+#include "pymactoolbox.h"
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 
-#include "pymactoolbox.h"
 
 /* Macro to test whether a weak-loaded CFM function exists */
 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
@@ -2141,27 +2141,27 @@ static PyMethodDef CarbonEvents_methods[
     {NULL, NULL, 0}
 };
 
-#else /* __LP64__ */
+#else /* APPLE_SUPPORTS_QUICKTIME */
 
 static PyMethodDef CarbonEvents_methods[] = {
     {NULL, NULL, 0}
 };
 
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 
 
 void init_CarbonEvt(void)
 {
     PyObject *m;
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     PyObject *d;
-#endif /* !__LP64__ */
+#endif /* !APPLE_SUPPORTS_QUICKTIME */
 
 
     m = Py_InitModule("_CarbonEvt", CarbonEvents_methods);
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     myEventHandlerUPP = NewEventHandlerUPP(myEventHandler);
     d = PyModule_GetDict(m);
     CarbonEvents_Error = PyMac_GetOSErrException();
@@ -2224,7 +2224,7 @@ void init_CarbonEvt(void)
     /* Backward-compatible name */
     Py_INCREF(&EventHotKeyRef_Type);
     PyModule_AddObject(m, "EventHotKeyRefType", (PyObject *)&EventHotKeyRef_Type);
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 }
 
 /* ===================== End module _CarbonEvt ====================== */
Index: Mac/Modules/ctl/_Ctlmodule.c
===================================================================
--- Mac/Modules/ctl/_Ctlmodule.c.orig
+++ Mac/Modules/ctl/_Ctlmodule.c
@@ -2,11 +2,11 @@
 /* ========================== Module _Ctl =========================== */
 
 #include "Python.h"
+#include "pymactoolbox.h"
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 
 
-#include "pymactoolbox.h"
 
 /* Macro to test whether a weak-loaded CFM function exists */
 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
@@ -5766,19 +5766,19 @@ mytrackingproc(ControlHandle control, Po
     return (ControlPartCode)c_rv;
 }
 
-#else /* __LP64__ */
+#else /* APPLE_SUPPORTS_QUICKTIME */
 
 static PyMethodDef Ctl_methods[] = {
     {NULL, NULL, 0}
 };
 
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 void init_Ctl(void)
 {
     PyObject *m;
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     PyObject *d;
 
     mytracker_upp = NewControlActionUPP(mytracker);
@@ -5791,11 +5791,11 @@ void init_Ctl(void)
     mytrackingproc_upp = NewControlUserPaneTrackingUPP(mytrackingproc);
     PyMac_INIT_TOOLBOX_OBJECT_NEW(ControlHandle, CtlObj_New);
     PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ControlHandle, CtlObj_Convert);
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
     m = Py_InitModule("_Ctl", Ctl_methods);
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     d = PyModule_GetDict(m);
     Ctl_Error = PyMac_GetOSErrException();
     if (Ctl_Error == NULL ||
@@ -5808,8 +5808,7 @@ void init_Ctl(void)
     /* Backward-compatible name */
     Py_INCREF(&Control_Type);
     PyModule_AddObject(m, "ControlType", (PyObject *)&Control_Type);
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 }
 
 /* ======================== End module _Ctl ========================= */
-
Index: Mac/Modules/dlg/_Dlgmodule.c
===================================================================
--- Mac/Modules/dlg/_Dlgmodule.c.orig
+++ Mac/Modules/dlg/_Dlgmodule.c
@@ -2,12 +2,10 @@
 /* ========================== Module _Dlg =========================== */
 
 #include "Python.h"
-
-#ifndef __LP64__
-
-
 #include "pymactoolbox.h"
 
+#if APPLE_SUPPORTS_QUICKTIME
+
 /* Macro to test whether a weak-loaded CFM function exists */
 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
     PyErr_SetString(PyExc_NotImplementedError, \
@@ -1577,7 +1575,7 @@ static PyMethodDef Dlg_methods[] = {
 void init_Dlg(void)
 {
     PyObject *m;
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     PyObject *d;
 
 
@@ -1585,11 +1583,11 @@ void init_Dlg(void)
         PyMac_INIT_TOOLBOX_OBJECT_NEW(DialogPtr, DlgObj_New);
         PyMac_INIT_TOOLBOX_OBJECT_NEW(DialogPtr, DlgObj_WhichDialog);
         PyMac_INIT_TOOLBOX_OBJECT_CONVERT(DialogPtr, DlgObj_Convert);
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
     m = Py_InitModule("_Dlg", Dlg_methods);
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     d = PyModule_GetDict(m);
     Dlg_Error = PyMac_GetOSErrException();
     if (Dlg_Error == NULL ||
@@ -1602,7 +1600,7 @@ void init_Dlg(void)
     /* Backward-compatible name */
     Py_INCREF(&Dialog_Type);
     PyModule_AddObject(m, "DialogType", (PyObject *)&Dialog_Type);
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 }
 
 /* ======================== End module _Dlg ========================= */
Index: Mac/Modules/drag/_Dragmodule.c
===================================================================
--- Mac/Modules/drag/_Dragmodule.c.orig
+++ Mac/Modules/drag/_Dragmodule.c
@@ -2,12 +2,10 @@
 /* ========================== Module _Drag ========================== */
 
 #include "Python.h"
-
-#ifndef __LP64__
-
-
 #include "pymactoolbox.h"
 
+#if APPLE_SUPPORTS_QUICKTIME
+
 /* Macro to test whether a weak-loaded CFM function exists */
 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
     PyErr_SetString(PyExc_NotImplementedError, \
@@ -1117,18 +1115,18 @@ static PyMethodDef Drag_methods[] = {
 void init_Drag(void)
 {
     PyObject *m;
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     PyObject *d;
 
 
 
         PyMac_INIT_TOOLBOX_OBJECT_NEW(DragRef, DragObj_New);
         PyMac_INIT_TOOLBOX_OBJECT_CONVERT(DragRef, DragObj_Convert);
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 
     m = Py_InitModule("_Drag", Drag_methods);
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     d = PyModule_GetDict(m);
     Drag_Error = PyMac_GetOSErrException();
     if (Drag_Error == NULL ||
@@ -1150,7 +1148,7 @@ void init_Drag(void)
     dragglue_DrawingUPP = NewDragDrawingUPP(dragglue_Drawing);
 #endif
 
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 }
 
Index: Mac/Modules/help/_Helpmodule.c
===================================================================
--- Mac/Modules/help/_Helpmodule.c.orig
+++ Mac/Modules/help/_Helpmodule.c
@@ -2,12 +2,10 @@
 /* ========================== Module _Help ========================== */
 
 #include "Python.h"
-
-#ifndef __LP64__
-
-
 #include "pymactoolbox.h"
 
+#if APPLE_SUPPORTS_QUICKTIME
+
 /* Macro to test whether a weak-loaded CFM function exists */
 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
     PyErr_SetString(PyExc_NotImplementedError, \
@@ -145,10 +143,10 @@ static PyObject *Help_HMHideTag(PyObject
     return _res;
 }
 
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 static PyMethodDef Help_methods[] = {
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     {"HMGetHelpMenu", (PyCFunction)Help_HMGetHelpMenu, 1,
      PyDoc_STR("() -> (MenuRef outHelpMenu, MenuItemIndex outFirstCustomItemIndex)")},
     {"HMAreHelpTagsDisplayed", (PyCFunction)Help_HMAreHelpTagsDisplayed, 1,
@@ -165,31 +163,30 @@ static PyMethodDef Help_methods[] = {
      PyDoc_STR("(DialogPtr inDialog, SInt16 inHdlgRsrcID, SInt16 inItemStart) -> None")},
     {"HMHideTag", (PyCFunction)Help_HMHideTag, 1,
      PyDoc_STR("() -> None")},
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
     {NULL, NULL, 0}
 };
 
 
 
-
 void init_Help(void)
 {
     PyObject *m;
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     PyObject *d;
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 
 
 
     m = Py_InitModule("_Help", Help_methods);
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     d = PyModule_GetDict(m);
     Help_Error = PyMac_GetOSErrException();
     if (Help_Error == NULL ||
         PyDict_SetItemString(d, "Error", Help_Error) != 0)
         return;
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 }
 
 /* ======================== End module _Help ======================== */
Index: Mac/Modules/ibcarbon/_IBCarbon.c
===================================================================
--- Mac/Modules/ibcarbon/_IBCarbon.c.orig
+++ Mac/Modules/ibcarbon/_IBCarbon.c
@@ -2,12 +2,12 @@
 /* ======================== Module _IBCarbon ======================== */
 
 #include "Python.h"
+#include "pymactoolbox.h"
 
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 
 #include <Carbon/Carbon.h>
-#include "pymactoolbox.h"
 
 #ifdef USE_TOOLBOX_OBJECT_GLUE
 extern int _CFStringRefObj_Convert(PyObject *, CFStringRef *);
@@ -225,13 +225,13 @@ static PyObject *IBCarbon_CreateNibRefer
                          IBNibRefObj_New, outNibRef);
     return _res;
 }
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 static PyMethodDef IBCarbon_methods[] = {
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     {"CreateNibReference", (PyCFunction)IBCarbon_CreateNibReference, 1,
      PyDoc_STR("(CFStringRef inNibName) -> (IBNibRef outNibRef)")},
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
     {NULL, NULL, 0}
 };
 
@@ -241,16 +241,16 @@ static PyMethodDef IBCarbon_methods[] = 
 void init_IBCarbon(void)
 {
     PyObject *m;
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     PyObject *d;
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 
 
 
 
     m = Py_InitModule("_IBCarbon", IBCarbon_methods);
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     d = PyModule_GetDict(m);
     IBCarbon_Error = PyMac_GetOSErrException();
     if (IBCarbon_Error == NULL ||
@@ -263,7 +263,7 @@ void init_IBCarbon(void)
     /* Backward-compatible name */
     Py_INCREF(&IBNibRef_Type);
     PyModule_AddObject(m, "IBNibRefType", (PyObject *)&IBNibRef_Type);
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 }
 
 /* ====================== End module _IBCarbon ====================== */
Index: Mac/Modules/icn/_Icnmodule.c
===================================================================
--- Mac/Modules/icn/_Icnmodule.c.orig
+++ Mac/Modules/icn/_Icnmodule.c
@@ -2,11 +2,11 @@
 /* ========================== Module _Icn =========================== */
 
 #include "Python.h"
+#include "pymactoolbox.h"
 
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 
-#include "pymactoolbox.h"
 
 /* Macro to test whether a weak-loaded CFM function exists */
 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
@@ -1448,10 +1448,10 @@ static PyObject *Icn_WriteIconFile(PyObj
     _res = Py_None;
     return _res;
 }
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 static PyMethodDef Icn_methods[] = {
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     {"GetCIcon", (PyCFunction)Icn_GetCIcon, 1,
      PyDoc_STR("(SInt16 iconID) -> (CIconHandle _rv)")},
     {"PlotCIcon", (PyCFunction)Icn_PlotCIcon, 1,
@@ -1576,7 +1576,7 @@ static PyMethodDef Icn_methods[] = {
      PyDoc_STR("(FSRef ref) -> (IconFamilyHandle iconFamily)")},
     {"WriteIconFile", (PyCFunction)Icn_WriteIconFile, 1,
      PyDoc_STR("(IconFamilyHandle iconFamily, FSSpec iconFile) -> None")},
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
     {NULL, NULL, 0}
 };
 
@@ -1586,21 +1586,21 @@ static PyMethodDef Icn_methods[] = {
 void init_Icn(void)
 {
     PyObject *m;
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     PyObject *d;
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 
 
 
     m = Py_InitModule("_Icn", Icn_methods);
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     d = PyModule_GetDict(m);
     Icn_Error = PyMac_GetOSErrException();
     if (Icn_Error == NULL ||
         PyDict_SetItemString(d, "Error", Icn_Error) != 0)
         return;
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 }
 
 /* ======================== End module _Icn ========================= */
Index: Mac/Modules/list/_Listmodule.c
===================================================================
--- Mac/Modules/list/_Listmodule.c.orig
+++ Mac/Modules/list/_Listmodule.c
@@ -2,11 +2,10 @@
 /* ========================== Module _List ========================== */
 
 #include "Python.h"
+#include "pymactoolbox.h"
 
-#ifndef __LP64__
-
+#if APPLE_SUPPORTS_QUICKTIME
 
-#include "pymactoolbox.h"
 
 /* Macro to test whether a weak-loaded CFM function exists */
 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
@@ -1033,10 +1032,10 @@ static PyObject *List_as_List(PyObject *
     return _res;
 
 }
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 static PyMethodDef List_methods[] = {
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     {"CreateCustomList", (PyCFunction)List_CreateCustomList, 1,
      PyDoc_STR("(Rect rView, Rect dataBounds, Point cellSize, ListDefSpec theSpec, WindowPtr theWindow, Boolean drawIt, Boolean hasGrow, Boolean scrollHoriz, Boolean scrollVert) -> (ListHandle outList)")},
     {"LNew", (PyCFunction)List_LNew, 1,
@@ -1059,11 +1058,11 @@ static PyMethodDef List_methods[] = {
      PyDoc_STR("(ListHandle list, OptionBits selectionFlags) -> None")},
     {"as_List", (PyCFunction)List_as_List, 1,
      PyDoc_STR("(Resource)->List.\nReturns List object (which is not auto-freed!)")},
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
     {NULL, NULL, 0}
 };
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 
 
 static void myListDefFunction(SInt16 message,
@@ -1101,13 +1100,13 @@ static void myListDefFunction(SInt16 mes
         Py_DECREF(rv);
     }
 }
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 
 void init_List(void)
 {
     PyObject *m;
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     PyObject *d;
 
 
@@ -1116,11 +1115,11 @@ void init_List(void)
 
     PyMac_INIT_TOOLBOX_OBJECT_NEW(ListHandle, ListObj_New);
     PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ListHandle, ListObj_Convert);
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 
     m = Py_InitModule("_List", List_methods);
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     d = PyModule_GetDict(m);
     List_Error = PyMac_GetOSErrException();
     if (List_Error == NULL ||
@@ -1133,7 +1132,7 @@ void init_List(void)
     /* Backward-compatible name */
     Py_INCREF(&List_Type);
     PyModule_AddObject(m, "ListType", (PyObject *)&List_Type);
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 }
 
 /* ======================== End module _List ======================== */
Index: Mac/Modules/mlte/_Mltemodule.c
===================================================================
--- Mac/Modules/mlte/_Mltemodule.c.orig
+++ Mac/Modules/mlte/_Mltemodule.c
@@ -2,11 +2,10 @@
 /* ========================== Module _Mlte ========================== */
 
 #include "Python.h"
+#include "pymactoolbox.h"
 
-#ifndef __LP64__
-
+#if APPLE_SUPPORTS_QUICKTIME
 
-#include "pymactoolbox.h"
 
 /* Macro to test whether a weak-loaded CFM function exists */
 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
@@ -1623,10 +1622,10 @@ static PyObject *Mlte_TXNInitTextension(
 
 }
 
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 static PyMethodDef Mlte_methods[] = {
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     {"TXNNewObject", (PyCFunction)Mlte_TXNNewObject, 1,
      PyDoc_STR("(FSSpec * iFileSpec, WindowPtr iWindow, Rect iFrame, TXNFrameOptions iFrameOptions, TXNFrameType iFrameType, TXNFileType iFileType, TXNPermanentTextEncodingType iPermanentEncoding) -> (TXNObject oTXNObject, TXNFrameID oTXNFrameID)")},
     {"TXNTerminateTextension", (PyCFunction)Mlte_TXNTerminateTextension, 1,
@@ -1643,7 +1642,7 @@ static PyMethodDef Mlte_methods[] = {
      PyDoc_STR("() -> (TXNVersionValue _rv, TXNFeatureBits oFeatureFlags)")},
     {"TXNInitTextension", (PyCFunction)Mlte_TXNInitTextension, 1,
      PyDoc_STR("(TXNInitOptions) -> None")},
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
     {NULL, NULL, 0}
 };
 
@@ -1653,17 +1652,17 @@ static PyMethodDef Mlte_methods[] = {
 void init_Mlte(void)
 {
     PyObject *m;
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     PyObject *d;
 
 
 
     //      PyMac_INIT_TOOLBOX_OBJECT_NEW(xxxx);
 
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
     m = Py_InitModule("_Mlte", Mlte_methods);
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     d = PyModule_GetDict(m);
     Mlte_Error = PyMac_GetOSErrException();
     if (Mlte_Error == NULL ||
@@ -1683,7 +1682,7 @@ void init_Mlte(void)
     /* Backward-compatible name */
     Py_INCREF(&TXNFontMenuObject_Type);
     PyModule_AddObject(m, "TXNFontMenuObjectType", (PyObject *)&TXNFontMenuObject_Type);
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 }
 
 /* ======================== End module _Mlte ======================== */
Index: Mac/Modules/qt/_Qtmodule.c
===================================================================
--- Mac/Modules/qt/_Qtmodule.c.orig
+++ Mac/Modules/qt/_Qtmodule.c
@@ -2,11 +2,11 @@
 /* =========================== Module _Qt =========================== */
 
 #include "Python.h"
+#include "pymactoolbox.h"
 
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 
-#include "pymactoolbox.h"
 
 /* Macro to test whether a weak-loaded CFM function exists */
 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
@@ -26295,10 +26295,10 @@ static PyObject *Qt_MoviesTask(PyObject 
     _res = Py_None;
     return _res;
 }
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 static PyMethodDef Qt_methods[] = {
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     {"EnterMovies", (PyCFunction)Qt_EnterMovies, 1,
      PyDoc_STR("() -> None")},
     {"ExitMovies", (PyCFunction)Qt_ExitMovies, 1,
@@ -27991,7 +27991,7 @@ static PyMethodDef Qt_methods[] = {
      PyDoc_STR("(WindowPtr wp, Point startPt, Rect boundsRect) -> None")},
     {"MoviesTask", (PyCFunction)Qt_MoviesTask, 1,
      PyDoc_STR("(long maxMilliSecToUse) -> None")},
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
     {NULL, NULL, 0}
 };
 
@@ -28001,7 +28001,7 @@ static PyMethodDef Qt_methods[] = {
 void init_Qt(void)
 {
     PyObject *m;
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     PyObject *d;
 
 
@@ -28018,11 +28018,11 @@ void init_Qt(void)
         PyMac_INIT_TOOLBOX_OBJECT_CONVERT(UserData, UserDataObj_Convert);
         PyMac_INIT_TOOLBOX_OBJECT_NEW(Media, MediaObj_New);
         PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Media, MediaObj_Convert);
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 
     m = Py_InitModule("_Qt", Qt_methods);
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     d = PyModule_GetDict(m);
     Qt_Error = PyMac_GetOSErrException();
     if (Qt_Error == NULL ||
@@ -28084,7 +28084,7 @@ void init_Qt(void)
     /* Backward-compatible name */
     Py_INCREF(&SGOutput_Type);
     PyModule_AddObject(m, "SGOutputType", (PyObject *)&SGOutput_Type);
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 }
 
 /* ========================= End module _Qt ========================= */
Index: Mac/Modules/te/_TEmodule.c
===================================================================
--- Mac/Modules/te/_TEmodule.c.orig
+++ Mac/Modules/te/_TEmodule.c
@@ -2,11 +2,11 @@
 /* =========================== Module _TE =========================== */
 
 #include "Python.h"
+#include "pymactoolbox.h"
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 
 
-#include "pymactoolbox.h"
 
 /* Macro to test whether a weak-loaded CFM function exists */
 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
@@ -1268,10 +1268,10 @@ static PyObject *TE_as_TE(PyObject *_sel
                          TEObj_New, _rv);
     return _res;
 }
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 static PyMethodDef TE_methods[] = {
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     {"TEScrapHandle", (PyCFunction)TE_TEScrapHandle, 1,
      PyDoc_STR("() -> (Handle _rv)")},
     {"TEGetScrapLength", (PyCFunction)TE_TEGetScrapLength, 1,
@@ -1298,7 +1298,7 @@ static PyMethodDef TE_methods[] = {
      PyDoc_STR("(UInt8 value) -> None")},
     {"as_TE", (PyCFunction)TE_as_TE, 1,
      PyDoc_STR("(Handle h) -> (TEHandle _rv)")},
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
     {NULL, NULL, 0}
 };
 
@@ -1308,7 +1308,7 @@ static PyMethodDef TE_methods[] = {
 void init_TE(void)
 {
     PyObject *m;
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     PyObject *d;
 
 
@@ -1316,10 +1316,10 @@ void init_TE(void)
         PyMac_INIT_TOOLBOX_OBJECT_NEW(TEHandle, TEObj_New);
         PyMac_INIT_TOOLBOX_OBJECT_CONVERT(TEHandle, TEObj_Convert);
 
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
     m = Py_InitModule("_TE", TE_methods);
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     d = PyModule_GetDict(m);
     TE_Error = PyMac_GetOSErrException();
     if (TE_Error == NULL ||
@@ -1332,7 +1332,7 @@ void init_TE(void)
     /* Backward-compatible name */
     Py_INCREF(&TE_Type);
     PyModule_AddObject(m, "TEType", (PyObject *)&TE_Type);
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 }
 
 /* ========================= End module _TE ========================= */
Index: Mac/Modules/win/_Winmodule.c
===================================================================
--- Mac/Modules/win/_Winmodule.c.orig
+++ Mac/Modules/win/_Winmodule.c
@@ -2,10 +2,10 @@
 /* ========================== Module _Win =========================== */
 
 #include "Python.h"
+#include "pymactoolbox.h"
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 
-#include "pymactoolbox.h"
 
 /* Macro to test whether a weak-loaded CFM function exists */
 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
@@ -3147,10 +3147,10 @@ static PyObject *Win_FindWindow(PyObject
                          WinObj_WhichWindow, theWindow);
     return _res;
 }
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 static PyMethodDef Win_methods[] = {
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     {"GetNewCWindow", (PyCFunction)Win_GetNewCWindow, 1,
      PyDoc_STR("(short windowID, WindowPtr behind) -> (WindowPtr _rv)")},
     {"NewWindow", (PyCFunction)Win_NewWindow, 1,
@@ -3202,12 +3202,12 @@ static PyMethodDef Win_methods[] = {
     {"FindWindow", (PyCFunction)Win_FindWindow, 1,
      PyDoc_STR("(Point thePoint) -> (short _rv, WindowPtr theWindow)")},
     {NULL, NULL, 0}
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 };
 
 
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 /* Return the object corresponding to the window, or NULL */
 
 PyObject *
@@ -3230,22 +3230,22 @@ WinObj_WhichWindow(WindowPtr w)
     return it;
 }
 
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 void init_Win(void)
 {
     PyObject *m;
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     PyObject *d;
 
     PyMac_INIT_TOOLBOX_OBJECT_NEW(WindowPtr, WinObj_New);
     PyMac_INIT_TOOLBOX_OBJECT_NEW(WindowPtr, WinObj_WhichWindow);
     PyMac_INIT_TOOLBOX_OBJECT_CONVERT(WindowPtr, WinObj_Convert);
 
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
     m = Py_InitModule("_Win", Win_methods);
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
     d = PyModule_GetDict(m);
     Win_Error = PyMac_GetOSErrException();
     if (Win_Error == NULL ||
@@ -3258,7 +3258,7 @@ void init_Win(void)
     /* Backward-compatible name */
     Py_INCREF(&Window_Type);
     PyModule_AddObject(m, "WindowType", (PyObject *)&Window_Type);
-#endif /* __LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 }
 
 /* ======================== End module _Win ========================= */
Index: Misc/NEWS
===================================================================
--- Misc/NEWS.orig
+++ Misc/NEWS
@@ -1788,6 +1788,9 @@ Library
 - Issue #1149804: macostools.mkdirs now even works when another process
   creates one of the needed subdirectories.
 
+- Issue #27806: Fix 32-bit builds on macOS Sierra 10.12 broken by removal of
+  deprecated QuickTime/QuickTime.h header file.  Patch by sashk.
+
 Tools/Demos
 -----------
 
Index: Python/mactoolboxglue.c
===================================================================
--- Python/mactoolboxglue.c.orig
+++ Python/mactoolboxglue.c
@@ -106,7 +106,7 @@ PyMac_Error(OSErr err)
 }
 
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 OSErr
 PyMac_GetFullPathname(FSSpec *fss, char *path, int len)
 {
@@ -154,7 +154,7 @@ PyMac_GetFullPathname(FSSpec *fss, char 
     Py_XDECREF(fs);
     return err;
 }
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 /* Convert a 4-char string object argument to an OSType value */
 int
@@ -419,7 +419,7 @@ GLUE_CONVERT(RGBColor, QdRGB_Convert, "C
 GLUE_NEW(GWorldPtr, GWorldObj_New, "Carbon.Qdoffs")
 GLUE_CONVERT(GWorldPtr, GWorldObj_Convert, "Carbon.Qdoffs")
 
-#ifndef __LP64__
+#if APPLE_SUPPORTS_QUICKTIME
 GLUE_NEW(Track, TrackObj_New, "Carbon.Qt")
 GLUE_CONVERT(Track, TrackObj_Convert, "Carbon.Qt")
 GLUE_NEW(Movie, MovieObj_New, "Carbon.Qt")
@@ -432,7 +432,7 @@ GLUE_NEW(UserData, UserDataObj_New, "Car
 GLUE_CONVERT(UserData, UserDataObj_Convert, "Carbon.Qt")
 GLUE_NEW(Media, MediaObj_New, "Carbon.Qt")
 GLUE_CONVERT(Media, MediaObj_Convert, "Carbon.Qt")
-#endif /* !__LP64__ */
+#endif /* APPLE_SUPPORTS_QUICKTIME */
 
 GLUE_NEW(Handle, ResObj_New, "Carbon.Res")
 GLUE_CONVERT(Handle, ResObj_Convert, "Carbon.Res")
