KitCreator , by Roy Keene, is a simple build system for creating a Tclkit or other basekit for your platform. It was created to ease creation of basekits for the local platform.
It will work for cross-compiling Tclkits if you bootstrap a local Tclkit first.
It is intended to resemble as closely as possible the authentic Tclkit.
What sets this project apart from other similar projects is that:
AMG: Is any work being done on getting recent versions of KitCreator to work with SunOS/Solaris? I'm going to need this.
Here are the current build failure logs: [L1 ] [L2 ]
kitsh/build.log:76:/home/rkeene/root/cross-compilers/sparc-sun-solaris2.8/bin/sparc-sun-solaris2.8-gcc -static-libgcc -I/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/inst/include -I/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/generic -I/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/win -I../../../tk/build/tk8.6.8/win/ -I/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tk/build/tk8.6.8/generic -I/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tk/build/tk8.6.8/xlib -I/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/zlib/inst/include -I/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/zlib/inst -I/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/inst/include -I/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/generic -I/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/win -I../../../tk/build/tk8.6.8/win/ -I/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tk/build/tk8.6.8/generic -I/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tk/build/tk8.6.8/xlib -I/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/zlib/inst/include -I/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/zlib/inst -DPACKAGE_NAME=\"kitsh\" -DPACKAGE_TARNAME=\"kitsh\" -DPACKAGE_VERSION=\"0.0\" -DPACKAGE_STRING=\"kitsh\ 0.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -D__EXTENSIONS__=1 -D_ALL_SOURCE=1 -D_GNU_SOURCE=1 -D_POSIX_PTHREAD_SEMANTICS=1 -D_TANDEM_SOURCE=1 -DTK_LOCAL_APPINIT=TclKit_AppInit -DKIT_INCLUDES_MK4TCL=1 -DKIT_INCLUDES_TK=1 -DKIT_TK_VERSION=\"8.6.8\" -DSTDC_HEADERS=1 -DHAVE_UNISTD_H=1 -DHAVE_STRING_H=1 -DHAVE_STRINGS_H=1 -DHAVE_DLFCN_H=1 -DKIT_STORAGE_MK4=1 -c -o kitInit.o kitInit.c kitsh/build.log:77:In file included from /var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/generic/tclInt.h:36:0, kitsh/build.log:78: from kitInit.c:33: kitsh/build.log:79:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/generic/tclPort.h:23:28: fatal error: tclUnixPort.h: No such file or directory [...] tcl/build.log:1186:/home/rkeene/root/cross-compilers/sparc-sun-solaris2.8/bin/sparc-sun-solaris2.8-gcc -static-libgcc -DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.21.0\" -DPACKAGE_STRING=\"sqlite\ 3.21.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DBUILD_sqlite=/\*\*/ -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DWORDS_BIGENDIAN=1 -DHAVE_LIMITS_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_THREAD_ALLOC=1 -D_REENTRANT=1 -D_THREAD_SAFE=1 -DTCL_THREADS=1 -DSQLITE_THREADSAFE=1 -DUSE_TCL_STUBS=1 -DUSE_TCLOO_STUBS=1 -DMODULE_SCOPE=extern\ __attribute__\(\(__visibility__\(\"hidden\"\)\)\) -DHAVE_HIDDEN=1 -DHAVE_CAST_TO_UNION=1 -DTCL_WIDE_INT_TYPE=long\ long -DHAVE_STRUCT_DIRENT64=1 -DHAVE_STRUCT_STAT64=1 -DHAVE_OPEN64=1 -DHAVE_LSEEK64=1 -DHAVE_TYPE_OFF64_T=1 -DUSE_TCL_STUBS=1 -DHAVE_MALLOC_H=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DHAVE_UTIME=1 -DHAVE_READLINK=1 -DHAVE_LSTAT=1 -DHAVE_PREAD=1 -DHAVE_PREAD64=1 -DHAVE_PWRITE=1 -DHAVE_PWRITE64=1 -DHAVE_DECL_STRERROR_R=0 -DSQLITE_ENABLE_DBSTAT_VTAB=1 -DSQLITE_ENABLE_FTS3_PARENTHESIS=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_FTS5=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_ENABLE_JSON1=1 -DSQLITE_3_SUFFIX_ONLY=1 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_UNTESTABLE=1 -DSQLITE_OMIT_DEPRECATED=1 -DSQLITE_OMIT_LOOKASIDE=1 -DSQLITE_SECURE_DELETE=1 -DSQLITE_SOUNDEX=1 -DSQLITE_USE_ALLOCA=1 -DSQLITE_WIN32_NO_ANSI=1 -DSQLITE_WIN32_GETVERSIONEX=0 -DSQLITE_API=MODULE_SCOPE -DSQLITE_EXTERN= -I"/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic" -I"/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/generic" -I/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/.. -pipe -O2 -fomit-frame-pointer -DNDEBUG -Wall -fPIC -c `echo /var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/tclsqlite3.c` -o tclsqlite3.o tcl/build.log:1187:In file included from /var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/tclsqlite3.c:4:0: tcl/build.log:1188:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:30874:42: error: 'pread64' undeclared here (not in a function) tcl/build.log:1189:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:30892:42: error: 'pwrite64' undeclared here (not in a function) tcl/build.log:1190:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:30899:42: error: 'fchmod' undeclared here (not in a function) tcl/build.log:1191:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:30922:42: error: 'fchown' undeclared here (not in a function) tcl/build.log:1192:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:30960:42: error: 'readlink' undeclared here (not in a function) tcl/build.log:1193:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:30967:43: error: 'lstat' undeclared here (not in a function) tcl/build.log:1194:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:30973:43: error: 'ioctl' undeclared here (not in a function) tcl/build.log:1195:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c: In function 'seekAndRead': tcl/build.log:1196:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:33615:11: error: unknown type name 'off64_t' tcl/build.log:1197:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:33615:11: error: expected ')' before 'aUnixSyscall' tcl/build.log:1198:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:33615:20: error: called object '<erroneous-expression>' is not a function tcl/build.log:1199:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:33615:9: warning: assignment makes integer from pointer without a cast [enabled by default] tcl/build.log:1200:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c: In function 'seekAndWriteFd': tcl/build.log:1201:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:33727:17: error: unknown type name 'off64_t' tcl/build.log:1202:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:33727:17: error: expected ')' before 'aUnixSyscall' tcl/build.log:1203:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:33727:27: error: called object '<erroneous-expression>' is not a function tcl/build.log:1204:In file included from /var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/tclsqlite3.c:4:0: tcl/build.log:1205:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c: In function 'unixSleep': tcl/build.log:1206:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:36772:3: warning: implicit declaration of function 'usleep' [-Wimplicit-function-declaration] tcl/build.log:1207:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c: In function 'unixCurrentTimeInt64': tcl/build.log:1208:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:36818:18: error: storage size of 'sNow' isn't known tcl/build.log:1209:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:36819:3: warning: implicit declaration of function 'gettimeofday' [-Wimplicit-function-declaration] tcl/build.log:1210:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:36820:48: error: request for member 'tv_sec' in something not a structure or union tcl/build.log:1211:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:36820:29: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] tcl/build.log:1212:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:36820:62: error: request for member 'tv_usec' in something not a structure or union tcl/build.log:1213:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:36820:70: error: invalid operands to binary / (have 'struct unix_syscall *' and 'int') tcl/build.log:1214:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:36820:10: warning: assignment makes integer from pointer without a cast [enabled by default] tcl/build.log:1215:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:36818:18: warning: unused variable 'sNow' [-Wunused-variable] tcl/build.log:1216:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c: In function 'sqlite3BitvecSet': tcl/build.log:1217:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:44690:5: warning: implicit declaration of function 'alloca' [-Wimplicit-function-declaration] tcl/build.log:1218:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:44690:21: warning: incompatible implicit declaration of built-in function 'alloca' [enabled by default] tcl/build.log:1219:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c: In function 'balance_nonroot': tcl/build.log:1220:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:67185:14: warning: incompatible implicit declaration of built-in function 'alloca' [enabled by default] tcl/build.log:1221:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c: In function 'codeRowTrigger': tcl/build.log:1222:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:125030:15: warning: incompatible implicit declaration of built-in function 'alloca' [enabled by default] tcl/build.log:1223:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c: In function 'sqlite3WhereCodeOneLoopStart': tcl/build.log:1224:/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/pkgs/sqlite3.21.0/generic/../compat/sqlite3/sqlite3.c:130161:16: warning: incompatible implicit declaration of built-in function 'alloca' [enabled by default] tcl/build.log:1225:Makefile:291: recipe for target 'tclsqlite3.o' failed [...] tk/build.log:258: *** Creating tkbase.res.o to support Windows build tk/build.log:259:"windres" -o tkbase.res.o --define STATIC_BUILD --include "./../generic" --include "/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/win/../generic" --include "/var/tmp/kitcreator-test-8981103881756025603/kitcreator-trunk-tip/tcl/build/tcl8.6.8/win" --include "./rc" "./rc/tk_base.rc" tk/build.log:260:./rc/tk_base.rc:5:21: fatal error: windows.h: No such file or directory
AMG: I've succeeded in cross compiling from Linux to Windows, and the resultant binary works, except for one really annoying thing. It creates a useless text-mode console window that collects all stdout. How can I disable this?
I'm using binutils and gcc from http://pkg.mxe.cc/repos/tar/mxe-i686-w64-mingw32.static/ . Should I be using something else? Here's how I'm calling kitcreator:
TARGET=i686-w64-mingw32.static CC=/opt/cross/bin/$TARGET-gcc \ CXX=/opt/cross/bin/$TARGET-g++ \ AR=/opt/cross/bin/$TARGET-ar \ RANLIB=/opt/cross/bin/$TARGET-ranlib \ STRIP=/opt/cross/bin/$TARGET-strip \ RC=/opt/cross/bin/$TARGET-windres \ TEA_PLATFORM=windows \ KC_TLS_LINKADD="-lws2_32 -lgdi32" \ ./kitcreator --host=$TARGET
I added the TEA_PLATFORM and KC_TLS_LINKADD variables to match [L3 ], but they had no measurable effect on the result.
Update: I was able to work around the issue by adding LDFLAGS=-mwindows to the build command. Why should I have to do this? Wouldn't -mwindows already be part of the command line to link the Tclkit executable?
JMC: I'm able to build starkits/starpacks on Windows/Linux/Solaris, but I use kbs.tcl not KitCreator. If you're interested in switching, then I might be able to help.
AMG: I had to switch from KBS to KitCreator because the precompiled binaries provided with the former did not work on Windows 2000 whereas the latter did. Yes, this is one of my requirements. Now that I can compile my own Windows binaries, I will need to check again if I still can run on Windows 2000. If so, it's possible my KBS binaries will also run on Windows 2000.