Artifact 0663f6ccecf72cc24346bddeae11ad814f980221:
- Executable file
kitcreator
— part of check-in
[f892d49db3]
at
2011-04-15 20:38:06
on branch trunk
— Updated to pull "tclconfig" and "thread" from core.tcl.tk
Updated to download CVS/Fossil into a temporary directory (user: rkeene, size: 3122) [annotate] [blame] [check-ins using]
0000: 23 21 20 2f 62 69 6e 2f 62 61 73 68 0a 0a 54 43 #! /bin/bash..TC 0010: 4c 56 45 52 53 3d 22 38 2e 34 2e 31 39 22 0a 69 LVERS="8.4.19".i 0020: 66 20 65 63 68 6f 20 22 24 31 22 20 7c 20 67 72 f echo "$1" | gr 0030: 65 70 20 27 5e 5b 30 2d 39 5d 5b 30 2d 39 5d 2a ep '^[0-9][0-9]* 0040: 5c 2e 27 20 3e 2f 64 65 76 2f 6e 75 6c 6c 20 7c \.' >/dev/null | 0050: 7c 20 65 63 68 6f 20 22 24 31 22 20 7c 20 67 72 | echo "$1" | gr 0060: 65 70 20 27 5e 63 76 73 5f 27 20 3e 2f 64 65 76 ep '^cvs_' >/dev 0070: 2f 6e 75 6c 6c 3b 20 74 68 65 6e 0a 09 54 43 4c /null; then..TCL 0080: 56 45 52 53 3d 22 24 31 22 0a 0a 09 73 68 69 66 VERS="$1"...shif 0090: 74 0a 66 69 0a 65 78 70 6f 72 74 20 54 43 4c 56 t.fi.export TCLV 00a0: 45 52 53 0a 0a 23 20 44 65 74 65 72 6d 69 6e 65 ERS..# Determine 00b0: 20 61 70 70 72 6f 70 72 69 61 74 65 20 6d 6f 64 appropriate mod 00c0: 65 0a 6d 6f 64 65 3d 22 62 75 69 6c 64 22 0a 69 e.mode="build".i 00d0: 66 20 5b 20 22 24 31 22 20 3d 20 22 63 6c 65 61 f [ "$1" = "clea 00e0: 6e 22 20 5d 3b 20 74 68 65 6e 0a 09 73 68 69 66 n" ]; then..shif 00f0: 74 0a 0a 09 6d 6f 64 65 3d 22 63 6c 65 61 6e 22 t...mode="clean" 0100: 0a 66 69 0a 69 66 20 5b 20 22 24 31 22 20 3d 20 .fi.if [ "$1" = 0110: 22 64 69 73 74 63 6c 65 61 6e 22 20 5d 3b 20 74 "distclean" ]; t 0120: 68 65 6e 0a 09 73 68 69 66 74 0a 0a 09 6d 6f 64 hen..shift...mod 0130: 65 3d 22 64 69 73 74 63 6c 65 61 6e 22 0a 66 69 e="distclean".fi 0140: 0a 0a 23 20 44 65 66 69 6e 65 20 74 68 65 20 6c ..# Define the l 0150: 69 73 74 20 6f 66 20 61 6c 6c 20 70 61 63 6b 61 ist of all packa 0160: 67 65 73 2c 20 66 6f 72 20 63 6c 65 61 6e 69 6e ges, for cleanin 0170: 67 20 70 75 72 70 6f 73 65 73 0a 4b 49 54 43 52 g purposes.KITCR 0180: 45 41 54 4f 52 5f 41 4c 4c 50 4b 47 53 3d 22 6b EATOR_ALLPKGS="k 0190: 69 74 73 68 20 74 63 6c 20 74 63 6c 76 66 73 20 itsh tcl tclvfs 01a0: 7a 6c 69 62 20 74 6b 20 69 74 63 6c 20 6d 6b 34 zlib tk itcl mk4 01b0: 74 63 6c 20 74 68 72 65 61 64 20 6b 69 74 64 6c tcl thread kitdl 01c0: 6c 22 0a 66 6f 72 20 70 6b 67 20 69 6e 20 24 7b l".for pkg in ${ 01d0: 4b 49 54 43 52 45 41 54 4f 52 5f 41 4c 4c 50 4b KITCREATOR_ALLPK 01e0: 47 53 7d 3b 20 64 6f 0a 09 72 6d 20 2d 66 20 22 GS}; do..rm -f " 01f0: 24 7b 70 6b 67 7d 2f 62 75 69 6c 64 2e 6c 6f 67 ${pkg}/build.log 0200: 22 0a 09 72 6d 20 2d 72 66 20 22 24 7b 70 6b 67 "..rm -rf "${pkg 0210: 7d 2f 6f 75 74 22 20 22 24 7b 70 6b 67 7d 2f 69 }/out" "${pkg}/i 0220: 6e 73 74 22 20 22 24 7b 70 6b 67 7d 2f 62 75 69 nst" "${pkg}/bui 0230: 6c 64 22 0a 0a 09 72 6d 20 2d 72 66 20 22 24 7b ld"...rm -rf "${ 0240: 70 6b 67 7d 2f 73 72 63 22 2f 74 6d 70 2d 2a 0a pkg}/src"/tmp-*. 0250: 0a 09 69 66 20 5b 20 22 24 7b 6d 6f 64 65 7d 22 ..if [ "${mode}" 0260: 20 3d 20 22 64 69 73 74 63 6c 65 61 6e 22 20 5d = "distclean" ] 0270: 3b 20 74 68 65 6e 0a 09 09 72 6d 20 2d 72 66 20 ; then...rm -rf 0280: 22 24 7b 70 6b 67 7d 2f 73 72 63 22 0a 09 66 69 "${pkg}/src"..fi 0290: 0a 64 6f 6e 65 0a 0a 23 20 57 65 27 72 65 20 61 .done..# We're a 02a0: 6c 6c 20 64 6f 6e 65 20 69 66 20 77 65 27 72 65 ll done if we're 02b0: 20 69 6e 20 63 6c 65 61 6e 20 6f 72 20 64 69 73 in clean or dis 02c0: 74 63 6c 65 61 6e 20 6d 6f 64 65 0a 69 66 20 5b tclean mode.if [ 02d0: 20 22 24 7b 6d 6f 64 65 7d 22 20 3d 20 22 63 6c "${mode}" = "cl 02e0: 65 61 6e 22 20 2d 6f 20 22 24 7b 6d 6f 64 65 7d ean" -o "${mode} 02f0: 22 20 3d 20 22 64 69 73 74 63 6c 65 61 6e 22 20 " = "distclean" 0300: 5d 3b 20 74 68 65 6e 0a 09 72 6d 20 2d 66 20 74 ]; then..rm -f t 0310: 63 6c 6b 69 74 2d 2a 0a 09 72 6d 20 2d 66 20 6c clkit-*..rm -f l 0320: 69 62 74 63 6c 6b 69 74 2a 2e 2a 0a 0a 09 65 78 ibtclkit*.*...ex 0330: 69 74 20 30 0a 66 69 0a 0a 23 20 41 64 64 20 70 it 0.fi..# Add p 0340: 61 63 6b 61 67 65 73 20 69 6d 70 6c 69 65 64 20 ackages implied 0350: 62 79 20 74 68 65 20 61 64 64 69 74 69 6f 6e 61 by the additiona 0360: 6c 20 61 72 67 75 6d 65 6e 74 73 0a 69 66 20 5b l arguments.if [ 0370: 20 2d 7a 20 22 24 7b 4b 49 54 43 52 45 41 54 4f -z "${KITCREATO 0380: 52 5f 50 4b 47 53 7d 22 20 5d 3b 20 74 68 65 6e R_PKGS}" ]; then 0390: 0a 09 4b 49 54 43 52 45 41 54 4f 52 5f 50 4b 47 ..KITCREATOR_PKG 03a0: 53 3d 22 74 6b 20 69 74 63 6c 20 6d 6b 34 74 63 S="tk itcl mk4tc 03b0: 6c 22 0a 66 69 0a 0a 43 4f 4e 46 49 47 55 52 45 l".fi..CONFIGURE 03c0: 45 58 54 52 41 3d 22 24 40 22 0a 65 78 70 6f 72 EXTRA="$@".expor 03d0: 74 20 43 4f 4e 46 49 47 55 52 45 45 58 54 52 41 t CONFIGUREEXTRA 03e0: 0a 0a 69 66 20 65 63 68 6f 20 22 20 24 7b 43 4f ..if echo " ${CO 03f0: 4e 46 49 47 55 52 45 45 58 54 52 41 7d 20 22 20 NFIGUREEXTRA} " 0400: 7c 20 67 72 65 70 20 27 20 2d 2d 65 6e 61 62 6c | grep ' --enabl 0410: 65 2d 74 68 72 65 61 64 73 27 20 3e 2f 64 65 76 e-threads' >/dev 0420: 2f 6e 75 6c 6c 20 32 3e 2f 64 65 76 2f 6e 75 6c /null 2>/dev/nul 0430: 6c 3b 20 74 68 65 6e 0a 09 4b 49 54 43 52 45 41 l; then..KITCREA 0440: 54 4f 52 5f 50 4b 47 53 3d 22 24 7b 4b 49 54 43 TOR_PKGS="${KITC 0450: 52 45 41 54 4f 52 5f 50 4b 47 53 7d 20 74 68 72 REATOR_PKGS} thr 0460: 65 61 64 22 0a 66 69 0a 0a 23 20 53 65 74 20 64 ead".fi..# Set d 0470: 65 66 61 75 6c 74 20 74 61 72 67 65 74 0a 4b 49 efault target.KI 0480: 54 54 41 52 47 45 54 3d 22 6b 69 74 73 68 22 0a TTARGET="kitsh". 0490: 65 78 70 6f 72 74 20 4b 49 54 54 41 52 47 45 54 export KITTARGET 04a0: 0a 0a 23 20 46 69 78 20 75 70 20 70 61 63 6b 61 ..# Fix up packa 04b0: 67 65 20 6c 69 73 74 0a 23 23 20 49 66 20 62 75 ge list.## If bu 04c0: 69 6c 64 69 6e 67 20 4b 69 74 44 4c 4c 2c 20 64 ilding KitDLL, d 04d0: 65 66 69 6e 65 20 69 74 20 61 73 20 6f 75 72 20 efine it as our 04e0: 74 61 72 67 65 74 0a 69 66 20 65 63 68 6f 20 22 target.if echo " 04f0: 20 24 7b 4b 49 54 43 52 45 41 54 4f 52 5f 50 4b ${KITCREATOR_PK 0500: 47 53 7d 20 22 20 7c 20 67 72 65 70 20 27 20 6b GS} " | grep ' k 0510: 69 74 64 6c 6c 20 27 20 3e 2f 64 65 76 2f 6e 75 itdll ' >/dev/nu 0520: 6c 6c 20 32 3e 2f 64 65 76 2f 6e 75 6c 6c 3b 20 ll 2>/dev/null; 0530: 74 68 65 6e 0a 09 4b 49 54 43 52 45 41 54 4f 52 then..KITCREATOR 0540: 5f 50 4b 47 53 3d 22 24 28 65 63 68 6f 20 22 20 _PKGS="$(echo " 0550: 24 7b 4b 49 54 43 52 45 41 54 4f 52 5f 50 4b 47 ${KITCREATOR_PKG 0560: 53 7d 20 22 20 7c 20 73 65 64 20 27 73 40 20 6b S} " | sed 's@ k 0570: 69 74 64 6c 6c 20 40 20 40 67 3b 73 40 5e 20 20 itdll @ @g;s@^ 0580: 2a 40 40 3b 73 40 20 20 2a 24 40 40 3b 73 40 20 *@@;s@ *$@@;s@ 0590: 20 20 2a 40 20 40 67 27 29 22 0a 09 4b 49 54 54 *@ @g')"..KITT 05a0: 41 52 47 45 54 3d 22 6b 69 74 64 6c 6c 22 0a 66 ARGET="kitdll".f 05b0: 69 0a 0a 23 23 20 49 66 20 62 75 69 6c 64 69 6e i..## If buildin 05c0: 67 20 4b 69 74 44 4c 4c 20 61 6e 64 20 54 6b 2c g KitDLL and Tk, 05d0: 20 6d 75 73 74 20 64 6f 20 54 6b 20 73 74 61 74 must do Tk stat 05e0: 69 63 61 6c 6c 79 0a 23 23 23 20 28 57 65 6c 6c ically.### (Well 05f0: 2c 20 77 65 20 64 6f 6e 27 74 20 48 41 56 45 20 , we don't HAVE 0600: 74 6f 2c 20 62 75 74 20 69 74 20 77 6f 75 6c 64 to, but it would 0610: 20 64 65 66 65 61 74 20 6d 75 63 68 20 6f 66 20 defeat much of 0620: 74 68 65 20 70 75 72 70 6f 73 65 29 0a 69 66 20 the purpose).if 0630: 5b 20 22 24 7b 4b 49 54 54 41 52 47 45 54 7d 22 [ "${KITTARGET}" 0640: 20 3d 20 22 6b 69 74 64 6c 6c 22 20 5d 3b 20 74 = "kitdll" ]; t 0650: 68 65 6e 0a 09 69 66 20 65 63 68 6f 20 22 20 24 hen..if echo " $ 0660: 7b 4b 49 54 43 52 45 41 54 4f 52 5f 50 4b 47 53 {KITCREATOR_PKGS 0670: 7d 20 22 20 7c 20 67 72 65 70 20 27 20 74 6b 20 } " | grep ' tk 0680: 27 20 3e 2f 64 65 76 2f 6e 75 6c 6c 20 32 3e 2f ' >/dev/null 2>/ 0690: 64 65 76 2f 6e 75 6c 6c 3b 20 74 68 65 6e 0a 09 dev/null; then.. 06a0: 09 69 66 20 5b 20 22 24 7b 53 54 41 54 49 43 54 .if [ "${STATICT 06b0: 4b 7d 22 20 21 3d 20 22 31 22 20 2d 61 20 22 24 K}" != "1" -a "$ 06c0: 7b 53 54 41 54 49 43 54 4b 7d 22 20 21 3d 20 22 {STATICTK}" != " 06d0: 2d 31 22 20 5d 3b 20 74 68 65 6e 0a 09 09 09 65 -1" ]; then....e 06e0: 63 68 6f 20 27 57 61 72 6e 69 6e 67 3a 20 4c 69 cho 'Warning: Li 06f0: 6e 6b 69 6e 67 20 54 6b 20 73 74 61 74 69 63 61 nking Tk statica 0700: 6c 6c 79 20 62 65 63 61 75 73 65 20 79 6f 75 20 lly because you 0710: 61 72 65 20 62 75 69 6c 64 69 6e 67 20 4b 69 74 are building Kit 0720: 44 4c 4c 27 20 32 3e 26 31 0a 09 09 09 65 63 68 DLL' 2>&1....ech 0730: 6f 20 27 20 20 20 20 20 20 20 20 20 53 65 74 20 o ' Set 0740: 53 54 41 54 49 43 54 4b 20 74 6f 20 2d 31 20 69 STATICTK to -1 i 0750: 66 20 79 6f 75 20 72 65 61 6c 6c 79 20 77 61 6e f you really wan 0760: 74 20 74 6f 20 6c 69 6e 6b 20 54 6b 20 64 79 6e t to link Tk dyn 0770: 61 6d 69 63 61 6c 6c 79 2e 27 20 3e 26 32 0a 0a amically.' >&2.. 0780: 09 09 09 53 54 41 54 49 43 54 4b 3d 22 31 22 0a ...STATICTK="1". 0790: 09 09 09 65 78 70 6f 72 74 20 53 54 41 54 49 43 ...export STATIC 07a0: 54 4b 0a 09 09 66 69 0a 0a 09 09 69 66 20 5b 20 TK...fi....if [ 07b0: 2d 7a 20 22 24 7b 53 54 41 54 49 43 4d 4b 34 7d -z "${STATICMK4} 07c0: 22 20 5d 3b 20 74 68 65 6e 0a 09 09 09 65 63 68 " ]; then....ech 07d0: 6f 20 27 57 61 72 6e 69 6e 67 3a 20 4c 69 6e 6b o 'Warning: Link 07e0: 69 6e 67 20 4d 6b 34 74 63 6c 20 64 79 6e 61 6d ing Mk4tcl dynam 07f0: 69 63 61 6c 6c 79 20 62 65 63 61 75 73 65 20 79 ically because y 0800: 6f 75 20 61 72 65 20 62 75 69 6c 64 69 6e 67 20 ou are building 0810: 4b 69 74 44 4c 4c 27 20 32 3e 26 31 0a 09 09 09 KitDLL' 2>&1.... 0820: 65 63 68 6f 20 27 20 20 20 20 20 20 20 20 20 53 echo ' S 0830: 65 74 20 53 54 41 54 49 43 4d 4b 34 20 74 6f 20 et STATICMK4 to 0840: 31 20 69 66 20 79 6f 75 20 72 65 61 6c 6c 79 20 1 if you really 0850: 77 61 6e 74 20 74 6f 20 6c 69 6e 6b 20 4d 6b 34 want to link Mk4 0860: 74 63 6c 20 73 74 61 74 69 63 61 6c 6c 79 2e 27 tcl statically.' 0870: 20 3e 26 32 0a 0a 09 09 09 53 54 41 54 49 43 4d >&2.....STATICM 0880: 4b 34 3d 22 30 22 0a 09 09 09 65 78 70 6f 72 74 K4="0"....export 0890: 20 53 54 41 54 49 43 4d 4b 34 0a 09 09 66 69 0a STATICMK4...fi. 08a0: 09 66 69 0a 66 69 0a 0a 66 61 69 6c 65 64 70 6b .fi.fi..failedpk 08b0: 67 73 3d 22 22 0a 62 75 69 6c 64 66 61 69 6c 65 gs="".buildfaile 08c0: 64 3d 22 30 22 0a 66 6f 72 20 70 6b 67 20 69 6e d="0".for pkg in 08d0: 20 74 63 6c 20 74 63 6c 76 66 73 20 7a 6c 69 62 tcl tclvfs zlib 08e0: 20 24 7b 4b 49 54 43 52 45 41 54 4f 52 5f 50 4b ${KITCREATOR_PK 08f0: 47 53 7d 20 22 24 7b 4b 49 54 54 41 52 47 45 54 GS} "${KITTARGET 0900: 7d 22 3b 20 64 6f 0a 09 65 63 68 6f 20 2d 6e 20 }"; do..echo -n 0910: 22 42 75 69 6c 64 69 6e 67 20 24 7b 70 6b 67 7d "Building ${pkg} 0920: 20 2e 2e 2e 22 0a 0a 09 66 61 69 6c 65 64 3d 22 ..."...failed=" 0930: 30 22 0a 09 28 0a 09 09 63 64 20 22 24 7b 70 6b 0"..(...cd "${pk 0940: 67 7d 22 20 3e 2f 64 65 76 2f 6e 75 6c 6c 20 32 g}" >/dev/null 2 0950: 3e 2f 64 65 76 2f 6e 75 6c 6c 20 7c 7c 20 65 78 >/dev/null || ex 0960: 69 74 20 31 0a 0a 09 09 2e 2f 62 75 69 6c 64 2e it 1...../build. 0970: 73 68 20 3e 20 62 75 69 6c 64 2e 6c 6f 67 20 32 sh > build.log 2 0980: 3e 26 31 20 7c 7c 20 65 78 69 74 20 31 0a 09 29 >&1 || exit 1..) 0990: 20 7c 7c 20 66 61 69 6c 65 64 3d 22 31 22 0a 0a || failed="1".. 09a0: 09 69 66 20 5b 20 22 24 7b 66 61 69 6c 65 64 7d .if [ "${failed} 09b0: 22 20 3d 20 22 31 22 20 5d 3b 20 74 68 65 6e 0a " = "1" ]; then. 09c0: 09 09 65 63 68 6f 20 22 20 66 61 69 6c 65 64 2e ..echo " failed. 09d0: 22 0a 09 09 66 61 69 6c 65 64 70 6b 67 73 3d 22 "...failedpkgs=" 09e0: 24 7b 66 61 69 6c 65 64 70 6b 67 73 7d 20 24 7b ${failedpkgs} ${ 09f0: 70 6b 67 7d 22 0a 09 65 6c 73 65 0a 09 09 65 63 pkg}"..else...ec 0a00: 68 6f 20 22 20 64 6f 6e 65 2e 22 0a 09 66 69 0a ho " done."..fi. 0a10: 0a 09 63 61 73 65 20 22 24 7b 70 6b 67 7d 22 20 ..case "${pkg}" 0a20: 69 6e 0a 09 09 74 63 6c 29 0a 09 09 09 54 43 4c in...tcl)....TCL 0a30: 43 4f 4e 46 49 47 44 49 52 3d 24 28 66 69 6e 64 CONFIGDIR=$(find 0a40: 20 22 24 28 70 77 64 29 2f 74 63 6c 2f 62 75 69 "$(pwd)/tcl/bui 0a50: 6c 64 22 20 2d 6e 61 6d 65 20 74 63 6c 43 6f 6e ld" -name tclCon 0a60: 66 69 67 2e 73 68 20 7c 20 68 65 61 64 20 2d 31 fig.sh | head -1 0a70: 20 7c 20 73 65 64 20 27 73 40 2f 5b 5e 2f 5d 2a | sed 's@/[^/]* 0a80: 24 40 40 27 29 0a 09 09 09 65 78 70 6f 72 74 20 $@@')....export 0a90: 54 43 4c 43 4f 4e 46 49 47 44 49 52 0a 09 09 09 TCLCONFIGDIR.... 0aa0: 3b 3b 0a 09 65 73 61 63 0a 0a 09 69 66 20 5b 20 ;;..esac...if [ 0ab0: 22 24 7b 66 61 69 6c 65 64 7d 22 20 3d 20 22 31 "${failed}" = "1 0ac0: 22 20 5d 3b 20 74 68 65 6e 0a 09 09 62 75 69 6c " ]; then...buil 0ad0: 64 66 61 69 6c 65 64 3d 22 31 22 0a 09 66 69 0a dfailed="1"..fi. 0ae0: 64 6f 6e 65 0a 0a 69 66 20 5b 20 2d 6e 20 22 24 done..if [ -n "$ 0af0: 7b 66 61 69 6c 65 64 70 6b 67 73 7d 22 20 5d 3b {failedpkgs}" ]; 0b00: 20 74 68 65 6e 0a 09 65 63 68 6f 20 22 46 61 69 then..echo "Fai 0b10: 6c 65 64 20 74 6f 20 62 75 69 6c 64 3a 24 7b 66 led to build:${f 0b20: 61 69 6c 65 64 70 6b 67 73 7d 22 0a 66 69 0a 0a ailedpkgs}".fi.. 0b30: 69 66 20 5b 20 22 24 7b 62 75 69 6c 64 66 61 69 if [ "${buildfai 0b40: 6c 65 64 7d 22 20 21 3d 20 22 30 22 20 5d 3b 20 led}" != "0" ]; 0b50: 74 68 65 6e 0a 09 65 63 68 6f 20 27 57 41 52 4e then..echo 'WARN 0b60: 49 4e 47 3a 20 42 75 69 6c 64 20 69 73 20 6c 69 ING: Build is li 0b70: 6b 65 6c 79 20 69 6e 63 6f 6d 70 6c 65 74 65 20 kely incomplete 0b80: 6f 72 20 66 61 69 6c 65 64 2e 27 20 3e 26 32 0a or failed.' >&2. 0b90: 66 69 0a 0a 63 70 20 27 6b 69 74 64 6c 6c 2f 62 fi..cp 'kitdll/b 0ba0: 75 69 6c 64 27 2f 6b 69 74 64 6c 6c 2d 2a 2f 6c uild'/kitdll-*/l 0bb0: 69 62 74 63 6c 6b 69 74 2a 20 2e 20 3e 2f 64 65 ibtclkit* . >/de 0bc0: 76 2f 6e 75 6c 6c 20 32 3e 2f 64 65 76 2f 6e 75 v/null 2>/dev/nu 0bd0: 6c 6c 0a 63 70 20 27 6b 69 74 73 68 2f 62 75 69 ll.cp 'kitsh/bui 0be0: 6c 64 27 2f 6b 69 74 73 68 2d 2a 2f 6b 69 74 20 ld'/kitsh-*/kit 0bf0: 22 74 63 6c 6b 69 74 2d 24 7b 54 43 4c 56 45 52 "tclkit-${TCLVER 0c00: 53 7d 22 20 3e 2f 64 65 76 2f 6e 75 6c 6c 20 32 S}" >/dev/null 2 0c10: 3e 2f 64 65 76 2f 6e 75 6c 6c 0a 0a 65 78 69 74 >/dev/null..exit 0c20: 20 22 24 7b 62 75 69 6c 64 66 61 69 6c 65 64 7d "${buildfailed} 0c30: 22 0a ".