Overview
Comment: | Updated to support Registry and DDE packages on Win32, and to support the
Thread package
Added support for exporting all symbols to the DLL on Win32 |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: | d90313734713f97043aab9718899d24311e2bec9 |
User & Date: | rkeene on 2010-09-30 08:20:13 |
Original Comment: | Updated to support Registry and DDE packages on Win32, and to support the Thread package |
Other Links: | manifest | tags |
Context
2010-09-30
| ||
08:26 | Renamed KitDLL library from libtcl to libtclkit check-in: bec59f252e user: rkeene tags: trunk | |
08:20 |
Updated to support Registry and DDE packages on Win32, and to support the
Thread package
Added support for exporting all symbols to the DLL on Win32 check-in: d903137347 user: rkeene tags: trunk | |
08:16 | Updated to copy all KitDLL related files to build directory check-in: 256ca73ea3 user: rkeene tags: trunk | |
Changes
Modified kitdll/build.sh from [d547391b05] to [1a4467c4d3].
20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
rm -rf 'build' 'out' 'inst' mkdir 'out' 'inst' || exit 1 ( cp -r 'buildsrc' 'build' cd "${BUILDDIR}" || exit 1 # Determine how we invoke a Tcl interpreter for testsh in "${TCLSH_NATIVE:-false}" "${TCLKIT:-tclkit}"; do if echo 'exit 0' | "${testsh}" >/dev/null 2>/dev/null; then TCLSH_NATIVE="${testsh}" break |
> > > > > > > > > > > > > > > > > > > > > > > |
20 21 22 23 24 25 26 27 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 53 54 55 56 |
rm -rf 'build' 'out' 'inst' mkdir 'out' 'inst' || exit 1 ( cp -r 'buildsrc' 'build' cd "${BUILDDIR}" || exit 1 # Fix up archives that Tcl gets wrong for archive in ../../../tcl/inst/lib/dde*/tcldde*.a ../../../tcl/inst/lib/reg*/tclreg*.a; do if [ ! -f "${archive}" ]; then continue fi rm -rf __TEMP__ ( mkdir __TEMP__ || exit 1 cd __TEMP__ ## Patch archive name archive="../${archive}" "${AR:-ar}" x "${archive}" || exit 1 rm -f "${archive}" "${AR:-ar}" cr "${archive}" *.o || exit 1 "${RANLIB:-ranlib}" "${archive}" || true ) done # Determine how we invoke a Tcl interpreter for testsh in "${TCLSH_NATIVE:-false}" "${TCLKIT:-tclkit}"; do if echo 'exit 0' | "${testsh}" >/dev/null 2>/dev/null; then TCLSH_NATIVE="${testsh}" break |
Modified kitdll/buildsrc/kitdll-0.0/Makefile.in from [8e72ba30c3] to [b7e9c6382e].
1
2
3
4
5
6
7
8
9
10
11
12
13
14
..
24
25
26
27
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
53
|
CC = @CC@ CFLAGS = @CFLAGS@ @SHOBJFLAGS@ -Wall CPPFLAGS = @CPPFLAGS@ @DEFS@ -DKITDLL_MAKE_LOADABLE=1 LDFLAGS = @LDFLAGS@ SHOBJLDFLAGS = @SHOBJLDFLAGS@ LIBS = @LIBS@ STATICLIBS = @TCL_LIB_SPEC@ @ARCHS@ OBJS = vfs_kitdll_data_tcl.o kitInit.o rechan.o pwb.o TCLSH_NATIVE = tclsh # Default target all: libtcl.@SHOBJEXT@ # Build targets ................................................................................ ## Extensions rechan.o: rechan.c pwb.o: pwb.c ## DLL Build libtcl.@SHOBJEXT@: $(OBJS) $(CC) $(CPPFLAGS) $(CFLAGS) -o libtcl.so $(OBJS) $(LDFLAGS) $(SHOBJLDFLAGS) -Wl,--whole-archive $(STATICLIBS) -Wl,--no-whole-archive $(LIBS) # Test driver tclsh.o: tclsh.c tclsh: tclsh.o libtcl.@SHOBJEXT@ $(CC) $(CPPFLAGS) $(CFLAGS) -o tclsh tclsh.o -L. -ltcl -Wl,-R,`pwd` # Cleanup routeines clean: rm -f libtcl.so rm -f $(OBJS) rm -f vfs_kitdll_data_tcl.c rm -f vfs_kitdll.tcl.h rm -f tclsh.o tclsh distclean: clean rm -f config.status config.log rm -f *~ rm -f Makefile mrproper: distclean .PHONY: all clean distclean |
|
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
..
24
25
26
27
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
53
|
CC = @CC@ CFLAGS = @CFLAGS@ @SHOBJFLAGS@ -Wall CPPFLAGS = @CPPFLAGS@ @DEFS@ -DKITDLL_MAKE_LOADABLE=1 LDFLAGS = @LDFLAGS@ SHOBJLDFLAGS = @SHOBJLDFLAGS@ LIBS = @LIBS@ STATICLIBS = @ARCHS@ OBJS = vfs_kitdll_data_tcl.o kitInit.o rechan.o pwb.o TCLSH_NATIVE = tclsh # Default target all: libtcl.@SHOBJEXT@ # Build targets ................................................................................ ## Extensions rechan.o: rechan.c pwb.o: pwb.c ## DLL Build libtcl.@SHOBJEXT@: $(OBJS) $(CC) $(CPPFLAGS) $(CFLAGS) -o libtcl.@SHOBJEXT@ $(OBJS) $(LDFLAGS) $(SHOBJLDFLAGS) -Wl,--whole-archive $(STATICLIBS) -Wl,--no-whole-archive $(LIBS) # Test driver tclsh.o: tclsh.c tclsh: tclsh.o libtcl.@SHOBJEXT@ $(CC) $(CPPFLAGS) $(CFLAGS) -o tclsh tclsh.o -L. -ltcl -Wl,-R,`pwd` # Cleanup routeines clean: rm -f libtcl.@SHOBJEXT@ rm -f $(OBJS) rm -f vfs_kitdll_data_tcl.c rm -f vfs_kitdll.tcl.h rm -f tclsh.o tclsh distclean: clean rm -f config.status config.log rm -f *~ rm -f Makefile mrproper: distclean .PHONY: all clean distclean |
Modified kitdll/buildsrc/kitdll-0.0/aclocal.m4 from [d62a4ca24d] to [e402deb226].
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
...
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
|
;;
hpux*)
SHOBJEXT="sl"
;;
mingw*)
SHOBJEXT="dll"
SHOBJFLAGS="-mno-cygwin -mms-bitfields -DPIC"
SHOBJLDFLAGS='-shared -Wl,--dll -Wl,--enable-auto-image-base -Wl,--output-def,$[@].def,--out-implib,$[@].a'
;;
esac
])
AC_DEFUN(DC_DO_TCL, [
AC_MSG_CHECKING([path to tcl])
AC_ARG_WITH(tcl, AC_HELP_STRING([--with-tcl], [directory containing tcl configuration (tclConfig.sh)]), [], [
................................................................................
;;
esac
])
AC_DEFUN(DC_FIND_TCLKIT_LIBS, [
DC_SETUP_TCL_PLAT_DEFS
for proj in tclvfs; do
AC_MSG_CHECKING([for libraries required for ${proj}])
libdir="../../../${proj}/inst"
libfiles="`find "${libdir}" -name '*.a' 2>/dev/null | tr "\n" ' '`"
libfilesnostub="`find "${libdir}" -name '*.a' 2>/dev/null | grep -v 'stub' | tr "\n" ' '`"
ARCHS="${ARCHS} ${libfiles}"
AC_MSG_RESULT([${libfiles}])
done
AC_SUBST(ARCHS)
])
|
|
|
>
>
>
>
|
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
...
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
|
;; hpux*) SHOBJEXT="sl" ;; mingw*) SHOBJEXT="dll" SHOBJFLAGS="-mno-cygwin -mms-bitfields -DPIC" SHOBJLDFLAGS='-shared -Wl,--dll -Wl,--enable-auto-image-base -Wl,--output-def,$[@].def,--out-implib,$[@].a -Wl,--export-all-symbols -Wl,--add-stdcall-alias' ;; esac ]) AC_DEFUN(DC_DO_TCL, [ AC_MSG_CHECKING([path to tcl]) AC_ARG_WITH(tcl, AC_HELP_STRING([--with-tcl], [directory containing tcl configuration (tclConfig.sh)]), [], [ ................................................................................ ;; esac ]) AC_DEFUN(DC_FIND_TCLKIT_LIBS, [ DC_SETUP_TCL_PLAT_DEFS for proj in tcl tclvfs; do AC_MSG_CHECKING([for libraries required for ${proj}]) libdir="../../../${proj}/inst" libfiles="`find "${libdir}" -name '*.a' 2>/dev/null | tr "\n" ' '`" libfilesnostub="`find "${libdir}" -name '*.a' 2>/dev/null | grep -v 'stub' | tr "\n" ' '`" if test "$proj" = "tcl"; then libfiles="${libfilesnostub}" fi ARCHS="${ARCHS} ${libfiles}" AC_MSG_RESULT([${libfiles}]) done AC_SUBST(ARCHS) ]) |
Modified kitdll/buildsrc/kitdll-0.0/kitInit.c from [9b8845772e] to [891f640ccd].
9 10 11 12 13 14 15 16 17 18 19 20 21 22 .. 25 26 27 28 29 30 31 32 33 34 35 36 37 38 .. 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
#endif Tcl_AppInitProc Vfs_Init, Rechan_Init; Tcl_AppInitProc Vfs_kitdll_data_tcl_Init; #ifdef KIT_INCLUDES_PWB Tcl_AppInitProc Pwb_Init; #endif static char *preInitCmd = "proc tclKitInit {} {\n" "rename tclKitInit {}\n" "load {} tclkit::init\n" "load {} rechan\n" "load {} vfs\n" ................................................................................ "vfs::kitdll::Mount tcl /.KITDLL_TCL\n" "set f [open \"/.KITDLL_TCL/boot.tcl\"]\n" "set s [read $f]\n" "close $f\n" "::tclkit::init::initInterp\n" "rename ::tclkit::init::initInterp {}\n" "uplevel #0 $s\n" "}\n" "tclKitInit"; static int tclkit_init_initinterp(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { #ifdef _WIN32 Tcl_SetVar(interp, "tcl_rcFileName", "~/tclkitrc.tcl", TCL_GLOBAL_ONLY); #else ................................................................................ void __attribute__((constructor)) _Tclkit_Init(void) { Tcl_StaticPackage(0, "tclkit::init", Tclkit_init_Init, NULL); Tcl_StaticPackage(0, "rechan", Rechan_Init, NULL); Tcl_StaticPackage(0, "vfs", Vfs_Init, NULL); Tcl_StaticPackage(0, "vfs_kitdll_data_tcl", Vfs_kitdll_data_tcl_Init, NULL); #ifdef KIT_INCLUDES_PWB Tcl_StaticPackage(0, "pwb", Pwb_Init, NULL); #endif TclSetPreInitScript(preInitCmd); return; } |
> > > > > > > > > > | | > > > > > > > |
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 .. 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 .. 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
#endif Tcl_AppInitProc Vfs_Init, Rechan_Init; Tcl_AppInitProc Vfs_kitdll_data_tcl_Init; #ifdef KIT_INCLUDES_PWB Tcl_AppInitProc Pwb_Init; #endif #ifdef TCL_THREADS Tcl_AppInitProc Thread_Init; #endif #ifdef _WIN32 Tcl_AppInitProc Dde_Init, Registry_Init; #endif static char *preInitCmd = "proc tclKitInit {} {\n" "rename tclKitInit {}\n" "load {} tclkit::init\n" "load {} rechan\n" "load {} vfs\n" ................................................................................ "vfs::kitdll::Mount tcl /.KITDLL_TCL\n" "set f [open \"/.KITDLL_TCL/boot.tcl\"]\n" "set s [read $f]\n" "close $f\n" "::tclkit::init::initInterp\n" "rename ::tclkit::init::initInterp {}\n" "uplevel #0 $s\n" #ifdef _WIN32 "catch {load {} dde}\n" "catch {load {} registry}\n" #endif /* _WIN32 */ "}\n" "tclKitInit"; static int tclkit_init_initinterp(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { #ifdef _WIN32 Tcl_SetVar(interp, "tcl_rcFileName", "~/tclkitrc.tcl", TCL_GLOBAL_ONLY); #else ................................................................................ void __attribute__((constructor)) _Tclkit_Init(void) { Tcl_StaticPackage(0, "tclkit::init", Tclkit_init_Init, NULL); Tcl_StaticPackage(0, "rechan", Rechan_Init, NULL); Tcl_StaticPackage(0, "vfs", Vfs_Init, NULL); Tcl_StaticPackage(0, "vfs_kitdll_data_tcl", Vfs_kitdll_data_tcl_Init, NULL); #ifdef KIT_INCLUDES_PWB Tcl_StaticPackage(0, "pwb", Pwb_Init, NULL); #endif #ifdef TCL_THREADS Tcl_StaticPackage(0, "Thread", Thread_Init, NULL); #endif #ifdef _WIN32 Tcl_StaticPackage(0, "dde", Dde_Init, NULL); Tcl_StaticPackage(0, "registry", Registry_Init, NULL); #endif TclSetPreInitScript(preInitCmd); return; } |