Since I am doing a cross-compile, that is where the problem seems to be. After a bug of debugging (a.k.a. prints), I got to the bottom of it.
The configure determines the system support long for the 64-bits integer and set TCL_WIDE_INT_IS_LONG to 1 to be used by gcc. When the compile comes with -m32, it is too late already since TCL_WIDE_INT_IS_LONG is set (via -D on the gcc command line). Since -DTCL_WIDE_INT_IS_LONG=1, the header file will force the use of long.
Now I did add '--build=i686 ' to the configure line and still got the 64-bit integer set to long and TCL_WIDE_INT_IS_LONG to 1. I would consider this incorrect since the 32 bit instruction set cannot not be using a long for 64 bits. There is a workaround (and may be an option I am not aware). Just set
export tcl_cv_type_64bit="long long"
before calling the configure and it will cache the 64-bits integer as a long long and works....
Final recipe (on Centos):
export tcl_cv_type_64bit="long long"
./configure --disable-64bit -prefix=/home/public/RND/AFW/tcl8.6.10