Overview
Comment: | Merged in support for creating a static KitDLL |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: | 3fc6a2107a69003c949af4bf9a4e160c6ccb20d1 |
User & Date: | rkeene on 2016-02-24 20:52:23 |
Other Links: | manifest | tags |
Context
2016-02-24
| ||
21:45 | Corrected an issue where the KitDLL file cannot be located cause initialization to fail check-in: 9c7bd6cad1 user: rkeene tags: trunk | |
20:52 | Merged in support for creating a static KitDLL check-in: 3fc6a2107a user: rkeene tags: trunk | |
20:41 | Create a Tcl_Init() symbol if we are creating a static libtclkit Closed-Leaf check-in: e6ab988ad4 user: rkeene tags: feature-kitdll-static | |
20:00 | Added Tcl 8.5.19 to the web interface check-in: f71b69d91f user: rkeene tags: trunk | |
Changes
Modified README from [c5d7d876b1] to [b457bfcb27].
142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
itcl thread 10. KC_TCL_STATICPKGS Set this variable to the value "1" to attempt to force the packages included in the "pkgs" directory of Tcl 8.6+ to be compiled statically Cross compiling Environment Variables: 1. CC C compiler e.g. i686-pc-mingw32-gcc 2. CXX |
> > > > > |
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
itcl thread 10. KC_TCL_STATICPKGS Set this variable to the value "1" to attempt to force the packages included in the "pkgs" directory of Tcl 8.6+ to be compiled statically 11. KITCREATOR_STATIC_KITDLL Set this variable to the value "1" to build a static KitDLL. This only has an affect when KITCREATOR_PKGS specifies that "kitdll" is to be built (e.g., KITCREATOR_PKGS='kitdll') Cross compiling Environment Variables: 1. CC C compiler e.g. i686-pc-mingw32-gcc 2. CXX |
Modified kitsh/build.sh from [fe33f09af3] to [cb53c1165d].
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
...
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
|
fi
# Cleanup
rm -f kit kit.exe tclsh tclsh.exe
# Determine if target is KitDLL or KitSH
if [ "${KITTARGET}" = "kitdll" ]; then
CONFIGUREEXTRA="${CONFIGUREEXTRA} --enable-kitdll"
fi
# Compile Kit
if [ -z "${ZLIBDIR}" ]; then
echo "Running: ./configure --with-tcl=\"${TCLCONFIGDIR}\" ${CONFIGUREEXTRA}"
./configure --with-tcl="${TCLCONFIGDIR}" ${CONFIGUREEXTRA}
................................................................................
if [ "${KITTARGET}" = "kitdll" ]; then
## Find the library created
for chkkittarget in libtclkit*.*; do
if [ ! -f "${chkkittarget}" ]; then
continue
fi
if echo "${chkkittarget}" | egrep '\.(lib|def|a)$'; then
continue
fi
KITTARGET_NAME="./${chkkittarget}"
break
done
|
>
>
>
|
>
|
|
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
...
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
|
fi # Cleanup rm -f kit kit.exe tclsh tclsh.exe # Determine if target is KitDLL or KitSH if [ "${KITTARGET}" = "kitdll" ]; then if [ "${KITCREATOR_STATIC_KITDLL}" = '1' ]; then CONFIGUREEXTRA="${CONFIGUREEXTRA} --enable-kitdll=static" else CONFIGUREEXTRA="${CONFIGUREEXTRA} --enable-kitdll" fi fi # Compile Kit if [ -z "${ZLIBDIR}" ]; then echo "Running: ./configure --with-tcl=\"${TCLCONFIGDIR}\" ${CONFIGUREEXTRA}" ./configure --with-tcl="${TCLCONFIGDIR}" ${CONFIGUREEXTRA} ................................................................................ if [ "${KITTARGET}" = "kitdll" ]; then ## Find the library created for chkkittarget in libtclkit*.*; do if [ ! -f "${chkkittarget}" ]; then continue fi if echo "${chkkittarget}" | egrep '\..*\.(lib|def|a)$'; then continue fi KITTARGET_NAME="./${chkkittarget}" break done |
Modified kitsh/buildsrc/kitsh-0.0/Makefile.common.in from [93d968f811] to [bfce9994ae].
12
13
14
15
16
17
18
19
20
21
22
23
24
25
..
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
EXTRA_OBJS = @EXTRA_OBJS@
LDRUNPATH = @LDRUNPATH@
EXTRA_KIT_DEPS = @EXTRA_KIT_DEPS@
EXTRA_VFS_OBJS = @EXTRA_VFS_OBJS@
TCLSH_NATIVE = tclsh
LDFLAGS_ADD = @LDFLAGS_ADD@
DIR2C_FLAGS = @DIR2C_FLAGS@
# Build targets
## VFS Build
cvfs_data_tcl.o: cvfs_data_tcl.c
cvfs_data_tcl.c: dir2c.tcl starpack.vfs cvfs_data.c
"$(TCLSH_NATIVE)" dir2c.tcl tcl starpack.vfs $(DIR2C_FLAGS) > cvfs_data_tcl.c
................................................................................
### Windows resources
kit.res.o: kit.rc tclkit.ico
$(RC) -o kit.res.o $(CPPFLAGS) kit.rc
# Cleanup routines
clean:
rm -f kit kit.res.o
rm -f libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@
rm -f $(OBJS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS)
rm -f cvfs_data_tcl.c cvfs_data_tcl.o
rm -f cvfs.tcl.h
rm -f tclsh.o tclsh tclsh.exe
rm -f wish.o wish wish.exe
|
>
>
>
|
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
..
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
EXTRA_OBJS = @EXTRA_OBJS@ LDRUNPATH = @LDRUNPATH@ EXTRA_KIT_DEPS = @EXTRA_KIT_DEPS@ EXTRA_VFS_OBJS = @EXTRA_VFS_OBJS@ TCLSH_NATIVE = tclsh LDFLAGS_ADD = @LDFLAGS_ADD@ DIR2C_FLAGS = @DIR2C_FLAGS@ AR = @AR@ RANLIB = @RANLIB@ # Build targets ## VFS Build cvfs_data_tcl.o: cvfs_data_tcl.c cvfs_data_tcl.c: dir2c.tcl starpack.vfs cvfs_data.c "$(TCLSH_NATIVE)" dir2c.tcl tcl starpack.vfs $(DIR2C_FLAGS) > cvfs_data_tcl.c ................................................................................ ### Windows resources kit.res.o: kit.rc tclkit.ico $(RC) -o kit.res.o $(CPPFLAGS) kit.rc # Cleanup routines clean: rm -rf __TMP__ rm -f kit kit.res.o rm -f libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ rm -f $(OBJS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) rm -f cvfs_data_tcl.c cvfs_data_tcl.o rm -f cvfs.tcl.h rm -f tclsh.o tclsh tclsh.exe rm -f wish.o wish wish.exe |
Modified kitsh/buildsrc/kitsh-0.0/Makefile.kitdll.in from [05829b4d07] to [6164206d04].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
OBJS = kitInit.o rechan.o pwb.o zlib.o # Default target all: libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ -include Makefile.common ## DLL Build libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@: $(OBJS) $(EXTRA_KIT_DEPS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) $(CC) $(CPPFLAGS) $(CFLAGS) -o libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ $(OBJS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) $(LDFLAGS) $(SHOBJLDFLAGS) @WHOLEARCHIVE@ $(ARCHS) @NOWHOLEARCHIVE@ $(LIBS) $(LDFLAGS_ADD) -for striplib in $(STRIPLIBS); do $(OBJCOPY) --weaken "$${striplib}"; done -mv libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@.safe; \ $(CC) $(CPPFLAGS) $(CFLAGS) -o libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ $(OBJS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) $(LDFLAGS) $(SHOBJLDFLAGS) @WHOLEARCHIVE@ $(ARCHS) @NOWHOLEARCHIVE@ $(LIBS) || \ mv libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@.safe libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ -rm -f libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@.safe # Test driver tclsh.o: tclsh.c tclsh: tclsh.o $(EXTRA_OBJS) libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ $(CC) $(CPPFLAGS) $(CFLAGS) -o tclsh tclsh.o $(EXTRA_OBJS) -L. -ltclkit@KITDLL_LIB_VERSION@ $(LDRUNPATH) wish.o: wish.c wish: wish.o $(EXTRA_OBJS) libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ $(CC) $(CPPFLAGS) $(CFLAGS) $(WISH_CFLAGS) -o wish wish.o $(EXTRA_OBJS) -L. -ltclkit@KITDLL_LIB_VERSION@ $(LDRUNPATH) |
| > > > > > > > > > > > > > > > | > > |
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 33 34 35 36 37 38 39 40 41 |
OBJS = kitInit.o rechan.o pwb.o zlib.o # Default target all: @TARGET@ -include Makefile.common kitdll: libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ kitdll-static: libtclkit@KITDLL_LIB_VERSION@.a ## DLL Build libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@: $(OBJS) $(EXTRA_KIT_DEPS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) $(CC) $(CPPFLAGS) $(CFLAGS) -o libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ $(OBJS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) $(LDFLAGS) $(SHOBJLDFLAGS) @WHOLEARCHIVE@ $(ARCHS) @NOWHOLEARCHIVE@ $(LIBS) $(LDFLAGS_ADD) -for striplib in $(STRIPLIBS); do $(OBJCOPY) --weaken "$${striplib}"; done -mv libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@.safe; \ $(CC) $(CPPFLAGS) $(CFLAGS) -o libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ $(OBJS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) $(LDFLAGS) $(SHOBJLDFLAGS) @WHOLEARCHIVE@ $(ARCHS) @NOWHOLEARCHIVE@ $(LIBS) || \ mv libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@.safe libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ -rm -f libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@.safe ## Static archive build libtclkit@KITDLL_LIB_VERSION@.a: $(OBJS) $(EXTRA_KIT_DEPS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) rm -f libtclkit@KITDLL_LIB_VERSION@.a.new rm -rf __TMP__ mkdir __TMP__ for arch in $(ARCHS); do ( cd __TMP__ && ar x ../$${arch} ); done $(OBJCOPY) --redefine-sym Tcl_Init=Tcl_InitReal __TMP__/tclInterp.o $(AR) cr libtclkit@KITDLL_LIB_VERSION@.a.new $(OBJS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) __TMP__/*.o rm -rf __TMP__ $(RANLIB) libtclkit@KITDLL_LIB_VERSION@.a.new mv libtclkit@KITDLL_LIB_VERSION@.a.new libtclkit@KITDLL_LIB_VERSION@.a # Test driver tclsh.o: tclsh.c tclsh: tclsh.o $(EXTRA_OBJS) @TARGET@ $(CC) $(CPPFLAGS) $(CFLAGS) -o tclsh tclsh.o $(EXTRA_OBJS) -L. -ltclkit@KITDLL_LIB_VERSION@ $(LDRUNPATH) wish.o: wish.c wish: wish.o $(EXTRA_OBJS) libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ $(CC) $(CPPFLAGS) $(CFLAGS) $(WISH_CFLAGS) -o wish wish.o $(EXTRA_OBJS) -L. -ltclkit@KITDLL_LIB_VERSION@ $(LDRUNPATH) .PHONY: kitdll kitdll-static |
Modified kitsh/buildsrc/kitsh-0.0/configure.ac from [42d57f3f66] to [77fa1a4052].
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
49
50
51
52
53
54
55
56
57
58
59
60
...
197
198
199
200
201
202
203
204
205
206
207
|
EXTRA_KIT_DEPS=""
AC_MSG_CHECKING([what target to build])
AC_ARG_ENABLE(kitdll, AC_HELP_STRING([--enable-kitdll], [Enable building KitDLL instead of Tclkit (default: no)]), [
AS_CASE([$enableval],
[yes|kitdll], [
TARGET="kitdll"
],
no, [
true
], [
AC_MSG_RESULT([unknown])
AC_MSG_ERROR([Invalid option: $enableval])
]
)
])
AC_MSG_RESULT([$TARGET])
dnl Find the appropriate libraries to link to
AC_SEARCH_LIBS(acos, m,, [ AC_MSG_WARN([Couldn't find acos (normally in libm)!]) ])
AC_SEARCH_LIBS(dlsym, dl,, [ AC_MSG_WARN([Couldn't find dlsym (normally in libdl)!]) ])
AS_IF([test "$TARGET" = "tclkit"], [
dnl We have Tclkit
dnl Specify local Appinit function
AC_DEFINE(TK_LOCAL_APPINIT, [TclKit_AppInit], [Tclkit appinit function])
], [
dnl We have KitDLL
dnl Determine system information
DC_CHK_OS_INFO
dnl Determine how to create a shared object
DC_GET_SHOBJFLAGS
dnl Determine if we have "objcopy" available to weaken non-Tcl/Tk symbols
AC_CHECK_TOOL(OBJCOPY, objcopy, [:])
dnl Define KitDLL usage
AC_DEFINE([TCLKIT_DLL], [1], [Define if you are using a KitDLL rather than a Tclkit])
])
dnl Figure out how to statically link to libgcc, if needed
DC_STATIC_LIBGCC
dnl Set linker rpath for tclsh/wish
DC_SETLDRUNPATH([.])
................................................................................
)
AC_SUBST(EXTRA_KIT_DEPS)
AC_SUBST(LDFLAGS_ADD)
dnl Put correct Makefile template in place
rm -f Makefile.in
cp Makefile.${TARGET}.in Makefile.in
dnl Produce output
AC_OUTPUT(Makefile Makefile.common)
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
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
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
...
212
213
214
215
216
217
218
219
220
221
222
|
EXTRA_KIT_DEPS="" AC_MSG_CHECKING([what target to build]) AC_ARG_ENABLE(kitdll, AC_HELP_STRING([--enable-kitdll], [Enable building KitDLL instead of Tclkit (default: no)]), [ AS_CASE([$enableval], [yes|kitdll], [ TARGET="kitdll" ], static, [ TARGET="kitdll-static" ], no, [ true ], [ AC_MSG_RESULT([unknown]) AC_MSG_ERROR([Invalid option: $enableval]) ] ) ]) AC_MSG_RESULT([$TARGET]) AC_SUBST(TARGET) dnl Find the appropriate libraries to link to AC_SEARCH_LIBS(acos, m,, [ AC_MSG_WARN([Couldn't find acos (normally in libm)!]) ]) AC_SEARCH_LIBS(dlsym, dl,, [ AC_MSG_WARN([Couldn't find dlsym (normally in libdl)!]) ]) AS_IF([test "$TARGET" = "tclkit"], [ dnl We have Tclkit TARGET_BASE='tclkit' dnl Specify local Appinit function AC_DEFINE(TK_LOCAL_APPINIT, [TclKit_AppInit], [Tclkit appinit function]) ], [ dnl We have KitDLL TARGET_BASE='kitdll' dnl Determine system information DC_CHK_OS_INFO dnl Determine how to create a shared object DC_GET_SHOBJFLAGS dnl Determine if we have "objcopy" available to weaken non-Tcl/Tk symbols AC_CHECK_TOOL(OBJCOPY, objcopy, [:]) dnl Define KitDLL usage AC_DEFINE([TCLKIT_DLL], [1], [Define if you are using a KitDLL rather than a Tclkit]) dnl Define a static KitDLL AS_IF([test "$TARGET" = "kitdll-static"], [ AC_CHECK_TOOL(RANLIB, [ranlib], [:]) AC_CHECK_TOOL(AR, [ar], [false MISSING AR]) AC_DEFINE([TCLKIT_DLL_STATIC], [1], [Define if you are building a static KitDLL]) ]) ]) dnl Figure out how to statically link to libgcc, if needed DC_STATIC_LIBGCC dnl Set linker rpath for tclsh/wish DC_SETLDRUNPATH([.]) ................................................................................ ) AC_SUBST(EXTRA_KIT_DEPS) AC_SUBST(LDFLAGS_ADD) dnl Put correct Makefile template in place rm -f Makefile.in cp Makefile.${TARGET_BASE}.in Makefile.in dnl Produce output AC_OUTPUT(Makefile Makefile.common) |
Modified kitsh/buildsrc/kitsh-0.0/kitInit.c from [3cb384a768] to [f888dda2c4].
567 568 569 570 571 572 573 574 575 576 577 578 579 |
* are ready to be used when invoked. */ #ifdef TCLKIT_DLL void __attribute__((constructor)) _Tclkit_Init(void) { #else static void _Tclkit_Init(void) { #endif Tcl_StaticPackage(0, "tclkit::init", Tclkit_init_Init, NULL); _Tclkit_Generic_Init(); return; } |
> > > > > > > > > > > > > > > > > > |
567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 |
* are ready to be used when invoked. */ #ifdef TCLKIT_DLL void __attribute__((constructor)) _Tclkit_Init(void) { #else static void _Tclkit_Init(void) { #endif static int called = 0; if (called) { return; } called = 1; Tcl_StaticPackage(0, "tclkit::init", Tclkit_init_Init, NULL); _Tclkit_Generic_Init(); return; } #if defined(TCLKIT_DLL) && defined(TCLKIT_DLL_STATIC) int Tcl_InitReal(Tcl_Interp *interp); int Tcl_Init(Tcl_Interp *interp) { _Tclkit_Init(); return(Tcl_InitReal(interp)); } #endif |