Check-in [9fbb0ef3ca]
Overview
Comment:Fixed some bugs in cross-compile builds
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 9fbb0ef3cab68195e4f2cbe5038a3233b12d7c8c
User & Date: rkeene on 2011-09-10 22:29:21
Other Links: manifest | tags
Context
2011-09-11
23:59
Updated to CTk 8.0.2801 to fix issues with Tcl 8.6 check-in: c80dceaca0 user: rkeene tags: trunk
2011-09-10
22:29
Fixed some bugs in cross-compile builds check-in: 9fbb0ef3ca user: rkeene tags: trunk
22:28
Updated to use Tcl 8.5/8.4 depending on which is built Added script to cross-compile for various platforms check-in: fb61490a11 user: rkeene tags: trunk
Changes

Modified server/buildpkgs/build_all.sh from [feba34159a] to [5e7c9aafc7].

32
33
34
35
36
37
38
39

40
41
42
43
44
45
46
47
48
49
50
51



52
53
54
55
56
57
58
59
60
61
62
63

64

65
66
67






68
69
70
71
72
73
74
75


76








77
78

79
80
81
82
83
84
85
32
33
34
35
36
37
38

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

85
86
87
88
89
90
91
92
93
94
95
96

97
98
99
100
101
102
103
104







-
+












+
+
+












+
-
+



+
+
+
+
+
+







-
+
+

+
+
+
+
+
+
+
+

-
+







	rm -rf tcl
fi

if [ "${CLEANONLY}" = "0" ]; then
	PROJROOTDIR="$(pwd)"
	export PROJROOTDIR

	for TCLVERS in 8.5.9 8.4.19; do
	for TCLVERS in 8.5.10 8.4.19; do
		TCLSHORTVERS="$(echo "${TCLVERS}" | cut -f 1-2 -d '.')"
		TCLPRIVATE="$(pwd)/tcl/build/tcl${TCLVERS}"
		TCLINSTDIR="$(pwd)/tcl/inst-${TCLSHORTVERS}"
		export TCLVERS TCLPRIVATE TCLINSTDIR

		if [ -f "${TCLINSTDIR}/lib/tclConfig.sh" ]; then
			echo "Skipping build of Tcl ${TCLVERS} (already found)"

			continue
		fi

		mkdir tcl tcl/build >/dev/null 2>/dev/null

		# Clean this up so that other platforms don't use it
		rm -f "${PROJROOTDIR}/platform.magic.dir"

		if [ ! -f "tcl/src/tcl${TCLVERS}.tar.gz" ]; then
			mkdir tcl/src >/dev/null 2>/dev/null
			wget -o /dev/null -O "tcl/src/tcl${TCLVERS}.tar.gz" "http://prdownloads.sourceforge.net/tcl/tcl${TCLVERS}-src.tar.gz"
		fi

		echo "Building Tcl ${TCLVERS}"
		(
			mkdir tcl/build >/dev/null 2>/dev/null
			cd tcl/build || exit 1
			gzip -dc "../src/tcl${TCLVERS}.tar.gz" | tar -xf -

			# Source fix-ups
			# DDE and Reg can fail to compile, but we don't care
			## DDE and Reg can fail to compile, but we don't care
			echo '' > "${TCLPRIVATE}/win/tclWinDde.c"
			echo '' > "${TCLPRIVATE}/win/tclWinReg.c"

			## Long-standing bug in Tcl
			echo '#undef strtod' > "${TCLPRIVATE}/compat/strtod.c.new"
			cat "${TCLPRIVATE}/compat/strtod.c" >> "${TCLPRIVATE}/compat/strtod.c.new"
			cat "${TCLPRIVATE}/compat/strtod.c.new" > "${TCLPRIVATE}/compat/strtod.c"
			rm -f "${TCLPRIVATE}/compat/strtod.c.new"

			for dir in unix win macosx; do
				cd "${TCLPRIVATE}/${dir}" || exit 1

				echo " Executing: ./configure --enable-threads ${CONFIGUREEXTRA} --prefix=\"${TCLINSTDIR}\""
				./configure --enable-threads ${CONFIGUREEXTRA} --prefix="${TCLINSTDIR}"

				echo " Executing: ${MAKE:-make}"
				${MAKE:-make} || continue
				${MAKE:-make} || (
					rm -f tclConfig.sh

					exit 1
				) || continue

				## Kludge to make Tcl install when cross-compiling.
				sed 's@^${TCL_EXE}@blah@' Makefile > Makefile.new
				cat Makefile.new > Makefile
				rm -f Makefile.new

				echo " Executing: ${MAKE:-make} install"
				${MAKE:-make} install || break
				${MAKE:-make} install TCL_EXE="../../../../../../../../../../../../../../../../../$(which "${TCLSH_NATIVE:-tclsh}")" || break

				LD_LIBRARY_PATH=".:${LD_LIBRARY_PATH}"
				LD_RUN_PATH=".:${LD_RUN_PATH}"
				export LD_LIBRARY_PATH LD_RUN_PATH

				file tclsh tclsh*.exe 2>/dev/null | grep -iv 'No such file' > "${PROJROOTDIR}/platform.magic.file"
				if [ -f tclsh*.exe ]; then
98
99
100
101
102
103
104


105
106




107
108
109
110
111
112
113
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138







+
+


+
+
+
+







			echo "Failed to build Tcl.  See \"./tcl/build/build-${TCLVERS}.log\"" >&2
			echo 'Aborting.' >&2

			exit 1
		) || exit 1

		(
			rm -f "${PROJROOTDIR}/platform.magic.env-${TCLSHORTVERS}"

			TCLBUILDDIR="$(cat "${PROJROOTDIR}/platform.magic.dir")"
			export TCLBUILDDIR

			if [ -z "${TCLBUILDDIR}" ]; then
				TCLBUILDDIR="/dev/null"
			fi

			if [ -d "${TCLINSTDIR}" -a -f "${TCLINSTDIR}/lib/tclConfig.sh" ]; then
				TCLCONFIGDIR="${TCLINSTDIR}/lib"
			elif [ -d "${TCLBUILDDIR}" -a -f "${TCLBUILDDIR}/tclConfig.sh" ]; then
				TCLCONFIGDIR="${TCLBUILDDIR}"
			else
				echo 'Unable to find appropriate tclConfig.sh, aborting' >&2