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
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)
		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.5.14
	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.8:
		a. $ ./kitcreator 8.5.8
	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
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:
	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.8 --enable-64bit
		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
1
2

3
4
5
6
7
8
9
10


-
+







#! /bin/bash

VERSIONS="8.5.14 8.6.0 cvs_HEAD"
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
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"
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
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> /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
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)
 #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;