diff options
Diffstat (limited to 'lib/gs/tcl')
-rw-r--r-- | lib/gs/tcl/Makefile | 23 | ||||
-rw-r--r-- | lib/gs/tcl/Makefile.in | 83 | ||||
-rw-r--r-- | lib/gs/tcl/README | 156 |
3 files changed, 262 insertions, 0 deletions
diff --git a/lib/gs/tcl/Makefile b/lib/gs/tcl/Makefile new file mode 100644 index 0000000000..53d7e97f7b --- /dev/null +++ b/lib/gs/tcl/Makefile @@ -0,0 +1,23 @@ +# +# %CopyrightBegin% +# +# Copyright Ericsson AB 2002-2009. All Rights Reserved. +# +# The contents of this file are subject to the Erlang Public License, +# Version 1.1, (the "License"); you may not use this file except in +# compliance with the License. You should have received a copy of the +# Erlang Public License along with this software. If not, it can be +# retrieved online at http://www.erlang.org/. +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +# the License for the specific language governing rights and limitations +# under the License. +# +# %CopyrightEnd% +# +# +# Invoke with GNU make or clearmake -C gnu. +# + +include $(ERL_TOP)/make/run_make.mk diff --git a/lib/gs/tcl/Makefile.in b/lib/gs/tcl/Makefile.in new file mode 100644 index 0000000000..dce34a4baa --- /dev/null +++ b/lib/gs/tcl/Makefile.in @@ -0,0 +1,83 @@ +# +# %CopyrightBegin% +# +# Copyright Ericsson AB 2002-2009. All Rights Reserved. +# +# The contents of this file are subject to the Erlang Public License, +# Version 1.1, (the "License"); you may not use this file except in +# compliance with the License. You should have received a copy of the +# Erlang Public License along with this software. If not, it can be +# retrieved online at http://www.erlang.org/. +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +# the License for the specific language governing rights and limitations +# under the License. +# +# %CopyrightEnd% +# + +# +include $(ERL_TOP)/make/target.mk +include $(ERL_TOP)/make/$(TARGET)/otp.mk + +# ---------------------------------------------------- +# Application version +# ---------------------------------------------------- +include ../vsn.mk +VSN=$(GS_VSN) + +# ---------------------------------------------------- +# The following variables differ on different systems, we set +# reasonable defaults, if something different is needed it should +# be set for that system only. +# ---------------------------------------------------- + +ifeq ($(TARGET),win32) +TCL_TAR = binaries/win32.tar.gz +else +TCL_TAR = @TCL_TAR@ +endif + +CONFIGURE_FILES = ../configure ../configure.in + +ROOTDIR = .. +BINDIR = $(ROOTDIR)/priv/bin +LIBDIR = ./lib + +RELSYSDIR = $(RELEASE_PATH)/lib/gs-$(VSN) + +# ---------------------------------------------------- +# Common Macros +# ---------------------------------------------------- +TCL_FILES = ../priv/gstk.tcl +EXTRA_FILES = ../priv/gs-xdefaults + +# ---------------------------------------------------- +# Targets +# ---------------------------------------------------- + +ifeq ($(TCL_TAR),) +debug opt: +else +debug opt: + gzip -dc $(TCL_TAR) | (cd ../priv && tar -xf -) +endif + +clean: + +docs: + +# ---------------------------------------------------- +# Release Target +# ---------------------------------------------------- +include $(ERL_TOP)/make/otp_release_targets.mk + +release_spec: + $(INSTALL_DIR) $(RELSYSDIR)/priv + $(INSTALL_DATA) $(TCL_FILES) $(EXTRA_FILES) $(RELSYSDIR)/priv +ifneq ($(TCL_TAR),) + gzip -dc $(TCL_TAR) | (cd $(RELSYSDIR)/priv && tar -xf -) +endif + +release_docs_spec: diff --git a/lib/gs/tcl/README b/lib/gs/tcl/README new file mode 100644 index 0000000000..5fc1836349 --- /dev/null +++ b/lib/gs/tcl/README @@ -0,0 +1,156 @@ +============================================================================== + How to create prebuilt Tcl/Tk binaries +============================================================================== + +Please look further down in this text for Windows instructions... + +Unixish OS +---------- + +For commercial releases we use a prebuilt binary release of Tcl/Tk 8.X +where X >= 2. This release is placed into "gs-VSN/priv/tcl" and the +'gstk_port_handler' module searches this directory first to find the +"wish" executable program. + +It is possible to pack the files from a standard installation on a +machine into a TAR file but it is preferable to build Tcl/Tk from +sources. The steps are + + 0. Set some environment variables + + % setenv BUILDDIR /tmp/build + % setenv GNUTAR gtar + + 1. Download unpack the sources from http://sourceforge.net/projects/tcl. + Use the latest stable release. When this README was written + the latest stable version was 8.3.4. + + % mkdir -p $BUILDDIR/tcl + % cd $BUILDDIR + % $GNUTAR -xzf /my/src/path/tcl8.3.4.tar.gz + % $GNUTAR -xzf /my/src/path/tk8.3.4.tar.gz + + % cd tcl8.3.4/unix + % ./configure --enable-gcc --enable-threads --disable-load \ + --disable-shared --prefix=$BUILDDIR/tcl + % make + % make install + + % cd ../../tk8.3.4/unix + % ./configure --enable-gcc --enable-threads --disable-load \ + --disable-shared --prefix=$BUILDDIR/tcl \ + --with-tcl=$BUILDDIR/tcl/lib + % make + % make install + + 2. Check that the executable wish program don't depend on libtcl + or libtk. If it does we have to redo this or keep them + where they are, else we can remove the libraries + + % cd $BUILDDIR + % ldd tcl/bin/wish8.3 + + and if the executables doesn't depend on libtcl or libtk we remove them + + % rm -f tcl/lib/libt* + + 3. Remove other things we don't need. There may be other things in + later releases but only remove the obvious things + + % rm -fr tcl/include tcl/man + % rm -f tcl/bin/tclsh* + % rm -f tcl/lib/*.sh + % rm -fr tcl/lib/tcl*/http* + % rm -fr tcl/lib/tcl*/tcltest* + % rm -fr tcl/lib/tk*/demos + % rm -fr tcl/lib/tk*/images + % rm -f tcl/lib/*/*.c + + 4. Some releases of Tcl/Tk contains soft links that make the directory + structure circular making it impossible to use 'cp' to copy the + tcl directory. You can find them with + + % find tcl -type l + + 5. Find out the name of the resulting TAR archive. Run the GS configure + script on the target platform to view the name + + % cd $ERL_TOP/lib/gs + % rm -f config.cache + % autoconf + % ./configure + + 6. Use the TAR program on the system to pack the resulting Tcl/Tk + distribution. Keep the top "tcl" library + + % tar -cf - tcl | gzip > xxxxxxxx.tar.gz + + 7. Copy and check in this TAR archive into the directory + + /clearcase/otp/erts/lib/gs/tcl/binaries + + 8. We are done........ + + +Windows +------- + +These instructions are aimed at the 8.5.7 release of both tcl and tk, +but should work for 8.4 as well as 8.6 releases with appropriate +modifications. + +0. Download the source tar files for both tcl and tk and unpack the +tar files from the same root. + +1. Start with tcl. Open a command prompt with the appropriate Visual +C++ command environment (there is usually a shortcut under VC++ tools +or something in the start menu. With this command prompt, cd to the +tcl<version>/win directory and issue the following commands: + +dos_prompt> nmake -f makefile.vc OPTS=static INSTALLDIR=<some temp dir>\tcl +... +dos_prompt> nmake -f makefile.vc OPTS=static INSTALLDIR=<some temp dir>\tcl install + +2. Move further to tk. Using the same command prompt, cd +..\..\tk<version>\win and build there: + +dos_prompt> nmake -f makefile.vc OPTS=static TCLDIR=<top dir of sources>\tcl<version> INSTALLDIR=<some temp dir>\tcl +... +dos_prompt> nmake -f makefile.vc OPTS=static TCLDIR=<top dir of sources>\tcl<version> INSTALLDIR=<some temp dir>\tcl install + +3. Now you will need to strip the installation you put in <some temp +dir>\tcl. To do this, you will want a more appropriate command +shell. Start cygwin bash and cd to the cygwin equivalent of <some temp +dir>, i.e. where tcl/tk was installed. Now clean away what's not +needed (this is not optional, gs won't work with a full version...) + + % rm -fr tcl/include tcl/man + % rm -f tcl/bin/tclsh* + % rm -f tcl/lib/*.sh + % rm -fr tcl/lib/tcl*/http* + % rm -fr tcl/lib/tcl*/tcltest* + % rm -fr tcl/lib/tcl*/tzdata + % rm -fr tcl/lib/tcl*/msgs + % rm -fr tcl/lib/tk*/demos + % rm -fr tcl/lib/tk*/images + % rm -fr tcl/lib/tk*/tzdata + % rm -f tcl/lib/*/*.c + % rm -f tcl/lib/*.lib + % rm -fr tcl/lib/tcl8 + +(The last line is especially important, gs will crash otherwise...) + +4. Now copy license.terms from the sources, otherwise you may break the redistribution policy. + + % cp <top of sources/tcl<version>/license.terms tcl/ + +5. Pack the tar file: + + % tar zcf win32.tar.gz tcl + +6. Put it in $ERL_TOP/lib/gs/tcl/binaries (as described for Unixes) + +7. You are done! + + + |