Subject: Allow win32 build with -DTCL_NO_DEPRECATED, just as the UNIX build, off by default. Define Tcl_EvalObj and Tcl_GlobalEvalObj as macros, even when TCL_NO_DEPRECATED is defined, so Tk can benefit from it too (this is not what TCL_NO_DEPRECATED is supposed to do).

From: "jan.nijtmans" <[email-masked]>
Date: Wed, 16 Jan 2013 08:52:59 +0000

---
 generic/tcl.h      | 11 -----------
 generic/tclBasic.c |  2 --
 generic/tclDecls.h | 12 ++++++++++++
 win/Makefile.in    |  7 ++++++-
 4 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/generic/tcl.h b/generic/tcl.h
index 9dd6ff0..5f47734 100644
--- a/generic/tcl.h
+++ b/generic/tcl.h
@@ -2278,17 +2278,6 @@ typedef unsigned short Tcl_UniChar;

 /*
- * Deprecated Tcl procedures:
- */
-#ifndef TCL_NO_DEPRECATED
-#   define Tcl_EvalObj(interp,objPtr) \
-	Tcl_EvalObjEx((interp),(objPtr),0)
-#   define Tcl_GlobalEvalObj(interp,objPtr) \
-	Tcl_EvalObjEx((interp),(objPtr),TCL_EVAL_GLOBAL)
-#endif
-
-
-/*
  * These function have been renamed. The old names are deprecated, but we
  * define these macros for backwards compatibilty.
  */
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index bd4ad5d..134deac 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -4923,7 +4923,6 @@ Tcl_Eval(interp, string)
  *----------------------------------------------------------------------
  */
 
-#undef Tcl_EvalObj
 int
 Tcl_EvalObj(interp, objPtr)
     Tcl_Interp * interp;
@@ -4932,7 +4931,6 @@ Tcl_EvalObj(interp, objPtr)
     return Tcl_EvalObjEx(interp, objPtr, 0);
 }
 
-#undef Tcl_GlobalEvalObj
 int
 Tcl_GlobalEvalObj(interp, objPtr)
     Tcl_Interp * interp;
diff --git a/generic/tclDecls.h b/generic/tclDecls.h
index 7df9897..8d9f635 100644
--- a/generic/tclDecls.h
+++ b/generic/tclDecls.h
@@ -4516,5 +4516,17 @@ extern TclStubs *tclStubsPtr;
 
 #undef TclUnusedStubEntry
 
+/*
+ * Deprecated Tcl procedures:
+ */
+#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS)
+#   undef Tcl_EvalObj
+#   define Tcl_EvalObj(interp,objPtr) \
+	Tcl_EvalObjEx((interp),(objPtr),0)
+#   undef Tcl_GlobalEvalObj
+#   define Tcl_GlobalEvalObj(interp,objPtr) \
+	Tcl_EvalObjEx((interp),(objPtr),TCL_EVAL_GLOBAL)
+#endif
+
 #endif /* _TCLDECLS */
 
diff --git a/win/Makefile.in b/win/Makefile.in
index af4ca68..b9ae5ad 100644
--- a/win/Makefile.in
+++ b/win/Makefile.in
@@ -129,6 +129,11 @@ SHARED_LIBRARIES 	= $(TCL_DLL_FILE) $(TCL_STUB_LIB_FILE) \
 			  $(DDE_DLL_FILE) $(REG_DLL_FILE) $(PIPE_DLL_FILE)
 STATIC_LIBRARIES	= $(TCL_LIB_FILE) $(REG_LIB_FILE) $(DDE_LIB_FILE)
 
+# To compile without backward compatibility and deprecated code
+# uncomment the following
+NO_DEPRECATED_FLAGS	=
+#NO_DEPRECATED_FLAGS	= -DTCL_NO_DEPRECATED
+
 # TCL_EXE is the name of a tclsh executable that is available *BEFORE*
 # running make for the first time. Certain build targets (make genstubs)
 # need it to be available on the PATH. This executable should *NOT* be
@@ -184,7 +189,7 @@ COPY		= cp
 
 CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${TCL_SHLIB_CFLAGS} \
 -I"${GENERIC_DIR_NATIVE}" -I"${WIN_DIR_NATIVE}" ${AC_FLAGS} \
-${COMPILE_DEBUG_FLAGS}
+${COMPILE_DEBUG_FLAGS} ${NO_DEPRECATED_FLAGS}
 
 CC_OBJNAME = @CC_OBJNAME@
 CC_EXENAME = @CC_EXENAME@
-- 
cgit v0.12