build 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. #!/bin/sh
  2. # Awk out the version from source
  3. ver="?.?.?"
  4. ver=`grep "char" src/main.c | awk '/egg_version/ {print $4}' | sed -e 's/\"//g' | sed -e 's/\;//g'`
  5. numver=`grep "int" src/main.c | awk '/egg_numver =/ {print $4}' | sed -e 's/\;//g'`
  6. PACKNAME=`grep "PACKNAME " pack/pack.cfg | awk '/PACKNAME/ {print $2}'`
  7. echo "*** wraith v${ver}/${numver} builder ***"
  8. usage()
  9. {
  10. echo "Usage: $0 [-d] [-c] [-T] [-t dir] type"
  11. echo " -c - Cleans up old binaries/files before compile (default: off)"
  12. echo " -d - Builds a debug package. (default: off)"
  13. echo " -t dir - Where to search for TCL libraries. (usually not needed)"
  14. echo " -T - Builds TCL if it is not on the system (defauly: off)"
  15. echo " type - One of the following: all, leaf, hub."
  16. }
  17. debug=0
  18. all=0
  19. hub=0
  20. leaf=0
  21. clean=0
  22. type=
  23. tcldir=
  24. buildtcl=0
  25. while getopts t:Tcdh opt ; do
  26. case "$opt" in
  27. c) clean=1 ;;
  28. d) debug=1 ;;
  29. t) tcldir="$OPTARG" ;;
  30. h) usage; exit 0 ;;
  31. T) buildtcl=1 ;;
  32. *) usage; exit 1 ;;
  33. esac
  34. done
  35. shift $(($OPTIND - 1))
  36. if [ $buildtcl = "1" ]; then
  37. echo "Hold tight"
  38. misc/maketcl
  39. rm -rf tcl8.4.4*
  40. echo "Done. (You must run ./build again with normal parameters)"
  41. exit 0
  42. fi
  43. if test -z "$1"; then
  44. usage
  45. exit 1
  46. else
  47. if [ $1 = "all" ]; then
  48. all=1
  49. elif [ $1 = "leaf" ]; then
  50. leaf=1
  51. type="leaf"
  52. elif [ $1 = "hub" ]; then
  53. hub=1
  54. type="hub"
  55. else
  56. all=1
  57. # usage
  58. # exit 1
  59. fi
  60. fi
  61. if [ $debug = "1" ]; then
  62. d="d"
  63. else
  64. d=""
  65. fi
  66. if [ $all = "1" ]; then
  67. type="all"
  68. leaf=1
  69. hub=1
  70. fi
  71. ############# CHECK FOR pack/ FILES #################
  72. # Figure what bins we're making
  73. case `uname` in
  74. Linux) os=Linux;;
  75. FreeBSD) case `uname -r` in
  76. 5*) os=FreeBSD5;;
  77. 4*) os=FreeBSD4;;
  78. 3*) os=FreeBSD3;;
  79. esac;;
  80. OpenBSD) os=OpenBSD;;
  81. esac
  82. if test -z $os
  83. then
  84. echo "[!] Automated packaging disabled, `uname` isn't recognized"
  85. fi
  86. echo "[*] Building ${PACKNAME}::${type} for $os"
  87. # Run ./configure, then verify it's ok
  88. echo "[*] Configuring..."
  89. umask 077 >/dev/null
  90. if test -z "$tcldir"; then
  91. echo "[*] Searching for TCL in default paths (use '-t dir' to change)"
  92. ./configure --silent --disable-tcl-threads
  93. else
  94. echo "[*] Searching for TCL in: $tcldir"
  95. ./configure --silent --disable-tcl-threads --with-tcllib=${tcldir}/lib/libtcl8.4.a --with-tclinc=${tcldir}/include/tcl.h
  96. fi
  97. MAKE="`which gmake`"
  98. if test -z "${MAKE}"; then
  99. MAKE="`which make`"
  100. fi
  101. echo "[*] Using '${MAKE}'"
  102. # make clean, just in case
  103. if [ $clean = "1" ]; then
  104. echo "[*] Cleaning up old binaries/files..."
  105. ${MAKE} clean > /dev/null
  106. fi
  107. _leaf()
  108. {
  109. if [ $leaf = "1" ]; then
  110. # Build leaf and check
  111. echo "[*] Building ${d}leaf..."
  112. ${MAKE} ${d}leaf -s
  113. if ! test -f leaf
  114. then
  115. echo "[!] ${d}leaf build failed"
  116. exit 1
  117. fi
  118. fi
  119. }
  120. _hub()
  121. {
  122. if [ $hub = "1" ]; then
  123. # Build hub and check
  124. echo "[*] Building ${d}hub..."
  125. ${MAKE} ${d}hub -s
  126. if ! test -f hub
  127. then
  128. echo "[!] ${d}hub build failed"
  129. exit 1
  130. fi
  131. fi
  132. }
  133. if [ -f stamp.hub ]; then
  134. _hub
  135. _leaf
  136. else
  137. _leaf
  138. _hub
  139. fi
  140. # Wrap it nicely up into an archive
  141. echo "[*] Packaging..."
  142. if [ $all = "1" ]; then
  143. fls="leaf hub"
  144. elif [ $leaf = "1" ]; then
  145. fls="leaf"
  146. elif [ $hub = "1" ]; then
  147. fls="hub"
  148. fi
  149. if test -n "$d"; then
  150. d="-debug"
  151. fi
  152. for bin in $fls
  153. do
  154. mv -f $bin $bin.$os.$numver${d}
  155. done
  156. tar -zcf ${PACKNAME}.$os.$numver${d}.tgz *.$os.$numver${d}
  157. rm -f *$os.$numver${d}
  158. echo "Binaries are now in '${PACKNAME}.$os.$numver${d}.tgz'."
  159. exit 0