#!/bin/bash # +-------------------------------------------------------------------+ # ! ! # ! Name: _build ! # ! ! # ! Desc: build Hercules with various options ! # ! ! # ! Usage: ! # ! ! # ! >>- build -+------------------------+-+---------------------+-> ! # ! ! ! ! ! ! # ! +- -c --+- i586 -------+-+ +- -t -+-- fthread -+-+ ! # ! ! ! ! ! ! # ! +- i686 -------+ +-- f -------+ ! # ! ! ! ! ! ! # ! +- pentium ----+ +-- pthread -+ ! # ! ! ! ! ! ! # ! +- athlon -----+ +-- p -------+ ! # ! ! ! ! # ! +- pentiumpro -+ ! # ! ! ! ! # ! +- p4 ---------+ ! # ! ! ! ! # ! +- pentium4 ---+ ! # ! ! # ! >---------+-------+------------------------------------------> ! # ! ! ! ! # ! +- -f --+ force rebuilding of configure ! # ! ! # ! ! # ! >---------+-------------------------------------+------------>< ! # ! ! ! ! # ! +- -p -- number_of_processors (<=8) --+ ! # ! ! # ! ! # ! Defaults: build -c `uname -m` -t f -p 2 ! # ! ! # +-------------------------------------------------------------------+ # ! # ! Change Log: '$Log$ # ! Change Log: 'Revision 1.20 2003/10/12 06:48:13 vbandke # ! Change Log: 'remove extraneous CR from _build scripts # ! Change Log: ' # ! Change Log: 'Revision 1.19 2003/10/06 19:51:24 vbandke # ! Change Log: 'Add support for Linux build. Add support for -p flag (number of processors) # ! Change Log: ' # ! Change Log: 'Revision 1.18 2003/08/26 11:53:08 vbandke # ! Change Log: 'remove reference to ABOUT-NLS. Add option -f to forece generation of ./configure # ! Change Log: ' # ! Change Log: 'Revision 1.17 2003/08/15 13:56:14 vbandke # ! Change Log: 'fixed minor details # ! Change Log: ' # ! Change Log: 'Revision 1.16 2002/12/16 16:19:17 vbandke # ! Change Log: 'remove --prefix=`pwd` from ./configure invocation # ! Change Log: ' # ! Change Log: 'Revision 1.15 2002/12/15 21:56:03 vbandke # ! Change Log: 'Complete rework. Include support for P4 processor # ! Change Log: ' function pause() { echo -e -n "${MSG}Press the ${MSGHI}ENTER${MSG} key to continue" read dummy } function log() { if [ $# != 0 ] ; then THE_TIME=`date +%H:%M:%S` echo -e "${MSG}${THE_TIME}${DEFAULT} - ${MSGHI}${1}${DEFAULT}" echo -e "${THE_TIME} - ${1}" >>${LOGFILE} 2>&1 fi return } function logn() { if [ $# != 0 ] ; then echo -e " ${MSGHI}${1}${DEFAULT}" echo -e " ${1}" >>${LOGFILE} 2>&1 fi return } function loga() { if [ $# != 0 ] ; then THE_TIME=`date +%H:%M:%S` echo -e "${MSG}${THE_TIME}${DEFAULT} - ${ERRHI}\a${1}${DEFAULT}" echo -e "${THE_TIME} - ${1}" >>${LOGFILE} 2>&1 fi return } function lower() { if [ "${1}X" = "X" ] ; then echo "" else echo -E "${1}" | tr [:upper:] [:lower:] fi } function upper() { if [ "${1}X" = "X" ] ; then echo "" else echo -E "${1}" | tr [:lower:] [:upper:] fi } function abort() { loga "*******************************************************************" loga "* *" loga "* A B O R T *" loga "* ========= *" loga "* *" loga "*******************************************************************" logn " " logn "${1}" logn " " logn "Check error messages in logfile ${LOGFILE}" logn " " pause exit } clear . set_color_vars if [ ${OSTYPE} = cygwin ] ; then THIS_CYGWIN=`cygcheck -s | grep -i dll\ version:` THIS_CYGWIN=${THIS_CYGWIN##*: } DEFTHREAD=fthreads else THIS_CYGWIN=n/a DEFTHREAD=posix fi MYCMD=`basename ${0}` LOGFILE=`pwd`/${MYCMD}.log cat >${LOGFILE}<] [-t ] [-n] [-f] [-p number_of_CPUs]" logn " ! ! ! ! !" logn " ! ! ! ! +--- Number of emulated" logn " ! ! ! ! Hercules processors" logn " ! ! ! +-------- force rebuild of configure" logn " ! ! +------------- no-ansi, do not" logn " ! ! use fancy colours" logn " ! +-------------------------------- thread model to use" logn " ! f or fthread or fish" logn " ! p or pthread or posix" logn " +----------------------------------------------- target cpu type " logn " i586 for Pentium " logn " i686 for Pentium Pro " logn " p4 for Pentium 4 " logn " " logn " The default is ${MYCMD} -c `uname -m` -t ${DEFTHREAD} -p 2" logn " " pause exit ;; esac done if ! ${CPU_SET} ; then CPU_TYPE=`uname -m` HOST_OPT= fi if ! ${NUMCPU_SET} ; then NUMCPU=2 fi case ${OSTYPE} in cygwin) OSTEXT=cygwin ;; linux*) OSTEXT=linux-gnu ;; *) abort "This script does not work for OSTYPE=${OSTYPE}" ;; esac CPU_TYPE=`lower ${CPU_TYPE}` log "CPU type ................................ ${CPU_TYPE}" case ${CPU_TYPE} in i586 | pentium | athlon) HOST_OPT=--host=i586-pc-${OSTEXT} TARG_CPU=i586 ;; i686 | pentiumpro) HOST_OPT=--host=i686-pc-${OSTEXT} TARG_CPU=i686 ;; p4 | pentium4) # HOST_OPT=--host=p4-pc-${OSTEXT} TARG_CPU=p4 OPTOPT="-fomit-frame-pointer -O3 -march=pentium4 -mcpu=pentium4" OPTOPT=${OPTOPT}" -mmmx -msse -msse2 -minline-all-stringops -mfpmath=sse" OPTOPT=${OPTOPT}" -maccumulate-outgoing-args" ;; *) abort "Invalid CPU type ${CPU_TYPE}" ;; esac log "Number of host processors supported ..... ${NUMCPU}" if ! ${THREAD_SET} ; then if [ ${OSTYPE} = cygwin ] ; then THREAD_TYPE=fthread else THREAD_TYPE=pthread fi fi THREAD_TYPE=`lower ${THREAD_TYPE}` log "Threading model being used .............. ${THREAD_TYPE}" case ${THREAD_TYPE} in f | fthread* | fish ) FTHREAD=yes THREAD_TYPE="optimzed thread (Fish)" ;; p | pthread* | posix) FTHREAD=no THREAD_TYPE="standard thread (posix)" ;; *) abort "Invalid thread model \"${THREAD_TYPE}\"" ;; esac if test -f Makefile ; then log "Cleaning up previous installation" log "make uninstall" cat >>${LOGFILE} <>${LOGFILE} 2>&1 log "make distclean" cat >>${LOGFILE} <>${LOGFILE} 2>&1 fi if ! test -f ./configure ; then log "Running autogen.sh" cat >>${LOGFILE} <>${LOGFILE} 2>&1 || abort "autogen processing failed" log "autogen completed successfully" fi logn "./configure ${HOST_OPT}" logn " --enable-fthreads=${FTHREAD}" logn " --enable-custom=\"compiled for ${TARG_CPU}\"" if [ "${OPTOPT}X" != "X" ] ; then logn " --enable-optimization=\"${OPTOPT:0:27}\"... " fi logn " --enable-multi-cpu=${NUMCPU} " cat >>${LOGFILE} <>${LOGFILE} 2>&1 else ./configure ${HOST_OPT} \ --enable-fthreads=${FTHREAD} \ --enable-custom="compiled for ${TARG_CPU}" \ --enable-cckd-bzip2 \ --enable-het-bzip2 \ --enable-multi-cpu=${NUMCPU} >>${LOGFILE} 2>&1 fi done RC=$? if [ ${RC} != 0 ] ; then abort "./configure script failed" fi rm -f version.o 2>/dev/null log "make" cat >>${LOGFILE} <>${LOGFILE} 2>&1 || abort "make failed" log "make install-strip" cat >>${LOGFILE} <>${LOGFILE} 2>&1 || abort "make install-strip failed" cat >>${LOGFILE} <