Tcl/Tk 8.3.2 build on QNX 4.25 info

I’ve received a number of emails asking about this, so here’s the info for
anyone who is interested:

tcl:
from /usr/local/src/tcl8.3.2/unix run:
…/configure --prefix=/usr/local/tcl8.3.2 --disable-threads --disable-load
–disable-shard --enable-gcc --with-tcl=/usr/local/tcl8.3.2
–with-tk=/usr/local/tcl8.3.2

tk:
from /usr/local/src/tk8.3.2/unix run:
…/configure --prefix=/usr/local/tcl8.3.2 --disable-threads --disable-load
–disable-shard --enable-gcc --with-tcl=/usr/local/tcl8.3.2/lib
–with-tk=/usr/local/tcl8.3.2

Don’t know if all these options are absolutely necessary, but when something
works, well, you know the rest.

Edit unix/Makefile and turn off security:
#SECURITY_FLAGS =
SECURITY_FLAGS = -DTK_NO_SECURITY
…or, at some point get xauth style working on QNX.

Edit all Makefiles and change SH to /bin/bash rather /bin/sh
Oh, yes, you’ll need the bash from quics /usr/free/qnx4

If soneone knows of a better way to handle this next one, I’d love to know.
Edit tk/generic/tk.h and insert:
#undef XNQueryInputStyle
above the line:
#ifdef XNQueryInputStyle

There’s something wierd in QNX’s shell test handling, so I had to comment out
a few tests in the unix/Makefiles, here’s the diffs:

tcl:

$ //8/mnt/louie/home/bedge/p4/ncc/524/main/qnx/source/usr/darts/src/tasks> cat
/usr/local/src/tcl8.3.2/unix/Makefile.diff
522,524c522,524
< # @if test ! -x $(SRC_DIR)/install-sh; then
< # chmod +x $(SRC_DIR)/install-sh;
< # fi

@if test ! -x $(SRC_DIR)/install-sh; then
chmod +x $(SRC_DIR)/install-sh;
fi
529,533c529,533

< # @if test “$(TCL_BUILD_EXP_FILE)” != “”; then
< # echo “Installing $(TCL_EXP_FILE) to $(LIB_INSTALL_DIR)/”;
< # $(INSTALL_DATA) $(TCL_BUILD_EXP_FILE)
< # $(LIB_INSTALL_DIR)/$(TCL_EXP_FILE);
< # fi

@if test “$(TCL_BUILD_EXP_FILE)” != “”; then
echo “Installing $(TCL_EXP_FILE) to $(LIB_INSTALL_DIR)/”;
$(INSTALL_DATA) $(TCL_BUILD_EXP_FILE)
$(LIB_INSTALL_DIR)/$(TCL_EXP_FILE);
fi
563,565c563,565

< # @if test ! -x $(SRC_DIR)/install-sh; then
< # chmod +x $(SRC_DIR)/install-sh;
< # fi

@if test ! -x $(SRC_DIR)/install-sh; then
chmod +x $(SRC_DIR)/install-sh;
fi
590,592c590,592

< # @if test ! -x $(UNIX_DIR)/mkLinks; then
< # chmod +x $(UNIX_DIR)/mkLinks;
< # fi

@if test ! -x $(UNIX_DIR)/mkLinks; then
chmod +x $(UNIX_DIR)/mkLinks;
fi

tk:

$ //8/mnt/louie/home/bedge/p4/ncc/524/main/qnx/source/usr/darts/src/tasks> cat
/usr/local/src/tk8.3.2/unix/Makefile.diff
453,458c453,458
< # @if test ! -x $(UNIX_DIR)/install-sh; then
< # chmod +x $(UNIX_DIR)/install-sh;
< # fi
< # @if test ! -x $(UNIX_DIR)/mkLinks; then
< # chmod +x $(UNIX_DIR)/mkLinks;
< # fi

@if test ! -x $(UNIX_DIR)/install-sh; then
chmod +x $(UNIX_DIR)/install-sh;
fi
@if test ! -x $(UNIX_DIR)/mkLinks; then
chmod +x $(UNIX_DIR)/mkLinks;
fi
467,471c467,471

< # @if test “$(TK_BUILD_EXP_FILE)” != “”; then
< # echo “Installing $(TK_EXP_FILE) to $(LIB_INSTALL_DIR)/”;
< # $(INSTALL_DATA) $(TK_BUILD_EXP_FILE)
< # $(LIB_INSTALL_DIR)/$(TK_EXP_FILE);
< # fi

@if test “$(TK_BUILD_EXP_FILE)” != “”; then
echo “Installing $(TK_EXP_FILE) to $(LIB_INSTALL_DIR)/”;
$(INSTALL_DATA) $(TK_BUILD_EXP_FILE)
$(LIB_INSTALL_DIR)/$(TK_EXP_FILE);
fi
489,491c489,491

< # @if test ! -x $(UNIX_DIR)/install-sh; then
< # chmod +x $(UNIX_DIR)/install-sh;
< # fi

@if test ! -x $(UNIX_DIR)/install-sh; then
chmod +x $(UNIX_DIR)/install-sh;
fi

Then, from /usr/local/tcl8.2.3/unix run:
make
make install
then do the same in /usr/local/tk8.2.3

Then, I made a link from /usr/local/tcl8.3.2 to /usr/local/tcl


-ITCL

This is for [incr tcl] 3.1.0, I haven’t tried 3.2.0 yet.
…/configure --exec-prefix=/usr/local/tcl --disable-shared

Then, change /bin/sh to /bin/bash in all Makefiles

Got ITCL built. Minor glitch in Makefile:
I’ve been trying to make the itcl tarball from the
scriptics site (itcl3.1.0.tar.gz) on QNX.
I finally got it built, but I think there’s a buglet
in the makefile in itcl3.1.0/itk/unix

Line 220 has:

STUB_OBJS = itkStubLib.o

Line 240 has:

$(ITK_STUB_LIB_FILE): $(STUB_OBJS)
rm -f $(ITK_STUB_LIB_FILE)
ar cr ${ITK_STUB_LIB_FILE} ${ITK_STUB_LIB_OBJS}
$(RANLIB) $(ITCL_STUB_LIB_FILE)

The args to “ar” contain an undefined macro: ${ITK_STUB_LIB_OBJS}

changing it to read:

ar cr ${ITK_STUB_LIB_FILE} ${STUB_OBJS}

Also, for make install, need to chmod +x all the install-sh scripts.

Lastly:

//8/usr/local/src/itcl3.1.0/itcl/library> mkdir /usr/local/tcl/lib/itcl3.1

//8/usr/local/src/itcl3.1.0/itcl/library> cp itcl/library/itcl.tcl

/usr/local/tcl/lib/itcl3.1

//8/usr/local/src/itcl3.1.0> mkdir /usr/local/tcl/lib/itk3.1

//8/usr/local/src/itcl3.1.0> cp itk/library/itk.tcl

/usr/local/tcl/lib/itk3.1

Then, make, make install…

-Bruce.