Adjusted _tkinter to compile without warnings when WITH_THREAD is not
defined (part of issue #5035)
diff --git a/Misc/NEWS b/Misc/NEWS
index a50f29d..c395d06 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -197,6 +197,9 @@
 Library
 -------
 
+- Adjusted _tkinter to compile without warnings when WITH_THREAD is not
+  defined (part of issue #5035).
+
 - Issue #5561: Removed the sys.version_info shortcuts from platform's
   python_version() and python_version_tuple() since they produced different
   output compared to previous Python versions.
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index 4056bcd..b4031db 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -734,6 +734,7 @@
 }
 
 
+#ifdef WITH_THREAD
 static void
 Tkapp_ThreadSend(TkappObject *self, Tcl_Event *ev,
 		 Tcl_Condition *cond, Tcl_Mutex *mutex)
@@ -746,6 +747,7 @@
 	Tcl_MutexUnlock(mutex);
 	Py_END_ALLOW_THREADS
 }
+#endif
 
 
 /** Tcl Eval **/
@@ -1135,8 +1137,8 @@
 	return newPyTclObject(value);
 }
 
+#ifdef WITH_THREAD
 /* This mutex synchronizes inter-thread command calls. */
-
 TCL_DECLARE_MUTEX(call_mutex)
 
 typedef struct Tkapp_CallEvent {
@@ -1148,6 +1150,7 @@
 	PyObject **exc_type, **exc_value, **exc_tb;
 	Tcl_Condition *done;
 } Tkapp_CallEvent;
+#endif
 
 void
 Tkapp_CallDeallocArgs(Tcl_Obj** objv, Tcl_Obj** objStore, int objc)
@@ -1258,6 +1261,8 @@
 	return res;
 }
 
+#ifdef WITH_THREAD
+
 /* Tkapp_CallProc is the event procedure that is executed in the context of
    the Tcl interpreter thread. Initially, it holds the Tcl lock, and doesn't
    hold the Python lock. */
@@ -1302,6 +1307,8 @@
 	return 1;
 }
 
+#endif
+
 /* This is the main entry point for calling a Tcl command.
    It supports three cases, with regard to threading:
    1. Tcl is not threaded: Must have the Tcl lock, then can invoke command in
@@ -1531,9 +1538,11 @@
 
 /** Tcl Variable **/
 
+typedef PyObject* (*EventFunc)(PyObject*, PyObject *args, int flags);
+
+#ifdef WITH_THREAD
 TCL_DECLARE_MUTEX(var_mutex)
 
-typedef PyObject* (*EventFunc)(PyObject*, PyObject *args, int flags);
 typedef struct VarEvent {
 	Tcl_Event ev; /* must be first */
 	PyObject *self;
@@ -1545,6 +1554,7 @@
 	PyObject **exc_val;
 	Tcl_Condition *cond;
 } VarEvent;
+#endif
 
 static int
 varname_converter(PyObject *in, void *_out)
@@ -1562,6 +1572,8 @@
 	return 0;
 }	
 
+#ifdef WITH_THREAD
+
 static void
 var_perform(VarEvent *ev)
 {
@@ -1589,11 +1601,13 @@
 	return 1;
 }
 
+#endif
+
 static PyObject*
 var_invoke(EventFunc func, PyObject *selfptr, PyObject *args, int flags)
 {
-	TkappObject *self = (TkappObject*)selfptr;
 #ifdef WITH_THREAD
+	TkappObject *self = (TkappObject*)selfptr;
 	if (self->threaded && self->thread_id != Tcl_GetCurrentThread()) {
 		TkappObject *self = (TkappObject*)selfptr;
 		VarEvent *ev;
@@ -2096,6 +2110,7 @@
 
 
 
+#ifdef WITH_THREAD
 TCL_DECLARE_MUTEX(command_mutex)
 
 typedef struct CommandEvent{
@@ -2122,6 +2137,7 @@
 	Tcl_MutexUnlock(&command_mutex);
 	return 1;
 }
+#endif
 
 static PyObject *
 Tkapp_CreateCommand(PyObject *selfptr, PyObject *args)
@@ -2152,7 +2168,8 @@
 	Py_INCREF(func);
 	data->self = selfptr;
 	data->func = func;
-	
+
+#ifdef WITH_THREAD
 	if (self->threaded && self->thread_id != Tcl_GetCurrentThread()) {
 		Tcl_Condition cond = NULL;
 		CommandEvent *ev = (CommandEvent*)ckalloc(sizeof(CommandEvent));
@@ -2166,7 +2183,9 @@
 		Tkapp_ThreadSend(self, (Tcl_Event*)ev, &cond, &command_mutex);
 		Tcl_ConditionFinalize(&cond);
 	}
-	else {
+	else
+#endif
+	{
 		ENTER_TCL
 		err = Tcl_CreateCommand(
 			Tkapp_Interp(self), cmdName, PythonCmd,
@@ -2194,6 +2213,8 @@
 
 	if (!PyArg_ParseTuple(args, "s:deletecommand", &cmdName))
 		return NULL;
+
+#ifdef WITH_THREAD
 	if (self->threaded && self->thread_id != Tcl_GetCurrentThread()) {
 		Tcl_Condition cond = NULL;
 		CommandEvent *ev;
@@ -2208,7 +2229,9 @@
 				 &command_mutex);
 		Tcl_ConditionFinalize(&cond);
 	}
-	else {
+	else
+#endif
+	{
 		ENTER_TCL
 		err = Tcl_DeleteCommand(self->interp, cmdName);
 		LEAVE_TCL