Check-in [a063fafd1f]
Overview
Comment:Allow building a TclKit on Win32 using MinGW against Tcl/Tk 8.6.1.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: a063fafd1f01e5002c6c2bad9ef613a504be8825
User & Date: mistachkin on 2013-09-25 03:12:38
Other Links: manifest | tags
Context
2013-09-25
04:30
Removed dead code check-in: 4816a85fc1 user: rkeene tags: trunk
03:12
Allow building a TclKit on Win32 using MinGW against Tcl/Tk 8.6.1. check-in: a063fafd1f user: mistachkin tags: trunk
2013-09-24
22:18
Fix Win32 portability issue in the VFS installation script regarding the 'null' device name. Closed-Leaf check-in: ad6d2d103e user: mistachkin tags: tcl-8.6.1-MinGW-Win32
2013-09-22
14:43
Corrected issue with performing checks using wrong compiler check-in: 6874e769d6 user: rkeene tags: trunk
Changes

Modified README from [43ef200174] to [2bc0f41d6f].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
This will build a Tclkit named "tclkit-<version>" or a KitDLL named
"libtclkit<version>.so".

---------------
Using This Tool
---------------
Usage:
	kitcreator [{build | retry | clean | distclean}]
	           [{<version> | cvs_<tag> | fossil_<tag>}]
	           [<configure_option> ...]

	Where:
		version            is a Tcl version number (e.g., 8.5.14)
		tag                is a CVS or fossil release tag (e.g., HEAD)
		configure_option   option to pass to subordinate configure
		                   scripts (e.g., --enable-64bit)

	Default is to create a Tclkit from Tcl version 8.5.14

Examples:
	1. Create a Tclkit:
		a. $ ./kitcreator

	2. Create a Tclkit for Tcl 8.5.8:
		a. $ ./kitcreator 8.5.8

	3. Create a Tclkit for Tcl from CVS HEAD:
		a. $ ./kitcreator cvs_HEAD

	4. Compile a 64-bit Tclkit:
		a. $ ./kitcreator --enable-64bit













|




|





|
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
This will build a Tclkit named "tclkit-<version>" or a KitDLL named
"libtclkit<version>.so".

---------------
Using This Tool
---------------
Usage:
	kitcreator [{build | retry | clean | distclean}]
	           [{<version> | cvs_<tag> | fossil_<tag>}]
	           [<configure_option> ...]

	Where:
		version            is a Tcl version number (e.g., 8.6.1)
		tag                is a CVS or fossil release tag (e.g., HEAD)
		configure_option   option to pass to subordinate configure
		                   scripts (e.g., --enable-64bit)

	Default is to create a Tclkit from Tcl version 8.6.1

Examples:
	1. Create a Tclkit:
		a. $ ./kitcreator

	2. Create a Tclkit for Tcl 8.5.15:
		a. $ ./kitcreator 8.5.15

	3. Create a Tclkit for Tcl from CVS HEAD:
		a. $ ./kitcreator cvs_HEAD

	4. Compile a 64-bit Tclkit:
		a. $ ./kitcreator --enable-64bit

44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
			v.   $ export CC CXX AR RANLIB
			vi.  $ ./kitcreator --host=mipsel-linux-uclibc
	   Note: When cross-compiling, the Tcl configure script may be unable
	   to determine which serial support method to use. If you want serial
	   support in a cross-compiled tclkit, specify it manually, e.g.:
		$ ./kitcreator CFLAGS=-DUSE_TERMIOS=1 -host=mipsel-linux-uclibc

	6. Compile a 64-bit Tclkit 8.5.8 using SunStudio 12.1 on Solaris/x86:
		a. $ CC='/opt/sunstudio12.1/bin/cc -m64'
		b. $ CXX='/opt/sunstudio12.1/bin/CC -m64'
		c. $ PATCH='gpatch'
		c. $ export CC CXX PATCH
		d. $ ./kitcreator 8.5.8 --enable-64bit

	7. To clean up post-build:
		a. $ ./kitcreator clean

	8. Create a Tclkit without Metakit4 support (falls back to Zip for storage):
		a. KITCREATOR_PKGS='tk itcl'
		b. export KITCREATOR_PKGS







|




|







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
			v.   $ export CC CXX AR RANLIB
			vi.  $ ./kitcreator --host=mipsel-linux-uclibc
	   Note: When cross-compiling, the Tcl configure script may be unable
	   to determine which serial support method to use. If you want serial
	   support in a cross-compiled tclkit, specify it manually, e.g.:
		$ ./kitcreator CFLAGS=-DUSE_TERMIOS=1 -host=mipsel-linux-uclibc

	6. Compile a 64-bit Tclkit 8.5.15 using SunStudio 12.1 on Solaris/x86:
		a. $ CC='/opt/sunstudio12.1/bin/cc -m64'
		b. $ CXX='/opt/sunstudio12.1/bin/CC -m64'
		c. $ PATCH='gpatch'
		c. $ export CC CXX PATCH
		d. $ ./kitcreator 8.5.15 --enable-64bit

	7. To clean up post-build:
		a. $ ./kitcreator clean

	8. Create a Tclkit without Metakit4 support (falls back to Zip for storage):
		a. KITCREATOR_PKGS='tk itcl'
		b. export KITCREATOR_PKGS

Modified build/test/test from [7efabc4a20] to [b14ccbc368].

1
2
3
4
5
6
7
8
9
10
#! /bin/bash

VERSIONS="8.5.14 8.6.0 cvs_HEAD"

