Hex Artifact Content

Artifact 5183dd0c3540dc8d9f19f84c9ced462ba93daba6:


0000: 23 21 20 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20  #! /usr/bin/env 
0010: 62 61 73 68 0a 0a 23 20 43 6c 65 61 6e 20 76 61  bash..# Clean va
0020: 72 69 61 62 6c 65 73 20 77 68 69 63 68 20 77 69  riables which wi
0030: 6c 6c 20 69 6e 74 65 72 66 65 72 65 20 77 69 74  ll interfere wit
0040: 68 20 74 68 65 20 62 75 69 6c 64 0a 75 6e 73 65  h the build.unse
0050: 74 20 4d 41 4b 45 46 4c 41 47 53 20 44 45 53 54  t MAKEFLAGS DEST
0060: 44 49 52 0a 0a 23 20 44 65 74 65 72 6d 69 6e 65  DIR..# Determine
0070: 20 61 70 70 72 6f 70 72 69 61 74 65 20 6d 6f 64   appropriate mod
0080: 65 0a 6d 6f 64 65 3d 22 62 75 69 6c 64 22 0a 63  e.mode="build".c
0090: 61 73 65 20 22 24 31 22 20 69 6e 0a 09 63 6c 65  ase "$1" in..cle
00a0: 61 6e 7c 64 69 73 74 63 6c 65 61 6e 7c 62 75 69  an|distclean|bui
00b0: 6c 64 7c 72 65 74 72 79 29 0a 09 09 6d 6f 64 65  ld|retry)...mode
00c0: 3d 22 24 31 22 0a 09 09 73 68 69 66 74 0a 09 09  ="$1"...shift...
00d0: 3b 3b 0a 65 73 61 63 0a 0a 23 20 44 65 74 65 72  ;;.esac..# Deter
00e0: 6d 69 6e 65 20 77 68 69 63 68 20 54 63 6c 20 76  mine which Tcl v
00f0: 65 72 73 69 6f 6e 20 74 6f 20 62 75 69 6c 64 0a  ersion to build.
0100: 54 43 4c 56 45 52 53 3d 22 38 2e 36 2e 39 22 0a  TCLVERS="8.6.9".
0110: 69 66 20 65 63 68 6f 20 22 24 31 22 20 7c 20 67  if echo "$1" | g
0120: 72 65 70 20 27 5e 5b 30 2d 39 5d 5b 30 2d 39 5d  rep '^[0-9][0-9]
0130: 2a 5c 2e 27 20 3e 2f 64 65 76 2f 6e 75 6c 6c 20  *\.' >/dev/null 
0140: 7c 7c 20 65 63 68 6f 20 22 24 31 22 20 7c 20 65  || echo "$1" | e
0150: 67 72 65 70 20 27 5e 28 63 76 73 7c 66 6f 73 73  grep '^(cvs|foss
0160: 69 6c 29 5f 27 20 3e 2f 64 65 76 2f 6e 75 6c 6c  il)_' >/dev/null
0170: 3b 20 74 68 65 6e 0a 09 54 43 4c 56 45 52 53 3d  ; then..TCLVERS=
0180: 22 24 31 22 0a 0a 09 73 68 69 66 74 0a 66 69 0a  "$1"...shift.fi.
0190: 65 78 70 6f 72 74 20 54 43 4c 56 45 52 53 0a 0a  export TCLVERS..
01a0: 23 20 41 64 64 20 74 68 65 20 68 65 6c 70 65 72  # Add the helper
01b0: 73 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20 74  s directory to t
01c0: 68 65 20 70 61 74 68 0a 50 41 54 48 3d 22 24 28  he path.PATH="$(
01d0: 63 64 20 22 24 28 64 69 72 6e 61 6d 65 20 22 24  cd "$(dirname "$
01e0: 28 77 68 69 63 68 20 22 24 30 22 29 22 29 22 20  (which "$0")")" 
01f0: 26 26 20 70 77 64 29 22 2f 63 6f 6d 6d 6f 6e 2f  && pwd)"/common/
0200: 68 65 6c 70 65 72 73 3a 22 24 7b 50 41 54 48 7d  helpers:"${PATH}
0210: 22 0a 65 78 70 6f 72 74 20 50 41 54 48 0a 0a 23  ".export PATH..#
0220: 20 56 65 72 69 66 79 20 74 68 61 74 20 22 70 72   Verify that "pr
0230: 65 2e 73 68 22 20 68 61 73 20 62 65 65 6e 20 72  e.sh" has been r
0240: 75 6e 20 69 66 20 74 68 69 73 20 69 73 20 61 20  un if this is a 
0250: 64 65 76 65 6c 6f 70 6d 65 6e 74 20 73 6e 61 70  development snap
0260: 73 68 6f 74 20 6f 66 0a 23 20 4b 69 74 43 72 65  shot of.# KitCre
0270: 61 74 6f 72 0a 69 66 20 5b 20 2d 66 20 27 62 75  ator.if [ -f 'bu
0280: 69 6c 64 2f 70 72 65 2e 73 68 27 20 5d 3b 20 74  ild/pre.sh' ]; t
0290: 68 65 6e 0a 09 69 66 20 21 20 66 69 6e 64 20 27  hen..if ! find '
02a0: 6b 69 74 73 68 2f 62 75 69 6c 64 73 72 63 2f 27  kitsh/buildsrc/'
02b0: 20 2d 6e 61 6d 65 20 63 6f 6e 66 69 67 75 72 65   -name configure
02c0: 20 2d 74 79 70 65 20 66 20 32 3e 2f 64 65 76 2f   -type f 2>/dev/
02d0: 6e 75 6c 6c 20 7c 20 67 72 65 70 20 63 6f 6e 66  null | grep conf
02e0: 69 67 75 72 65 20 3e 2f 64 65 76 2f 6e 75 6c 6c  igure >/dev/null
02f0: 3b 20 74 68 65 6e 0a 09 09 65 63 68 6f 20 22 50  ; then...echo "P
0300: 6c 65 61 73 65 20 72 65 6d 65 6d 62 65 72 20 74  lease remember t
0310: 6f 20 72 75 6e 20 27 62 75 69 6c 64 2f 70 72 65  o run 'build/pre
0320: 2e 73 68 27 20 69 66 20 79 6f 75 20 65 78 70 65  .sh' if you expe
0330: 63 74 20 74 68 69 73 20 62 75 69 6c 64 20 74 6f  ct this build to
0340: 20 77 6f 72 6b 2e 22 20 3e 26 32 0a 09 66 69 0a   work." >&2..fi.
0350: 66 69 0a 0a 23 20 44 65 66 69 6e 65 20 74 68 65  fi..# Define the
0360: 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20 70 61 63   list of all pac
0370: 6b 61 67 65 73 2c 20 66 6f 72 20 63 6c 65 61 6e  kages, for clean
0380: 69 6e 67 20 70 75 72 70 6f 73 65 73 0a 4b 49 54  ing purposes.KIT
0390: 43 52 45 41 54 4f 52 5f 41 4c 4c 50 4b 47 53 3d  CREATOR_ALLPKGS=
03a0: 22 24 28 0a 09 66 6f 72 20 62 75 69 6c 64 53 63  "$(..for buildSc
03b0: 72 69 70 74 20 69 6e 20 2a 2f 62 75 69 6c 64 2e  ript in */build.
03c0: 73 68 3b 20 64 6f 0a 09 09 69 66 20 5b 20 21 20  sh; do...if [ ! 
03d0: 2d 78 20 22 24 7b 62 75 69 6c 64 53 63 72 69 70  -x "${buildScrip
03e0: 74 7d 22 20 5d 3b 20 74 68 65 6e 0a 09 09 09 63  t}" ]; then....c
03f0: 6f 6e 74 69 6e 75 65 0a 09 09 66 69 0a 0a 09 09  ontinue...fi....
0400: 65 63 68 6f 20 22 24 7b 62 75 69 6c 64 53 63 72  echo "${buildScr
0410: 69 70 74 7d 22 20 7c 20 73 65 64 20 27 73 40 2f  ipt}" | sed 's@/
0420: 2e 2a 24 40 40 27 0a 09 64 6f 6e 65 20 7c 20 74  .*$@@'..done | t
0430: 72 20 24 27 5c 6e 27 20 27 20 27 0a 29 22 0a 0a  r $'\n' ' '.)"..
0440: 23 20 41 6c 77 61 79 73 20 72 65 62 75 69 6c 64  # Always rebuild
0450: 20 6b 69 74 73 68 0a 72 6d 20 2d 66 20 22 6b 69   kitsh.rm -f "ki
0460: 74 73 68 2f 2e 73 75 63 63 65 73 73 22 0a 66 6f  tsh/.success".fo
0470: 72 20 70 6b 67 20 69 6e 20 24 7b 4b 49 54 43 52  r pkg in ${KITCR
0480: 45 41 54 4f 52 5f 41 4c 4c 50 4b 47 53 7d 20 24  EATOR_ALLPKGS} $
0490: 7b 4b 49 54 43 52 45 41 54 4f 52 5f 50 4b 47 53  {KITCREATOR_PKGS
04a0: 7d 3b 20 64 6f 0a 09 69 66 20 5b 20 22 24 7b 6d  }; do..if [ "${m
04b0: 6f 64 65 7d 22 20 21 3d 20 22 72 65 74 72 79 22  ode}" != "retry"
04c0: 20 2d 6f 20 21 20 2d 66 20 22 24 7b 70 6b 67 7d   -o ! -f "${pkg}
04d0: 2f 2e 73 75 63 63 65 73 73 22 20 5d 3b 20 74 68  /.success" ]; th
04e0: 65 6e 0a 09 09 72 6d 20 2d 66 20 22 24 7b 70 6b  en...rm -f "${pk
04f0: 67 7d 2f 62 75 69 6c 64 2e 6c 6f 67 22 20 22 24  g}/build.log" "$
0500: 7b 70 6b 67 7d 2f 2e 73 75 63 63 65 73 73 22 0a  {pkg}/.success".
0510: 09 09 72 6d 20 2d 72 66 20 22 24 7b 70 6b 67 7d  ..rm -rf "${pkg}
0520: 2f 6f 75 74 22 20 22 24 7b 70 6b 67 7d 2f 69 6e  /out" "${pkg}/in
0530: 73 74 22 20 22 24 7b 70 6b 67 7d 2f 62 75 69 6c  st" "${pkg}/buil
0540: 64 22 0a 0a 09 09 72 6d 20 2d 72 66 20 22 24 7b  d"....rm -rf "${
0550: 70 6b 67 7d 2f 73 72 63 22 2f 74 6d 70 2d 2a 0a  pkg}/src"/tmp-*.
0560: 09 66 69 0a 0a 09 69 66 20 5b 20 22 24 7b 6d 6f  .fi...if [ "${mo
0570: 64 65 7d 22 20 3d 20 22 64 69 73 74 63 6c 65 61  de}" = "distclea
0580: 6e 22 20 5d 3b 20 74 68 65 6e 0a 09 09 72 6d 20  n" ]; then...rm 
0590: 2d 72 66 20 22 24 7b 70 6b 67 7d 2f 73 72 63 22  -rf "${pkg}/src"
05a0: 0a 09 66 69 0a 64 6f 6e 65 0a 0a 23 20 57 65 27  ..fi.done..# We'
05b0: 72 65 20 61 6c 6c 20 64 6f 6e 65 20 69 66 20 77  re all done if w
05c0: 65 27 72 65 20 69 6e 20 63 6c 65 61 6e 20 6f 72  e're in clean or
05d0: 20 64 69 73 74 63 6c 65 61 6e 20 6d 6f 64 65 0a   distclean mode.
05e0: 69 66 20 5b 20 22 24 7b 6d 6f 64 65 7d 22 20 3d  if [ "${mode}" =
05f0: 20 22 63 6c 65 61 6e 22 20 2d 6f 20 22 24 7b 6d   "clean" -o "${m
0600: 6f 64 65 7d 22 20 3d 20 22 64 69 73 74 63 6c 65  ode}" = "distcle
0610: 61 6e 22 20 5d 3b 20 74 68 65 6e 0a 09 72 6d 20  an" ]; then..rm 
0620: 2d 66 20 74 63 6c 6b 69 74 2d 2a 0a 09 72 6d 20  -f tclkit-*..rm 
0630: 2d 66 20 6c 69 62 74 63 6c 6b 69 74 2a 2e 2a 0a  -f libtclkit*.*.
0640: 0a 09 65 78 69 74 20 30 0a 66 69 0a 0a 23 20 41  ..exit 0.fi..# A
0650: 64 64 20 70 61 63 6b 61 67 65 73 20 69 6d 70 6c  dd packages impl
0660: 69 65 64 20 62 79 20 74 68 65 20 61 64 64 69 74  ied by the addit
0670: 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 0a  ional arguments.
0680: 69 66 20 5b 20 2d 7a 20 22 24 7b 4b 49 54 43 52  if [ -z "${KITCR
0690: 45 41 54 4f 52 5f 50 4b 47 53 7d 22 20 5d 3b 20  EATOR_PKGS}" ]; 
06a0: 74 68 65 6e 0a 09 4b 49 54 43 52 45 41 54 4f 52  then..KITCREATOR
06b0: 5f 50 4b 47 53 3d 22 74 6b 20 69 74 63 6c 20 6d  _PKGS="tk itcl m
06c0: 6b 34 74 63 6c 22 0a 66 69 0a 0a 43 4f 4e 46 49  k4tcl".fi..CONFI
06d0: 47 55 52 45 45 58 54 52 41 3d 22 24 40 22 0a 65  GUREEXTRA="$@".e
06e0: 78 70 6f 72 74 20 43 4f 4e 46 49 47 55 52 45 45  xport CONFIGUREE
06f0: 58 54 52 41 0a 0a 69 66 20 65 63 68 6f 20 22 20  XTRA..if echo " 
0700: 24 7b 43 4f 4e 46 49 47 55 52 45 45 58 54 52 41  ${CONFIGUREEXTRA
0710: 7d 20 22 20 7c 20 67 72 65 70 20 27 20 2d 2d 65  } " | grep ' --e
0720: 6e 61 62 6c 65 2d 74 68 72 65 61 64 73 20 27 20  nable-threads ' 
0730: 3e 2f 64 65 76 2f 6e 75 6c 6c 20 32 3e 2f 64 65  >/dev/null 2>/de
0740: 76 2f 6e 75 6c 6c 3b 20 74 68 65 6e 0a 09 4b 49  v/null; then..KI
0750: 54 43 52 45 41 54 4f 52 5f 41 44 44 5f 45 4e 41  TCREATOR_ADD_ENA
0760: 42 4c 45 5f 54 48 52 45 41 44 53 3d 27 31 27 0a  BLE_THREADS='1'.
0770: 09 4b 49 54 43 52 45 41 54 4f 52 5f 50 4b 47 53  .KITCREATOR_PKGS
0780: 3d 22 24 7b 4b 49 54 43 52 45 41 54 4f 52 5f 50  ="${KITCREATOR_P
0790: 4b 47 53 7d 20 74 68 72 65 61 64 22 0a 65 6c 69  KGS} thread".eli
07a0: 66 20 65 63 68 6f 20 22 20 24 7b 43 4f 4e 46 49  f echo " ${CONFI
07b0: 47 55 52 45 45 58 54 52 41 7d 20 22 20 7c 20 67  GUREEXTRA} " | g
07c0: 72 65 70 20 27 20 2d 2d 64 69 73 61 62 6c 65 2d  rep ' --disable-
07d0: 74 68 72 65 61 64 73 20 27 20 3e 2f 64 65 76 2f  threads ' >/dev/
07e0: 6e 75 6c 6c 20 32 3e 2f 64 65 76 2f 6e 75 6c 6c  null 2>/dev/null
07f0: 3b 20 74 68 65 6e 0a 09 4b 49 54 43 52 45 41 54  ; then..KITCREAT
0800: 4f 52 5f 41 44 44 5f 45 4e 41 42 4c 45 5f 54 48  OR_ADD_ENABLE_TH
0810: 52 45 41 44 53 3d 27 30 27 0a 66 69 0a 0a 23 20  READS='0'.fi..# 
0820: 44 65 74 65 72 6d 69 6e 65 20 63 72 6f 73 73 2d  Determine cross-
0830: 63 6f 6d 70 69 6c 65 20 73 74 61 74 75 73 0a 6b  compile status.k
0840: 69 74 73 68 5f 64 69 72 3d 22 24 28 63 64 20 6b  itsh_dir="$(cd k
0850: 69 74 73 68 2f 62 75 69 6c 64 73 72 63 2f 6b 69  itsh/buildsrc/ki
0860: 74 73 68 2d 2a 20 26 26 20 70 77 64 29 22 20 7c  tsh-* && pwd)" |
0870: 7c 20 65 78 69 74 20 31 0a 68 6f 73 74 5f 6f 73  | exit 1.host_os
0880: 3d 22 24 28 65 63 68 6f 20 22 20 24 7b 43 4f 4e  ="$(echo " ${CON
0890: 46 49 47 55 52 45 45 58 54 52 41 7d 20 22 20 7c  FIGUREEXTRA} " |
08a0: 20 73 65 64 20 27 73 40 5e 2e 2a 20 2d 2d 68 6f   sed 's@^.* --ho
08b0: 73 74 3d 5c 28 5b 5e 20 5d 2a 5c 29 20 2e 2a 24  st=\([^ ]*\) .*$
08c0: 40 5c 31 40 0a 74 20 78 0a 64 0a 3a 78 27 29 22  @\1@.t x.d.:x')"
08d0: 0a 62 75 69 6c 64 5f 6f 73 3d 22 24 28 65 63 68  .build_os="$(ech
08e0: 6f 20 22 20 24 7b 43 4f 4e 46 49 47 55 52 45 45  o " ${CONFIGUREE
08f0: 58 54 52 41 7d 20 22 20 7c 20 73 65 64 20 27 73  XTRA} " | sed 's
0900: 40 5e 2e 2a 20 2d 2d 62 75 69 6c 64 3d 5c 28 5b  @^.* --build=\([
0910: 5e 20 5d 2a 5c 29 20 2e 2a 24 40 5c 31 40 0a 74  ^ ]*\) .*$@\1@.t
0920: 20 78 0a 64 0a 3a 78 27 29 22 0a 0a 69 66 20 5b   x.d.:x')"..if [
0930: 20 2d 7a 20 22 24 7b 62 75 69 6c 64 5f 6f 73 7d   -z "${build_os}
0940: 22 20 5d 3b 20 74 68 65 6e 0a 09 62 75 69 6c 64  " ]; then..build
0950: 5f 6f 73 3d 22 24 28 22 24 7b 6b 69 74 73 68 5f  _os="$("${kitsh_
0960: 64 69 72 7d 2f 63 6f 6e 66 69 67 2e 67 75 65 73  dir}/config.gues
0970: 73 22 29 22 0a 65 6c 73 65 0a 09 62 75 69 6c 64  s")".else..build
0980: 5f 6f 73 3d 22 24 28 22 24 7b 6b 69 74 73 68 5f  _os="$("${kitsh_
0990: 64 69 72 7d 2f 63 6f 6e 66 69 67 2e 73 75 62 22  dir}/config.sub"
09a0: 20 22 24 7b 62 75 69 6c 64 5f 6f 73 7d 22 29 22   "${build_os}")"
09b0: 0a 66 69 0a 69 66 20 5b 20 2d 7a 20 22 24 7b 68  .fi.if [ -z "${h
09c0: 6f 73 74 5f 6f 73 7d 22 20 5d 3b 20 74 68 65 6e  ost_os}" ]; then
09d0: 0a 09 68 6f 73 74 5f 6f 73 3d 22 24 28 22 24 7b  ..host_os="$("${
09e0: 6b 69 74 73 68 5f 64 69 72 7d 2f 63 6f 6e 66 69  kitsh_dir}/confi
09f0: 67 2e 67 75 65 73 73 22 29 22 0a 65 6c 73 65 0a  g.guess")".else.
0a00: 09 68 6f 73 74 5f 6f 73 3d 22 24 28 22 24 7b 6b  .host_os="$("${k
0a10: 69 74 73 68 5f 64 69 72 7d 2f 63 6f 6e 66 69 67  itsh_dir}/config
0a20: 2e 73 75 62 22 20 22 24 7b 68 6f 73 74 5f 6f 73  .sub" "${host_os
0a30: 7d 22 29 22 0a 66 69 0a 0a 69 66 20 5b 20 22 24  }")".fi..if [ "$
0a40: 7b 68 6f 73 74 5f 6f 73 7d 22 20 21 3d 20 22 24  {host_os}" != "$
0a50: 7b 62 75 69 6c 64 5f 6f 73 7d 22 20 2d 61 20 2d  {build_os}" -a -
0a60: 6e 20 22 24 7b 68 6f 73 74 5f 6f 73 7d 22 20 5d  n "${host_os}" ]
0a70: 3b 20 74 68 65 6e 0a 09 4b 43 5f 43 52 4f 53 53  ; then..KC_CROSS
0a80: 43 4f 4d 50 49 4c 45 3d 27 31 27 0a 65 6c 73 65  COMPILE='1'.else
0a90: 0a 09 4b 43 5f 43 52 4f 53 53 43 4f 4d 50 49 4c  ..KC_CROSSCOMPIL
0aa0: 45 3d 27 30 27 0a 66 69 0a 4b 43 5f 43 52 4f 53  E='0'.fi.KC_CROS
0ab0: 53 43 4f 4d 50 49 4c 45 5f 48 4f 53 54 5f 4f 53  SCOMPILE_HOST_OS
0ac0: 3d 22 24 7b 68 6f 73 74 5f 6f 73 7d 22 0a 65 78  ="${host_os}".ex
0ad0: 70 6f 72 74 20 4b 43 5f 43 52 4f 53 53 43 4f 4d  port KC_CROSSCOM
0ae0: 50 49 4c 45 20 4b 43 5f 43 52 4f 53 53 43 4f 4d  PILE KC_CROSSCOM
0af0: 50 49 4c 45 5f 48 4f 53 54 5f 4f 53 0a 75 6e 73  PILE_HOST_OS.uns
0b00: 65 74 20 6b 69 74 73 68 5f 64 69 72 0a 0a 23 20  et kitsh_dir..# 
0b10: 53 65 74 20 64 65 66 61 75 6c 74 20 74 61 72 67  Set default targ
0b20: 65 74 0a 4b 49 54 54 41 52 47 45 54 3d 22 6b 69  et.KITTARGET="ki
0b30: 74 73 68 22 0a 65 78 70 6f 72 74 20 4b 49 54 54  tsh".export KITT
0b40: 41 52 47 45 54 0a 0a 23 20 46 69 78 20 75 70 20  ARGET..# Fix up 
0b50: 70 61 63 6b 61 67 65 20 6c 69 73 74 0a 23 23 20  package list.## 
0b60: 49 66 20 62 75 69 6c 64 69 6e 67 20 4b 69 74 44  If building KitD
0b70: 4c 4c 2c 20 64 65 66 69 6e 65 20 69 74 20 61 73  LL, define it as
0b80: 20 6f 75 72 20 74 61 72 67 65 74 0a 69 66 20 65   our target.if e
0b90: 63 68 6f 20 22 20 24 7b 4b 49 54 43 52 45 41 54  cho " ${KITCREAT
0ba0: 4f 52 5f 50 4b 47 53 7d 20 22 20 7c 20 67 72 65  OR_PKGS} " | gre
0bb0: 70 20 27 20 6b 69 74 64 6c 6c 20 27 20 3e 2f 64  p ' kitdll ' >/d
0bc0: 65 76 2f 6e 75 6c 6c 20 32 3e 2f 64 65 76 2f 6e  ev/null 2>/dev/n
0bd0: 75 6c 6c 3b 20 74 68 65 6e 0a 09 4b 49 54 43 52  ull; then..KITCR
0be0: 45 41 54 4f 52 5f 50 4b 47 53 3d 22 24 28 65 63  EATOR_PKGS="$(ec
0bf0: 68 6f 20 22 20 24 7b 4b 49 54 43 52 45 41 54 4f  ho " ${KITCREATO
0c00: 52 5f 50 4b 47 53 7d 20 22 20 7c 20 73 65 64 20  R_PKGS} " | sed 
0c10: 27 73 40 20 6b 69 74 64 6c 6c 20 40 20 40 67 3b  's@ kitdll @ @g;
0c20: 73 40 5e 20 20 2a 40 40 3b 73 40 20 20 2a 24 40  s@^  *@@;s@  *$@
0c30: 40 3b 73 40 20 20 20 2a 40 20 40 67 27 29 22 0a  @;s@   *@ @g')".
0c40: 09 4b 49 54 54 41 52 47 45 54 3d 22 6b 69 74 64  .KITTARGET="kitd
0c50: 6c 6c 22 0a 66 69 0a 0a 23 20 49 66 20 74 68 65  ll".fi..# If the
0c60: 20 75 73 65 72 20 6d 61 6e 75 61 6c 6c 79 20 72   user manually r
0c70: 65 71 75 65 73 74 65 64 20 22 2d 2d 65 6e 61 62  equested "--enab
0c80: 6c 65 2d 6b 69 74 64 6c 6c 22 2c 20 6d 61 6b 65  le-kitdll", make
0c90: 20 69 74 20 73 6f 0a 69 66 20 65 63 68 6f 20 22   it so.if echo "
0ca0: 78 20 24 40 20 22 20 7c 20 67 72 65 70 20 27 20  x $@ " | grep ' 
0cb0: 5b 2d 5d 5b 2d 5d 65 6e 61 62 6c 65 2d 6b 69 74  [-][-]enable-kit
0cc0: 64 6c 6c 20 27 20 3e 2f 64 65 76 2f 6e 75 6c 6c  dll ' >/dev/null
0cd0: 20 32 3e 2f 64 65 76 2f 6e 75 6c 6c 3b 20 74 68   2>/dev/null; th
0ce0: 65 6e 0a 09 4b 49 54 54 41 52 47 45 54 3d 22 6b  en..KITTARGET="k
0cf0: 69 74 64 6c 6c 22 0a 66 69 0a 0a 23 23 20 49 66  itdll".fi..## If
0d00: 20 62 75 69 6c 64 69 6e 67 20 4b 69 74 44 4c 4c   building KitDLL
0d10: 20 61 6e 64 20 54 6b 2c 20 6d 75 73 74 20 64 6f   and Tk, must do
0d20: 20 54 6b 20 73 74 61 74 69 63 61 6c 6c 79 0a 23   Tk statically.#
0d30: 23 23 20 28 57 65 6c 6c 2c 20 77 65 20 64 6f 6e  ## (Well, we don
0d40: 27 74 20 48 41 56 45 20 74 6f 2c 20 62 75 74 20  't HAVE to, but 
0d50: 69 74 20 77 6f 75 6c 64 20 64 65 66 65 61 74 20  it would defeat 
0d60: 6d 75 63 68 20 6f 66 20 74 68 65 20 70 75 72 70  much of the purp
0d70: 6f 73 65 29 0a 69 66 20 5b 20 22 24 7b 4b 49 54  ose).if [ "${KIT
0d80: 54 41 52 47 45 54 7d 22 20 3d 20 22 6b 69 74 64  TARGET}" = "kitd
0d90: 6c 6c 22 20 5d 3b 20 74 68 65 6e 0a 09 69 66 20  ll" ]; then..if 
0da0: 65 63 68 6f 20 22 20 24 7b 4b 49 54 43 52 45 41  echo " ${KITCREA
0db0: 54 4f 52 5f 50 4b 47 53 7d 20 22 20 7c 20 67 72  TOR_PKGS} " | gr
0dc0: 65 70 20 27 20 74 6b 20 27 20 3e 2f 64 65 76 2f  ep ' tk ' >/dev/
0dd0: 6e 75 6c 6c 20 32 3e 2f 64 65 76 2f 6e 75 6c 6c  null 2>/dev/null
0de0: 3b 20 74 68 65 6e 0a 09 09 69 66 20 5b 20 22 24  ; then...if [ "$
0df0: 7b 53 54 41 54 49 43 54 4b 7d 22 20 21 3d 20 22  {STATICTK}" != "
0e00: 31 22 20 2d 61 20 22 24 7b 53 54 41 54 49 43 54  1" -a "${STATICT
0e10: 4b 7d 22 20 21 3d 20 22 2d 31 22 20 5d 3b 20 74  K}" != "-1" ]; t
0e20: 68 65 6e 0a 09 09 09 65 63 68 6f 20 27 57 61 72  hen....echo 'War
0e30: 6e 69 6e 67 3a 20 4c 69 6e 6b 69 6e 67 20 54 6b  ning: Linking Tk
0e40: 20 73 74 61 74 69 63 61 6c 6c 79 20 62 65 63 61   statically beca
0e50: 75 73 65 20 79 6f 75 20 61 72 65 20 62 75 69 6c  use you are buil
0e60: 64 69 6e 67 20 4b 69 74 44 4c 4c 27 20 32 3e 26  ding KitDLL' 2>&
0e70: 31 0a 09 09 09 65 63 68 6f 20 27 20 20 20 20 20  1....echo '     
0e80: 20 20 20 20 53 65 74 20 53 54 41 54 49 43 54 4b      Set STATICTK
0e90: 20 74 6f 20 2d 31 20 69 66 20 79 6f 75 20 72 65   to -1 if you re
0ea0: 61 6c 6c 79 20 77 61 6e 74 20 74 6f 20 6c 69 6e  ally want to lin
0eb0: 6b 20 54 6b 20 64 79 6e 61 6d 69 63 61 6c 6c 79  k Tk dynamically
0ec0: 2e 27 20 3e 26 32 0a 0a 09 09 09 53 54 41 54 49  .' >&2.....STATI
0ed0: 43 54 4b 3d 22 31 22 0a 09 09 09 65 78 70 6f 72  CTK="1"....expor
0ee0: 74 20 53 54 41 54 49 43 54 4b 0a 09 09 66 69 0a  t STATICTK...fi.
0ef0: 09 66 69 0a 0a 09 69 66 20 65 63 68 6f 20 22 20  .fi...if echo " 
0f00: 24 7b 4b 49 54 43 52 45 41 54 4f 52 5f 50 4b 47  ${KITCREATOR_PKG
0f10: 53 7d 20 22 20 7c 20 67 72 65 70 20 27 20 6d 6b  S} " | grep ' mk
0f20: 34 74 63 6c 20 27 20 3e 2f 64 65 76 2f 6e 75 6c  4tcl ' >/dev/nul
0f30: 6c 20 32 3e 2f 64 65 76 2f 6e 75 6c 6c 3b 20 74  l 2>/dev/null; t
0f40: 68 65 6e 0a 09 09 69 66 20 5b 20 2d 7a 20 22 24  hen...if [ -z "$
0f50: 7b 53 54 41 54 49 43 4d 4b 34 7d 22 20 5d 3b 20  {STATICMK4}" ]; 
0f60: 74 68 65 6e 0a 09 09 09 65 63 68 6f 20 27 57 61  then....echo 'Wa
0f70: 72 6e 69 6e 67 3a 20 4c 69 6e 6b 69 6e 67 20 4d  rning: Linking M
0f80: 6b 34 74 63 6c 20 64 79 6e 61 6d 69 63 61 6c 6c  k4tcl dynamicall
0f90: 79 20 62 65 63 61 75 73 65 20 79 6f 75 20 61 72  y because you ar
0fa0: 65 20 62 75 69 6c 64 69 6e 67 20 4b 69 74 44 4c  e building KitDL
0fb0: 4c 27 20 32 3e 26 31 0a 09 09 09 65 63 68 6f 20  L' 2>&1....echo 
0fc0: 27 20 20 20 20 20 20 20 20 20 53 65 74 20 53 54  '         Set ST
0fd0: 41 54 49 43 4d 4b 34 20 74 6f 20 6d 61 6b 65 20  ATICMK4 to make 
0fe0: 74 68 69 73 20 6d 65 73 73 61 67 65 20 67 6f 20  this message go 
0ff0: 61 77 61 79 2e 27 20 3e 26 32 0a 09 09 09 65 63  away.' >&2....ec
1000: 68 6f 20 27 20 20 20 20 20 20 20 20 20 53 65 74  ho '         Set
1010: 20 53 54 41 54 49 43 4d 4b 34 20 74 6f 20 31 20   STATICMK4 to 1 
1020: 69 66 20 79 6f 75 20 72 65 61 6c 6c 79 20 77 61  if you really wa
1030: 6e 74 20 74 6f 20 6c 69 6e 6b 20 4d 6b 34 74 63  nt to link Mk4tc
1040: 6c 20 73 74 61 74 69 63 61 6c 6c 79 20 28 6e 6f  l statically (no
1050: 72 6d 61 6c 20 64 65 66 61 75 6c 74 29 2e 27 20  rmal default).' 
1060: 3e 26 32 0a 09 09 09 65 63 68 6f 20 27 20 20 20  >&2....echo '   
1070: 20 20 20 20 20 20 53 65 74 20 53 54 41 54 49 43        Set STATIC
1080: 4d 4b 34 20 74 6f 20 30 20 74 6f 20 6c 69 6e 6b  MK4 to 0 to link
1090: 20 4d 6b 34 74 63 6c 20 64 79 6e 61 6d 69 63 61   Mk4tcl dynamica
10a0: 6c 6c 79 20 69 66 20 70 6f 73 73 69 62 6c 65 20  lly if possible 
10b0: 28 74 68 69 73 20 69 73 20 77 68 61 74 20 69 73  (this is what is
10c0: 20 68 61 70 70 65 6e 69 6e 67 20 6e 6f 77 29 2e   happening now).
10d0: 27 20 3e 26 32 0a 09 09 09 65 63 68 6f 20 27 20  ' >&2....echo ' 
10e0: 20 20 20 20 20 20 20 20 53 65 74 20 53 54 41 54          Set STAT
10f0: 49 43 4d 4b 34 20 74 6f 20 2d 31 20 74 6f 20 62  ICMK4 to -1 to b
1100: 75 69 6c 64 20 64 79 6e 61 6d 69 63 61 6c 6c 79  uild dynamically
1110: 2e 27 20 3e 26 32 0a 0a 09 09 09 53 54 41 54 49  .' >&2.....STATI
1120: 43 4d 4b 34 3d 22 30 22 0a 09 09 09 65 78 70 6f  CMK4="0"....expo
1130: 72 74 20 53 54 41 54 49 43 4d 4b 34 0a 09 09 66  rt STATICMK4...f
1140: 69 0a 09 66 69 0a 66 69 0a 0a 23 20 46 69 6e 64  i..fi.fi..# Find
1150: 20 57 69 6e 64 6f 77 73 20 72 65 73 6f 75 72 63   Windows resourc
1160: 65 2d 72 65 6c 61 74 65 64 20 66 69 6c 65 73 0a  e-related files.
1170: 69 66 20 5b 20 2d 66 20 22 6b 69 74 2e 69 63 6f  if [ -f "kit.ico
1180: 22 20 5d 3b 20 74 68 65 6e 0a 09 4b 49 54 43 52  " ]; then..KITCR
1190: 45 41 54 4f 52 5f 49 43 4f 4e 3d 22 24 28 70 77  EATOR_ICON="$(pw
11a0: 64 29 2f 6b 69 74 2e 69 63 6f 22 0a 65 6c 73 65  d)/kit.ico".else
11b0: 0a 09 4b 49 54 43 52 45 41 54 4f 52 5f 49 43 4f  ..KITCREATOR_ICO
11c0: 4e 3d 22 24 28 65 63 68 6f 20 22 24 28 70 77 64  N="$(echo "$(pwd
11d0: 29 2f 6b 69 74 73 68 2f 62 75 69 6c 64 73 72 63  )/kitsh/buildsrc
11e0: 22 2f 6b 69 74 73 68 2d 2a 2f 74 63 6c 6b 69 74  "/kitsh-*/tclkit
11f0: 2e 69 63 6f 29 22 0a 66 69 0a 69 66 20 5b 20 2d  .ico)".fi.if [ -
1200: 66 20 22 6b 69 74 2e 72 63 22 20 5d 3b 20 74 68  f "kit.rc" ]; th
1210: 65 6e 0a 09 4b 49 54 43 52 45 41 54 4f 52 5f 52  en..KITCREATOR_R
1220: 43 3d 22 24 28 70 77 64 29 2f 6b 69 74 2e 72 63  C="$(pwd)/kit.rc
1230: 22 0a 65 6c 73 65 0a 09 4b 49 54 43 52 45 41 54  ".else..KITCREAT
1240: 4f 52 5f 52 43 3d 22 24 28 65 63 68 6f 20 22 24  OR_RC="$(echo "$
1250: 28 70 77 64 29 2f 6b 69 74 73 68 2f 62 75 69 6c  (pwd)/kitsh/buil
1260: 64 73 72 63 22 2f 6b 69 74 73 68 2d 2a 2f 6b 69  dsrc"/kitsh-*/ki
1270: 74 2e 72 63 29 22 0a 66 69 0a 65 78 70 6f 72 74  t.rc)".fi.export
1280: 20 4b 49 54 43 52 45 41 54 4f 52 5f 49 43 4f 4e   KITCREATOR_ICON
1290: 20 4b 49 54 43 52 45 41 54 4f 52 5f 52 43 0a 0a   KITCREATOR_RC..
12a0: 23 20 44 65 74 65 72 6d 69 6e 65 20 68 6f 77 20  # Determine how 
12b0: 77 65 20 69 6e 76 6f 6b 65 20 61 20 54 63 6c 20  we invoke a Tcl 
12c0: 69 6e 74 65 72 70 72 65 74 65 72 0a 69 66 20 5b  interpreter.if [
12d0: 20 2d 7a 20 22 24 7b 54 43 4c 53 48 5f 4e 41 54   -z "${TCLSH_NAT
12e0: 49 56 45 7d 22 20 5d 3b 20 74 68 65 6e 0a 09 54  IVE}" ]; then..T
12f0: 43 4c 53 48 5f 4e 41 54 49 56 45 3d 22 66 61 6c  CLSH_NATIVE="fal
1300: 73 65 22 0a 66 69 0a 66 6f 72 20 74 65 73 74 73  se".fi.for tests
1310: 68 20 69 6e 20 22 24 7b 54 43 4c 53 48 5f 4e 41  h in "${TCLSH_NA
1320: 54 49 56 45 7d 22 20 74 63 6c 73 68 20 74 63 6c  TIVE}" tclsh tcl
1330: 73 68 38 2e 34 20 74 63 6c 73 68 38 2e 35 20 74  sh8.4 tclsh8.5 t
1340: 63 6c 73 68 38 2e 36 20 22 24 7b 54 43 4c 4b 49  clsh8.6 "${TCLKI
1350: 54 3a 2d 74 63 6c 6b 69 74 7d 22 3b 20 64 6f 0a  T:-tclkit}"; do.
1360: 09 69 66 20 65 63 68 6f 20 27 65 78 69 74 20 30  .if echo 'exit 0
1370: 27 20 7c 20 22 24 7b 74 65 73 74 73 68 7d 22 20  ' | "${testsh}" 
1380: 3e 2f 64 65 76 2f 6e 75 6c 6c 20 32 3e 2f 64 65  >/dev/null 2>/de
1390: 76 2f 6e 75 6c 6c 3b 20 74 68 65 6e 0a 09 09 54  v/null; then...T
13a0: 43 4c 53 48 5f 4e 41 54 49 56 45 3d 22 24 7b 74  CLSH_NATIVE="${t
13b0: 65 73 74 73 68 7d 22 0a 0a 09 09 62 72 65 61 6b  estsh}"....break
13c0: 0a 09 66 69 0a 64 6f 6e 65 0a 65 78 70 6f 72 74  ..fi.done.export
13d0: 20 54 43 4c 53 48 5f 4e 41 54 49 56 45 0a 0a 23   TCLSH_NATIVE..#
13e0: 20 46 75 6e 63 74 69 6f 6e 20 74 6f 20 64 65 74   Function to det
13f0: 65 72 6d 69 6e 65 20 77 68 61 74 20 62 75 69 6c  ermine what buil
1400: 64 20 6d 6f 64 65 20 69 73 20 62 65 69 6e 67 20  d mode is being 
1410: 75 73 65 64 0a 66 75 6e 63 74 69 6f 6e 20 75 73  used.function us
1420: 65 43 6f 6d 6d 6f 6e 42 75 69 6c 64 53 79 73 74  eCommonBuildSyst
1430: 65 6d 28 29 20 7b 0a 09 6c 6f 63 61 6c 20 73 63  em() {..local sc
1440: 72 69 70 74 0a 0a 09 73 63 72 69 70 74 3d 22 24  ript...script="$
1450: 31 22 0a 0a 09 69 66 20 67 72 65 70 20 2d 69 20  1"...if grep -i 
1460: 27 5e 23 20 2a 42 75 69 6c 64 43 6f 6d 70 61 74  '^# *BuildCompat
1470: 69 62 6c 65 3a 20 2a 4b 69 74 43 72 65 61 74 6f  ible: *KitCreato
1480: 72 20 2a 24 27 20 22 24 7b 73 63 72 69 70 74 7d  r *$' "${script}
1490: 22 20 3e 2f 64 65 76 2f 6e 75 6c 6c 20 32 3e 2f  " >/dev/null 2>/
14a0: 64 65 76 2f 6e 75 6c 6c 3b 20 74 68 65 6e 0a 09  dev/null; then..
14b0: 09 72 65 74 75 72 6e 20 30 0a 09 66 69 0a 0a 09  .return 0..fi...
14c0: 72 65 74 75 72 6e 20 31 0a 7d 0a 0a 23 20 43 6c  return 1.}..# Cl
14d0: 65 61 6e 75 70 20 62 75 69 6c 64 20 6c 6f 67 73  eanup build logs
14e0: 0a 66 6f 72 20 70 6b 67 20 69 6e 20 74 63 6c 20  .for pkg in tcl 
14f0: 74 63 6c 76 66 73 20 7a 6c 69 62 20 24 7b 4b 49  tclvfs zlib ${KI
1500: 54 43 52 45 41 54 4f 52 5f 50 4b 47 53 7d 20 6b  TCREATOR_PKGS} k
1510: 69 74 73 68 3b 20 64 6f 0a 09 72 6d 20 2d 66 20  itsh; do..rm -f 
1520: 22 24 7b 70 6b 67 7d 2f 62 75 69 6c 64 2e 6c 6f  "${pkg}/build.lo
1530: 67 22 0a 64 6f 6e 65 0a 0a 23 20 56 65 72 69 66  g".done..# Verif
1540: 79 20 74 68 61 74 20 65 61 63 68 20 63 6f 6d 70  y that each comp
1550: 6f 6e 65 6e 74 20 69 73 20 68 61 70 70 79 20 77  onent is happy w
1560: 69 74 68 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d  ith the environm
1570: 65 6e 74 0a 76 61 6c 69 64 61 74 65 66 61 69 6c  ent.validatefail
1580: 65 64 3d 22 30 22 0a 66 6f 72 20 70 6b 67 20 69  ed="0".for pkg i
1590: 6e 20 74 63 6c 20 74 63 6c 76 66 73 20 7a 6c 69  n tcl tclvfs zli
15a0: 62 20 24 7b 4b 49 54 43 52 45 41 54 4f 52 5f 50  b ${KITCREATOR_P
15b0: 4b 47 53 7d 20 6b 69 74 73 68 3b 20 64 6f 0a 09  KGS} kitsh; do..
15c0: 66 61 69 6c 65 64 3d 27 30 27 0a 09 69 66 20 5b  failed='0'..if [
15d0: 20 2d 66 20 22 24 7b 70 6b 67 7d 2f 2e 73 75 63   -f "${pkg}/.suc
15e0: 63 65 73 73 22 20 5d 3b 20 74 68 65 6e 0a 09 09  cess" ]; then...
15f0: 63 6f 6e 74 69 6e 75 65 0a 09 66 69 0a 0a 09 69  continue..fi...i
1600: 66 20 5b 20 2d 78 20 22 24 7b 70 6b 67 7d 2f 76  f [ -x "${pkg}/v
1610: 61 6c 69 64 61 74 65 2e 73 68 22 20 5d 3b 20 74  alidate.sh" ]; t
1620: 68 65 6e 0a 09 09 28 0a 09 09 09 63 64 20 22 24  hen...(....cd "$
1630: 7b 70 6b 67 7d 22 20 3e 2f 64 65 76 2f 6e 75 6c  {pkg}" >/dev/nul
1640: 6c 20 32 3e 2f 64 65 76 2f 6e 75 6c 6c 20 7c 7c  l 2>/dev/null ||
1650: 20 65 78 69 74 20 31 0a 0a 09 09 09 2e 2f 76 61   exit 1....../va
1660: 6c 69 64 61 74 65 2e 73 68 20 33 3e 26 31 20 34  lidate.sh 3>&1 4
1670: 3e 26 32 20 3e 3e 20 62 75 69 6c 64 2e 6c 6f 67  >&2 >> build.log
1680: 20 32 3e 26 31 20 7c 7c 20 65 78 69 74 20 31 0a   2>&1 || exit 1.
1690: 09 09 29 20 7c 7c 20 66 61 69 6c 65 64 3d 22 31  ..) || failed="1
16a0: 22 0a 0a 09 09 69 66 20 5b 20 22 24 7b 66 61 69  "....if [ "${fai
16b0: 6c 65 64 7d 22 20 3d 20 27 31 27 20 5d 3b 20 74  led}" = '1' ]; t
16c0: 68 65 6e 0a 09 09 09 65 63 68 6f 20 22 46 61 69  hen....echo "Fai
16d0: 6c 65 64 20 70 72 65 2d 72 65 71 75 69 73 69 74  led pre-requisit
16e0: 65 20 63 68 65 63 6b 20 66 6f 72 20 24 7b 70 6b  e check for ${pk
16f0: 67 7d 22 20 3e 26 32 0a 0a 09 09 09 76 61 6c 69  g}" >&2.....vali
1700: 64 61 74 65 66 61 69 6c 65 64 3d 27 31 27 0a 09  datefailed='1'..
1710: 09 66 69 0a 09 66 69 0a 64 6f 6e 65 0a 0a 69 66  .fi..fi.done..if
1720: 20 5b 20 22 24 7b 76 61 6c 69 64 61 74 65 66 61   [ "${validatefa
1730: 69 6c 65 64 7d 22 20 3d 20 27 31 27 20 5d 3b 20  iled}" = '1' ]; 
1740: 74 68 65 6e 0a 09 65 78 69 74 20 31 0a 66 69 0a  then..exit 1.fi.
1750: 0a 23 20 44 6f 20 62 75 69 6c 64 0a 66 61 69 6c  .# Do build.fail
1760: 65 64 70 6b 67 73 3d 22 22 0a 62 75 69 6c 64 66  edpkgs="".buildf
1770: 61 69 6c 65 64 3d 22 30 22 0a 66 6f 72 20 70 6b  ailed="0".for pk
1780: 67 20 69 6e 20 74 63 6c 20 74 63 6c 76 66 73 20  g in tcl tclvfs 
1790: 7a 6c 69 62 20 24 7b 4b 49 54 43 52 45 41 54 4f  zlib ${KITCREATO
17a0: 52 5f 50 4b 47 53 7d 20 6b 69 74 73 68 3b 20 64  R_PKGS} kitsh; d
17b0: 6f 0a 09 66 61 69 6c 65 64 3d 22 30 22 0a 09 69  o..failed="0"..i
17c0: 66 20 5b 20 2d 66 20 22 24 7b 70 6b 67 7d 2f 2e  f [ -f "${pkg}/.
17d0: 73 75 63 63 65 73 73 22 20 5d 3b 20 74 68 65 6e  success" ]; then
17e0: 0a 09 09 65 63 68 6f 20 2d 6e 20 22 53 6b 69 70  ...echo -n "Skip
17f0: 70 69 6e 67 20 24 7b 70 6b 67 7d 20 2e 2e 2e 22  ping ${pkg} ..."
1800: 0a 09 65 6c 73 65 0a 09 09 65 63 68 6f 20 2d 6e  ..else...echo -n
1810: 20 22 42 75 69 6c 64 69 6e 67 20 24 7b 70 6b 67   "Building ${pkg
1820: 7d 20 2e 2e 2e 22 0a 0a 09 09 28 0a 09 09 09 63  } ..."....(....c
1830: 64 20 22 24 7b 70 6b 67 7d 22 20 3e 2f 64 65 76  d "${pkg}" >/dev
1840: 2f 6e 75 6c 6c 20 32 3e 2f 64 65 76 2f 6e 75 6c  /null 2>/dev/nul
1850: 6c 20 7c 7c 20 65 78 69 74 20 31 0a 0a 09 09 09  l || exit 1.....
1860: 62 75 69 6c 64 5f 73 63 72 69 70 74 3d 27 2e 2f  build_script='./
1870: 62 75 69 6c 64 2e 73 68 27 0a 09 09 09 69 66 20  build.sh'....if 
1880: 5b 20 2d 78 20 27 6b 69 74 63 72 65 61 74 6f 72  [ -x 'kitcreator
1890: 2d 62 75 69 6c 64 2e 73 68 27 20 5d 3b 20 74 68  -build.sh' ]; th
18a0: 65 6e 0a 09 09 09 09 62 75 69 6c 64 5f 73 63 72  en.....build_scr
18b0: 69 70 74 3d 27 2e 2f 6b 69 74 63 72 65 61 74 6f  ipt='./kitcreato
18c0: 72 2d 62 75 69 6c 64 2e 73 68 27 0a 09 09 09 66  r-build.sh'....f
18d0: 69 0a 0a 09 09 09 69 66 20 5b 20 2d 66 20 22 24  i.....if [ -f "$
18e0: 7b 62 75 69 6c 64 5f 73 63 72 69 70 74 7d 22 20  {build_script}" 
18f0: 5d 3b 20 74 68 65 6e 0a 09 09 09 09 62 75 69 6c  ]; then.....buil
1900: 64 5f 73 63 72 69 70 74 73 3d 28 22 24 7b 62 75  d_scripts=("${bu
1910: 69 6c 64 5f 73 63 72 69 70 74 7d 22 29 0a 09 09  ild_script}")...
1920: 09 65 6c 73 65 0a 09 09 09 09 62 75 69 6c 64 5f  .else.....build_
1930: 73 63 72 69 70 74 73 3d 28 24 28 65 63 68 6f 20  scripts=($(echo 
1940: 62 75 69 6c 64 2d 6b 69 74 63 72 65 61 74 6f 72  build-kitcreator
1950: 2d 2a 2e 73 68 29 29 0a 09 09 09 66 69 0a 0a 09  -*.sh))....fi...
1960: 09 09 63 61 6c 6c 5f 70 6b 67 5f 69 6e 69 74 3d  ..call_pkg_init=
1970: 27 31 27 0a 09 09 09 66 6f 72 20 62 75 69 6c 64  '1'....for build
1980: 5f 73 63 72 69 70 74 20 69 6e 20 22 24 7b 62 75  _script in "${bu
1990: 69 6c 64 5f 73 63 72 69 70 74 73 5b 40 5d 7d 22  ild_scripts[@]}"
19a0: 3b 20 64 6f 0a 09 09 09 09 69 66 20 75 73 65 43  ; do.....if useC
19b0: 6f 6d 6d 6f 6e 42 75 69 6c 64 53 79 73 74 65 6d  ommonBuildSystem
19c0: 20 22 24 7b 62 75 69 6c 64 5f 73 63 72 69 70 74   "${build_script
19d0: 7d 22 3b 20 74 68 65 6e 0a 09 09 09 09 09 28 0a  }"; then......(.
19e0: 09 09 09 09 09 09 2e 20 2e 2e 2f 63 6f 6d 6d 6f  ....... ../commo
19f0: 6e 2f 63 6f 6d 6d 6f 6e 2e 73 68 0a 09 09 09 09  n/common.sh.....
1a00: 09 09 2e 20 22 24 7b 62 75 69 6c 64 5f 73 63 72  ... "${build_scr
1a10: 69 70 74 7d 22 0a 0a 09 09 09 09 09 09 73 65 74  ipt}"........set
1a20: 20 2d 78 0a 0a 09 09 09 09 09 09 69 66 20 5b 20   -x........if [ 
1a30: 22 24 7b 63 61 6c 6c 5f 70 6b 67 5f 69 6e 69 74  "${call_pkg_init
1a40: 7d 22 20 3d 20 27 31 27 20 5d 3b 20 74 68 65 6e  }" = '1' ]; then
1a50: 0a 09 09 09 09 09 09 09 69 6e 69 74 20 7c 7c 20  ........init || 
1a60: 64 69 65 20 27 69 6e 69 74 20 66 61 69 6c 65 64  die 'init failed
1a70: 27 0a 09 09 09 09 09 09 66 69 0a 0a 09 09 09 09  '.......fi......
1a80: 09 09 70 72 65 64 6f 77 6e 6c 6f 61 64 20 7c 7c  ..predownload ||
1a90: 20 64 69 65 20 27 70 72 65 64 6f 77 6e 6c 6f 61   die 'predownloa
1aa0: 64 20 66 61 69 6c 65 64 27 0a 09 09 09 09 09 09  d failed'.......
1ab0: 64 6f 77 6e 6c 6f 61 64 20 7c 7c 20 64 69 65 20  download || die 
1ac0: 27 64 6f 77 6e 6c 6f 61 64 20 66 61 69 6c 65 64  'download failed
1ad0: 27 0a 09 09 09 09 09 09 70 6f 73 74 64 6f 77 6e  '.......postdown
1ae0: 6c 6f 61 64 20 7c 7c 20 64 69 65 20 27 70 6f 73  load || die 'pos
1af0: 74 64 6f 77 6e 6c 6f 61 64 20 66 61 69 6c 65 64  tdownload failed
1b00: 27 0a 0a 09 09 09 09 09 09 65 78 74 72 61 63 74  '........extract
1b10: 20 7c 7c 20 64 69 65 20 27 65 78 74 72 61 63 74   || die 'extract
1b20: 20 66 61 69 6c 65 64 27 0a 0a 09 09 09 09 09 09   failed'........
1b30: 61 70 70 6c 79 5f 70 61 74 63 68 65 73 20 7c 7c  apply_patches ||
1b40: 20 64 69 65 20 27 61 70 70 6c 79 20 70 61 74 63   die 'apply patc
1b50: 68 65 73 20 66 61 69 6c 65 64 27 0a 0a 09 09 09  hes failed'.....
1b60: 09 09 09 63 64 20 22 24 7b 77 6f 72 6b 64 69 72  ...cd "${workdir
1b70: 7d 22 20 7c 7c 20 65 78 69 74 20 31 0a 0a 09 09  }" || exit 1....
1b80: 09 09 09 09 70 72 65 63 6f 6e 66 69 67 75 72 65  ....preconfigure
1b90: 20 7c 7c 20 64 69 65 20 27 70 72 65 63 6f 6e 66   || die 'preconf
1ba0: 69 67 75 72 65 20 66 61 69 6c 65 64 27 0a 09 09  igure failed'...
1bb0: 09 09 09 09 63 6f 6e 66 69 67 75 72 65 20 7c 7c  ....configure ||
1bc0: 20 64 69 65 20 27 63 6f 6e 66 69 67 75 72 65 20   die 'configure 
1bd0: 66 61 69 6c 65 64 27 0a 09 09 09 09 09 09 70 6f  failed'.......po
1be0: 73 74 63 6f 6e 66 69 67 75 72 65 20 7c 7c 20 64  stconfigure || d
1bf0: 69 65 20 27 70 6f 73 74 63 6f 6e 66 69 67 75 72  ie 'postconfigur
1c00: 65 20 66 61 69 6c 65 64 27 0a 0a 09 09 09 09 09  e failed'.......
1c10: 09 70 72 65 62 75 69 6c 64 20 7c 7c 20 64 69 65  .prebuild || die
1c20: 20 27 70 72 65 62 75 69 6c 64 20 66 61 69 6c 65   'prebuild faile
1c30: 64 27 0a 09 09 09 09 09 09 62 75 69 6c 64 20 7c  d'.......build |
1c40: 7c 20 64 69 65 20 27 62 75 69 6c 64 20 66 61 69  | die 'build fai
1c50: 6c 65 64 27 0a 09 09 09 09 09 09 70 6f 73 74 62  led'.......postb
1c60: 75 69 6c 64 20 7c 7c 20 64 69 65 20 27 70 6f 73  uild || die 'pos
1c70: 74 62 75 69 6c 64 20 66 61 69 6c 65 64 27 0a 0a  tbuild failed'..
1c80: 09 09 09 09 09 09 70 72 65 69 6e 73 74 61 6c 6c  ......preinstall
1c90: 20 7c 7c 20 64 69 65 20 27 70 72 65 69 6e 73 74   || die 'preinst
1ca0: 61 6c 6c 20 66 61 69 6c 65 64 27 0a 09 09 09 09  all failed'.....
1cb0: 09 09 69 6e 73 74 61 6c 6c 20 7c 7c 20 64 69 65  ..install || die
1cc0: 20 27 69 6e 73 74 61 6c 6c 20 66 61 69 6c 65 64   'install failed
1cd0: 27 0a 09 09 09 09 09 09 70 6f 73 74 69 6e 73 74  '.......postinst
1ce0: 61 6c 6c 20 7c 7c 20 64 69 65 20 27 70 6f 73 74  all || die 'post
1cf0: 69 6e 73 74 61 6c 6c 20 66 61 69 6c 65 64 27 0a  install failed'.
1d00: 0a 09 09 09 09 09 09 63 72 65 61 74 65 72 75 6e  .......createrun
1d10: 74 69 6d 65 20 7c 7c 20 64 69 65 20 27 63 72 65  time || die 'cre
1d20: 61 74 65 72 75 6e 74 69 6d 65 20 66 61 69 6c 65  ateruntime faile
1d30: 64 27 0a 0a 09 09 09 09 09 09 73 65 74 20 2b 78  d'........set +x
1d40: 0a 09 09 09 09 09 29 20 33 3e 26 31 20 34 3e 26  ......) 3>&1 4>&
1d50: 32 20 3e 3e 20 62 75 69 6c 64 2e 6c 6f 67 20 32  2 >> build.log 2
1d60: 3e 26 31 20 7c 7c 20 65 78 69 74 20 31 0a 09 09  >&1 || exit 1...
1d70: 09 09 65 6c 73 65 0a 09 09 09 09 09 22 24 7b 62  ..else......"${b
1d80: 75 69 6c 64 5f 73 63 72 69 70 74 7d 22 20 33 3e  uild_script}" 3>
1d90: 26 31 20 34 3e 26 32 20 3e 3e 20 62 75 69 6c 64  &1 4>&2 >> build
1da0: 2e 6c 6f 67 20 32 3e 26 31 20 7c 7c 20 65 78 69  .log 2>&1 || exi
1db0: 74 20 31 0a 09 09 09 09 66 69 0a 0a 09 09 09 09  t 1.....fi......
1dc0: 63 61 6c 6c 5f 70 6b 67 5f 69 6e 69 74 3d 27 30  call_pkg_init='0
1dd0: 27 0a 09 09 09 64 6f 6e 65 0a 09 09 29 20 7c 7c  '....done...) ||
1de0: 20 66 61 69 6c 65 64 3d 22 31 22 0a 09 66 69 0a   failed="1"..fi.
1df0: 0a 09 69 66 20 5b 20 22 24 7b 66 61 69 6c 65 64  ..if [ "${failed
1e00: 7d 22 20 3d 20 22 31 22 20 5d 3b 20 74 68 65 6e  }" = "1" ]; then
1e10: 0a 09 09 65 63 68 6f 20 22 20 66 61 69 6c 65 64  ...echo " failed
1e20: 2e 22 0a 09 09 66 61 69 6c 65 64 70 6b 67 73 3d  ."...failedpkgs=
1e30: 22 24 7b 66 61 69 6c 65 64 70 6b 67 73 7d 20 24  "${failedpkgs} $
1e40: 7b 70 6b 67 7d 22 0a 09 65 6c 73 65 0a 09 09 65  {pkg}"..else...e
1e50: 63 68 6f 20 22 20 64 6f 6e 65 2e 22 0a 09 66 69  cho " done."..fi
1e60: 0a 0a 09 63 61 73 65 20 22 24 7b 70 6b 67 7d 22  ...case "${pkg}"
1e70: 20 69 6e 0a 09 09 74 63 6c 29 0a 09 09 09 54 43   in...tcl)....TC
1e80: 4c 43 4f 4e 46 49 47 44 49 52 3d 24 28 66 69 6e  LCONFIGDIR=$(fin
1e90: 64 20 22 24 28 70 77 64 29 2f 74 63 6c 2f 62 75  d "$(pwd)/tcl/bu
1ea0: 69 6c 64 22 20 2d 6e 61 6d 65 20 74 63 6c 43 6f  ild" -name tclCo
1eb0: 6e 66 69 67 2e 73 68 20 7c 20 68 65 61 64 20 2d  nfig.sh | head -
1ec0: 31 20 7c 20 73 65 64 20 27 73 40 2f 5b 5e 2f 5d  1 | sed 's@/[^/]
1ed0: 2a 24 40 40 27 29 0a 09 09 09 54 43 4c 43 4f 4e  *$@@')....TCLCON
1ee0: 46 49 47 44 49 52 54 41 49 4c 3d 22 24 28 62 61  FIGDIRTAIL="$(ba
1ef0: 73 65 6e 61 6d 65 20 22 24 7b 54 43 4c 43 4f 4e  sename "${TCLCON
1f00: 46 49 47 44 49 52 7d 22 29 22 0a 09 09 09 65 78  FIGDIR}")"....ex
1f10: 70 6f 72 74 20 54 43 4c 43 4f 4e 46 49 47 44 49  port TCLCONFIGDI
1f20: 52 20 54 43 4c 43 4f 4e 46 49 47 44 49 52 54 41  R TCLCONFIGDIRTA
1f30: 49 4c 0a 0a 09 09 09 23 20 49 66 20 54 63 6c 20  IL.....# If Tcl 
1f40: 77 61 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  was compiled wit
1f50: 68 20 74 68 72 65 61 64 73 20 65 6e 61 62 6c 65  h threads enable
1f60: 64 20 70 61 73 73 20 2d 2d 65 6e 61 62 6c 65 2d  d pass --enable-
1f70: 74 68 72 65 61 64 73 20 74 6f 20 61 6c 6c 20 73  threads to all s
1f80: 75 62 2d 70 72 6f 6a 65 63 74 73 0a 09 09 09 69  ub-projects....i
1f90: 66 20 5b 20 22 24 7b 4b 49 54 43 52 45 41 54 4f  f [ "${KITCREATO
1fa0: 52 5f 41 44 44 5f 45 4e 41 42 4c 45 5f 54 48 52  R_ADD_ENABLE_THR
1fb0: 45 41 44 53 3a 2d 31 7d 22 20 21 3d 20 27 30 27  EADS:-1}" != '0'
1fc0: 20 5d 3b 20 74 68 65 6e 0a 09 09 09 09 69 66 20   ]; then.....if 
1fd0: 5b 20 22 24 28 20 2e 20 22 24 7b 54 43 4c 43 4f  [ "$( . "${TCLCO
1fe0: 4e 46 49 47 44 49 52 7d 2f 74 63 6c 43 6f 6e 66  NFIGDIR}/tclConf
1ff0: 69 67 2e 73 68 22 20 26 26 20 65 63 68 6f 20 22  ig.sh" && echo "
2000: 24 7b 54 43 4c 5f 54 48 52 45 41 44 53 3a 2d 30  ${TCL_THREADS:-0
2010: 7d 22 20 29 22 20 3d 20 27 31 27 20 5d 3b 20 74  }" )" = '1' ]; t
2020: 68 65 6e 0a 09 09 09 09 09 43 4f 4e 46 49 47 55  hen......CONFIGU
2030: 52 45 45 58 54 52 41 3d 22 24 7b 43 4f 4e 46 49  REEXTRA="${CONFI
2040: 47 55 52 45 45 58 54 52 41 7d 20 2d 2d 65 6e 61  GUREEXTRA} --ena
2050: 62 6c 65 2d 74 68 72 65 61 64 73 22 0a 09 09 09  ble-threads"....
2060: 09 66 69 0a 09 09 09 66 69 0a 09 09 09 3b 3b 0a  .fi....fi....;;.
2070: 09 65 73 61 63 0a 0a 09 69 66 20 5b 20 22 24 7b  .esac...if [ "${
2080: 66 61 69 6c 65 64 7d 22 20 3d 20 22 31 22 20 5d  failed}" = "1" ]
2090: 3b 20 74 68 65 6e 0a 09 09 62 75 69 6c 64 66 61  ; then...buildfa
20a0: 69 6c 65 64 3d 22 31 22 0a 09 65 6c 73 65 0a 09  iled="1"..else..
20b0: 09 74 6f 75 63 68 20 22 24 7b 70 6b 67 7d 2f 2e  .touch "${pkg}/.
20c0: 73 75 63 63 65 73 73 22 0a 09 66 69 0a 64 6f 6e  success"..fi.don
20d0: 65 0a 0a 69 66 20 5b 20 2d 6e 20 22 24 7b 66 61  e..if [ -n "${fa
20e0: 69 6c 65 64 70 6b 67 73 7d 22 20 5d 3b 20 74 68  iledpkgs}" ]; th
20f0: 65 6e 0a 09 65 63 68 6f 20 22 46 61 69 6c 65 64  en..echo "Failed
2100: 20 74 6f 20 62 75 69 6c 64 3a 24 7b 66 61 69 6c   to build:${fail
2110: 65 64 70 6b 67 73 7d 22 0a 66 69 0a 0a 69 66 20  edpkgs}".fi..if 
2120: 5b 20 22 24 7b 62 75 69 6c 64 66 61 69 6c 65 64  [ "${buildfailed
2130: 7d 22 20 21 3d 20 22 30 22 20 5d 3b 20 74 68 65  }" != "0" ]; the
2140: 6e 0a 09 65 63 68 6f 20 27 57 41 52 4e 49 4e 47  n..echo 'WARNING
2150: 3a 20 42 75 69 6c 64 20 69 73 20 6c 69 6b 65 6c  : Build is likel
2160: 79 20 69 6e 63 6f 6d 70 6c 65 74 65 20 6f 72 20  y incomplete or 
2170: 66 61 69 6c 65 64 2e 27 20 3e 26 32 0a 66 69 0a  failed.' >&2.fi.
2180: 0a 63 70 20 27 6b 69 74 73 68 2f 62 75 69 6c 64  .cp 'kitsh/build
2190: 27 2f 6b 69 74 73 68 2d 2a 2f 6c 69 62 74 63 6c  '/kitsh-*/libtcl
21a0: 6b 69 74 2a 20 2e 20 3e 2f 64 65 76 2f 6e 75 6c  kit* . >/dev/nul
21b0: 6c 20 32 3e 2f 64 65 76 2f 6e 75 6c 6c 0a 63 70  l 2>/dev/null.cp
21c0: 20 27 6b 69 74 73 68 2f 62 75 69 6c 64 27 2f 6b   'kitsh/build'/k
21d0: 69 74 73 68 2d 2a 2f 6b 69 74 20 22 74 63 6c 6b  itsh-*/kit "tclk
21e0: 69 74 2d 24 7b 54 43 4c 56 45 52 53 7d 22 20 3e  it-${TCLVERS}" >
21f0: 2f 64 65 76 2f 6e 75 6c 6c 20 32 3e 2f 64 65 76  /dev/null 2>/dev
2200: 2f 6e 75 6c 6c 0a 69 66 20 5b 20 21 20 2d 66 20  /null.if [ ! -f 
2210: 22 74 63 6c 6b 69 74 2d 24 7b 54 43 4c 56 45 52  "tclkit-${TCLVER
2220: 53 7d 22 20 5d 3b 20 74 68 65 6e 0a 09 63 70 20  S}" ]; then..cp 
2230: 27 6b 69 74 73 68 2f 62 75 69 6c 64 27 2f 6b 69  'kitsh/build'/ki
2240: 74 73 68 2d 2a 2f 6b 69 74 2e 65 78 65 20 22 74  tsh-*/kit.exe "t
2250: 63 6c 6b 69 74 2d 24 7b 54 43 4c 56 45 52 53 7d  clkit-${TCLVERS}
2260: 22 20 3e 2f 64 65 76 2f 6e 75 6c 6c 20 32 3e 2f  " >/dev/null 2>/
2270: 64 65 76 2f 6e 75 6c 6c 0a 66 69 0a 0a 66 6f 72  dev/null.fi..for
2280: 20 70 6f 73 74 73 63 72 69 70 74 20 69 6e 20 63   postscript in c
2290: 6f 6d 6d 6f 6e 2f 70 6f 73 74 2f 2a 3b 20 64 6f  ommon/post/*; do
22a0: 0a 09 69 66 20 5b 20 21 20 2d 66 20 22 24 7b 70  ..if [ ! -f "${p
22b0: 6f 73 74 73 63 72 69 70 74 7d 22 20 5d 3b 20 74  ostscript}" ]; t
22c0: 68 65 6e 0a 09 09 63 6f 6e 74 69 6e 75 65 0a 09  hen...continue..
22d0: 66 69 0a 0a 09 22 24 7b 70 6f 73 74 73 63 72 69  fi..."${postscri
22e0: 70 74 7d 22 0a 64 6f 6e 65 0a 0a 65 78 69 74 20  pt}".done..exit 
22f0: 22 24 7b 62 75 69 6c 64 66 61 69 6c 65 64 7d 22  "${buildfailed}"
2300: 0a                                               .