Check-in [eb6f15ad72]
Overview
Comment:Updated to use dladdr() to find ourselves if possible
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: eb6f15ad72953de5a8610de49dde60f2515344a9
User & Date: rkeene on 2010-09-26 04:50:05
Other Links: manifest | tags
Context
2010-09-26
04:50
Updated to not remove EXTRA_OBJS when `clean' target called check-in: a4e97ccf7b user: rkeene tags: trunk
04:50
Updated to use dladdr() to find ourselves if possible check-in: eb6f15ad72 user: rkeene tags: trunk
04:50
Updated to load boot.tcl in new interpreters, issue with previous workaround and fixing creating new interpreters check-in: d5bcf0ec06 user: rkeene tags: trunk
Changes

Modified kitsh/buildsrc/kitsh-0.0/Makefile.in from [c486d97051] to [60aec6b7f1].

1
2
3
4


5
6
7
8
9
10
11
1
2


3
4
5
6
7
8
9
10
11


-
-
+
+







CC = @CC@
RC = @RC@
CFLAGS = @CFLAGS@ @DEFS@ -DSTDC_HEADERS=1 -DTK_LOCAL_APPINIT=TclKit_AppInit
CPPFLAGS = @CPPFLAGS@ @DEFS@ -DSTDC_HEADERS=1 -DTK_LOCAL_APPINIT=TclKit_AppInit
CFLAGS = @CFLAGS@ @DEFS@ -DTK_LOCAL_APPINIT=TclKit_AppInit
CPPFLAGS = @CPPFLAGS@ @DEFS@ -DTK_LOCAL_APPINIT=TclKit_AppInit
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
ARCHS = @ARCHS@
OBJS = kitInit.o main.o pwb.o rechan.o zlib.o winMain.o @EXTRA_OBJS@

all: kit

Modified kitsh/buildsrc/kitsh-0.0/configure.ac from [442f0e7737] to [a3f511626a].

37
38
39
40
41
42
43




44
45

46
47
48
49
50
51
52
37
38
39
40
41
42
43
44
45
46
47
48

49
50
51
52
53
54
55
56







+
+
+
+

-
+







LIBS="${ARCHS} ${LIBS}"
dnl Determine if we have "Tcl_SetStartupScript" (8.6.x) or "TclSetStartupScriptPath" (8.4.x)
AC_CHECK_FUNCS(Tcl_SetStartupScript TclSetStartupScriptPath)
dnl Check for the ability to get the current system encoding
AC_CHECK_FUNCS(Tcl_GetEncodingNameFromEnvironment Tcl_SetSystemEncoding)
LIBS="${SAVE_LIBS}"

dnl Check for optional headers
AC_HEADER_STDC
AC_CHECK_HEADERS(unistd.h dlfcn.h)

dnl Check for optional system calls
AC_CHECK_FUNCS(readlink)
AC_CHECK_FUNCS(readlink dladdr)

dnl Find zlib
AC_ARG_WITH(zlib, AC_HELP_STRING([--with-zlib], [directory containing zlib]), [
	CPPFLAGS="${CPPFLAGS} -I${with_zlib}/include -I${with_zlib}"
	CFLAGS="${CFLAGS} -I${with_zlib}/include -I${with_zlib}"
	LDFLAGS="${LDFLAGS} -L${with_zlib}/lib -L${with_zlib}"
])

Modified kitsh/buildsrc/kitsh-0.0/kitInit.c from [0506bc15b0] to [bab566bd8a].

28
29
30
31
32
33
34











35
36
37
38
39
40
41
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52







+
+
+
+
+
+
+
+
+
+
+







#endif /* _WIN32 */

#ifndef MB_TASKMODAL
#  define MB_TASKMODAL 0
#endif /* MB_TASKMODAL */

#include "tclInt.h"

#ifdef HAVE_UNISTD_H
#  include <unistd.h>
#endif
#ifdef HAVE_DLADDR
#  ifdef HAVE_DLFCN_H
#    include <dlfcn.h>
#  else
#    undef HAVE_DLADDR
#  endif
#endif

#if defined(HAVE_TCL_GETENCODINGNAMEFROMENVIRONMENT) && defined(HAVE_TCL_SETSYSTEMENCODING)
#  define TCLKIT_CAN_SET_ENCODING 1
#endif
#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 85
#  define TCLKIT_REQUIRE_TCLEXECUTABLENAME 1
#endif
191
192
193
194
195
196
197
198

199
200
201
202





203

204
205
206
207
208
209
210
211
212
213
214
215
216
217









218

219
220
221
222
223
224
225
202
203
204
205
206
207
208

209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243

244
245
246
247
248
249
250
251







-
+




+
+
+
+
+

+














+
+
+
+
+
+
+
+
+
-
+







	return;
}

static void FindAndSetExecName(Tcl_Interp *interp) {
	int len = 0;
	Tcl_Obj *execNameObj;
	Tcl_Obj *lobjv[1];
#if defined(HAVE_READLINK)
#ifdef HAVE_READLINK
	ssize_t readlink_ret;
	char procpath[4096];
	char exe_buf[4096];
	int snprintf_ret;
#endif /* HAVE_READLINK */
#ifdef HAVE_DLADDR
	Dl_info syminfo;
	int dladdr_ret;
#endif /* HAVE_DLADDR */

#ifdef HAVE_READLINK
	if (Tcl_GetNameOfExecutable() == NULL) {
		snprintf_ret = snprintf(procpath, sizeof(procpath), "/proc/%lu/exe", (unsigned long) getpid());
		if (snprintf_ret < sizeof(procpath)) {
			readlink_ret = readlink(procpath, exe_buf, sizeof(exe_buf) - 1);

			if (readlink_ret > 0 && readlink_ret < (sizeof(exe_buf) - 1)) {
				exe_buf[readlink_ret] = '\0';

				SetExecName(interp, exe_buf);

				return;
			}
		}
	}
#endif /* HAVE_READLINK */

#ifdef HAVE_DLADDR
	if (Tcl_GetNameOfExecutable() == NULL) {
		dladdr_ret = dladdr(&SetExecName, &syminfo);
		if (dladdr_ret != 0) {
			SetExecName(interp, syminfo.dli_fname);
		}
	}
#endif
#endif /* HAVE_DLADDR */

	if (Tcl_GetNameOfExecutable() == NULL) {
		lobjv[0] = Tcl_GetVar2Ex(interp, "argv0", NULL, TCL_GLOBAL_ONLY);
		execNameObj = Tcl_FSJoinToPath(Tcl_FSGetCwd(interp), 1, lobjv);

		SetExecName(interp, Tcl_GetStringFromObj(execNameObj, &len));