Version 25 of KitCreator

Updated 2018-06-19 21:20:35 by AMG

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.

Builds

released builds
KitCreator Web Interface
choose desired kit via a form

Description

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:

  1. It attempts to be modular;
  2. It supports cross-compiling;
  3. It downloads the source from their original repositories;
  4. It allows you to specify an arbitrary version of Tcl (including CVS); and
  5. It uses GNU Autoconf scripts for compiling the part of the Tclkit that brings the whole thing together (the Kitsh)

Discussion

Solaris

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

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.

Unwanted console window

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?

No Xft support

AMG: When I use KitCreator to cross-compile Tclkit, it ends up not supporting Xft.

First off, the build system's xft.pc and other pkg-config files are being used, rather than the target system's xft.pc. I fixed this by setting these environment variables when running KitCreator:

PKG_CONFIG_PATH=
PKG_CONFIG_LIBDIR=$SYSROOT/usr/lib/pkgconfig:$SYSROOT/usr/share/pkgconfig
PKG_CONFIG_SYSROOT_DIR=$SYSROOT

Next, I'm getting -L/usr/lib64 in my X library search path, even though that's outside my sysroot and the target system is 32-bit. This is coming from Tk's configure script's X11 detection code, which happily finds the host system's files. I don't have a fix for this yet, but manually running configure with the following options help:

--x-includes=$SYSROOT/usr/X11R6/include
--x-libraries=$SYSROOT/usr/X11R6/lib

Finally, the real killer. pkg-config --libs xft yields -L$SYSROOT/usr/X11R6/lib -lXft -lfreetype -lXrender -lfontconfig (with $SYSROOT expanded). The listed libraries also depend on libXext.so, but the linker isn't given -rpath-link, so it doesn't know where to find that library. Only on SunOS is -L consulted when searching for libraries needed by those explicitly listed on the command line.

The only way I was able to fix this last problem was by editing xft.pc to include -lXext in the Libs: line.