# Find the base directory
for x in 1 2 3 4 __fail__; do
	if [ "${x}" = "__fail__" ]; then
		echo 'Unable to find KitCreator, aborting.' >&2

		exit 1


|







1
2
3
4
5
6
7
8
9
10
#! /bin/bash

VERSIONS="8.5.15 8.6.1 cvs_HEAD"

# Find the base directory
for x in 1 2 3 4 __fail__; do
	if [ "${x}" = "__fail__" ]; then
		echo 'Unable to find KitCreator, aborting.' >&2

		exit 1

Modified kitcreator from [f33d7d8aef] to [e99d7e9821].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#! /usr/bin/env bash

# Determine appropriate mode
mode="build"
case "$1" in
	clean|distclean|build|retry)
		mode="$1"
		shift
		;;
esac

# Determine which Tcl version to build
TCLVERS="8.5.14"
if echo "$1" | grep '^[0-9][0-9]*\.' >/dev/null || echo "$1" | egrep '^(cvs|fossil)_' >/dev/null; then
	TCLVERS="$1"

	shift
fi
export TCLVERS













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#! /usr/bin/env bash

# Determine appropriate mode
mode="build"
case "$1" in
	clean|distclean|build|retry)
		mode="$1"
		shift
		;;
esac

# Determine which Tcl version to build
TCLVERS="8.6.1"
if echo "$1" | grep '^[0-9][0-9]*\.' >/dev/null || echo "$1" | egrep '^(cvs|fossil)_' >/dev/null; then
	TCLVERS="$1"

	shift
fi
export TCLVERS

Modified kitsh/buildsrc/kitsh-0.0/installvfs.tcl from [b17724e7c3] to [5bb6ad9ccb].

94
95
96
97
98
99
100





101
102
103
104
105
106
107
108
		vfs::unmount /kit
	}
	"zip" {
		set kitfd [open $kitfile a+]
		fconfigure $kitfd -translation binary

		cd $vfsdir





		set zipfd [open "|zip -r - [glob *] 2> /dev/null"]
		fconfigure $zipfd -translation binary

		fcopy $zipfd $kitfd

		close $kitfd
		if {[catch {
			close $zipfd







>
>
>
>
>
|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
		vfs::unmount /kit
	}
	"zip" {
		set kitfd [open $kitfile a+]
		fconfigure $kitfd -translation binary

		cd $vfsdir
		if {$tcl_platform(platform) eq "windows"} {
			set null NUL
		} else {
			set null /dev/null
		}
		set zipfd [open "|zip -r - [glob *] 2> $null"]
		fconfigure $zipfd -translation binary

		fcopy $zipfd $kitfd

		close $kitfd
		if {[catch {
			close $zipfd

Added tcl/patches/all/tcl-all-fix-stat64-bug2233954-mingw.diff version [7ba98178f8].

























>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
diff -uNr Tcl_Source_Code-e7b4aca82756056a/generic/tcl.h Tcl_Source_Code-e7b4aca82756056a-bug2233954/generic/tcl.h
--- Tcl_Source_Code-e7b4aca82756056a/generic/tcl.h	2012-02-11 07:44:35.000000000 -0800
+++ Tcl_Source_Code-e7b4aca82756056a-bug2233954/generic/tcl.h	2012-02-14 07:29:01.000000000 -0800
@@ -454,6 +454,8 @@
 	typedef struct __stat64 Tcl_StatBuf;
 #   elif (defined(_MSC_VER) && (_MSC_VER < 1400)) || defined(_USE_32BIT_TIME_T)
 	typedef struct _stati64	Tcl_StatBuf;
+#   elif defined(__MINGW32_VERSION)
+	typedef struct _stati64	Tcl_StatBuf;
 #   else
 	typedef struct _stat32i64 Tcl_StatBuf;
 #   endif /* _MSC_VER < 1400 */

Modified tcl/patches/all/tcl-all-fix-stat64-bug2233954-newer.diff from [9340be2758] to [1be8821eac].

1
2
3
4
5
6
7
8
9
10
11
12
13
diff -uNr tclfossil_trunk.orig//generic/tcl.h tclfossil_trunk-1rsk//generic/tcl.h
--- tclfossil_trunk.orig//generic/tcl.h	2012-05-04 16:11:58.000000000 -0500
+++ tclfossil_trunk-1rsk//generic/tcl.h	2012-05-06 17:33:17.487466336 -0500
@@ -475,6 +475,9 @@
 	/* Here is a 4-byte gap */
     } Tcl_StatBuf;
 #elif defined(HAVE_STRUCT_STAT64)
+#     ifdef HAVE_SYS_STAT_H
+#       include <sys/stat.h>
+#     endif
     typedef struct stat64 Tcl_StatBuf;
 #else
     typedef struct stat Tcl_StatBuf;






|






1
2
3
4
5
6
7
8
9
10
11
12
13
diff -uNr tclfossil_trunk.orig//generic/tcl.h tclfossil_trunk-1rsk//generic/tcl.h
--- tclfossil_trunk.orig//generic/tcl.h	2012-05-04 16:11:58.000000000 -0500
+++ tclfossil_trunk-1rsk//generic/tcl.h	2012-05-06 17:33:17.487466336 -0500
@@ -475,6 +475,9 @@
 	/* Here is a 4-byte gap */
     } Tcl_StatBuf;
 #elif defined(HAVE_STRUCT_STAT64) && !defined(__APPLE__)
+#     ifdef HAVE_SYS_STAT_H
+#       include <sys/stat.h>
+#     endif
     typedef struct stat64 Tcl_StatBuf;
 #else
     typedef struct stat Tcl_StatBuf;