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: |
d90313734713f97043aab9718899d243 |
| 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 | CC = @CC@ CFLAGS = @CFLAGS@ @SHOBJFLAGS@ -Wall CPPFLAGS = @CPPFLAGS@ @DEFS@ -DKITDLL_MAKE_LOADABLE=1 LDFLAGS = @LDFLAGS@ SHOBJLDFLAGS = @SHOBJLDFLAGS@ LIBS = @LIBS@ | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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 |
| ︙ | ︙ | |||
24 25 26 27 28 29 30 | ## Extensions rechan.o: rechan.c pwb.o: pwb.c ## DLL Build libtcl.@SHOBJEXT@: $(OBJS) | | | | 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 | ## 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 |
;;
hpux*)
SHOBJEXT="sl"
;;
mingw*)
SHOBJEXT="dll"
SHOBJFLAGS="-mno-cygwin -mms-bitfields -DPIC"
| | | 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
;;
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)]), [], [
|
| ︙ | ︙ | |||
215 216 217 218 219 220 221 | ;; esac ]) AC_DEFUN(DC_FIND_TCLKIT_LIBS, [ DC_SETUP_TCL_PLAT_DEFS | | > > > > | 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 |
;;
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 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#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"
"load {} vfs_kitdll_data_tcl\n"
#include "vfs_kitdll.tcl.h"
"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
| > > > > > > > > > > | 9 10 11 12 13 14 15 16 17 18 19 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 |
#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"
"load {} vfs_kitdll_data_tcl\n"
#include "vfs_kitdll.tcl.h"
"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
|
| ︙ | ︙ | |||
66 67 68 69 70 71 72 |
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
| | | > > > > > > > | 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
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;
}
|