Home | History | Annotate | Line # | Download | only in dist
      1 #!/bin/sh
      2 # Build all of the am-utils package in a directory A.<cpu-company-system>
      3 # Used by am-utils users.
      4 # Erez Zadok <ezk AT am-utils.org>
      5 #
      6 # run "buildall -h" to get usage
      7 #
      8 #set -x
      9 
     10 ##############################################################################
     11 # first test if we are in the right directory to run this script
     12 # change to the right directory
     13 test -f ../config.guess && cd ..
     14 test -f ../../config.guess && cd ../..
     15 pwd=$(pwd)
     16 host_alias=$(cd /tmp; $pwd/config.guess.long)
     17 if test -z "$host_alias" ; then
     18 	echo "$0: must run from the source or the A. directory."
     19 	echo "$0: cannot find $pwd/config.guess"
     20 	exit 1
     21 else
     22 	:
     23 fi
     24 
     25 ##############################################################################
     26 # pattern of lines to remove from config.cache (for developers only)
     27 # Example: if you change TRY_COMPILE_NFS, redo these:
     28 #pat='fhandle|nfs_fh|nfs_args|struct_nfs|opt'
     29 #pat='style_|mount_trap|mtype|transport|dref'
     30 #pat='mntent|mnttab'
     31 #pat='nfs_args|fh_len|irix|proto|vers'
     32 #pat='3|proto|tcp|ver|nfs_prot|mtype'
     33 #pat='trap|style|mtype|transport|os_libs|restartable|unmount_args|yp_order'
     34 #pat='yp_all|nsl|nis'
     35 
     36 ##############################################################################
     37 # initialize variables (build command, config command, variables)
     38 bld_cmd=""
     39 bld_flags=""
     40 cnf_cmd=""
     41 cnf_flags="-C"			# use config.cache cache file
     42 inst_cmd=""
     43 inst_flags=""
     44 mkcnf_cmd=""
     45 vars=""
     46 expvars=""
     47 default=yes
     48 
     49 ##############################################################################
     50 # check if CFLAGS or AM_CFLAGS was passed
     51 test -z "$CFLAGS" || vars="$vars CFLAGS=\"${CFLAGS}\""
     52 test -z "$CFLAGS" || expvars="$expvars CFLAGS"
     53 test -z "$AM_CFLAGS" || vars="$vars AM_CFLAGS=\"${AM_CFLAGS}\""
     54 
     55 ##############################################################################
     56 # functions
     57 
     58 add_gcc_flags1 () {
     59     case "${CC}" in
     60 	cc | */cc )
     61 		# do nothing
     62 		;;
     63 	    * )
     64 		vars="$vars AM_CFLAGS=\"-Werror\""
     65 		AM_CFLAGS="-Werror"
     66 		expvars="$expvars AM_CFLAGS"
     67 		;;
     68     esac
     69 }
     70 
     71 add_gcc_flags2 () {
     72     case "${CC}" in
     73 	cc | */cc )
     74 		# do nothing
     75 		;;
     76 	    * )
     77 		vars="$vars AM_CFLAGS=\"-Wall -Werror\""
     78 		AM_CFLAGS="-Wall -Werror"
     79 		expvars="$expvars AM_CFLAGS"
     80 		;;
     81     esac
     82 }
     83 
     84 add_shared_flags () {
     85     cnf_cmd="$cnf_cmd --enable-shared --disable-static"
     86 }
     87 
     88 add_prefix_flags () {
     89     cnf_cmd="$cnf_cmd --prefix=/usr/local/AMD"
     90 }
     91 
     92 ##############################################################################
     93 # iterate over all options, and set the command to run with any variables
     94 while [ $# != 0 ]; do
     95 case "$1" in
     96     -b )
     97 	# look for GNU make if possible
     98 	gmake --version -f /dev/null > /dev/null 2>&1
     99 	if [ $? = 0 ]
    100 	then
    101 	    bld_cmd="${MAKE:-gmake}"
    102 	else
    103 	    bld_cmd="${MAKE:-make}"
    104 	fi
    105 	default=no
    106 	shift
    107     ;;
    108 
    109     -i )
    110 	# look for GNU make if possible
    111 	gmake --version -f /dev/null > /dev/null 2>&1
    112 	if [ $? = 0 ]
    113 	then
    114 	    inst_cmd="${MAKE:-gmake} install"
    115 	else
    116 	    inst_cmd="${MAKE:-make} install"
    117 	fi
    118 	default=no
    119 	shift
    120     ;;
    121 
    122     -c )
    123 	cnf_cmd="../configure --enable-debug=yes"
    124 #	add_gcc_flags1
    125 	default=no
    126 	shift
    127     ;;
    128 
    129     -cs )
    130 	cnf_cmd="../configure --enable-debug=yes"
    131 	add_shared_flags
    132 #	add_gcc_flags1
    133 	default=no
    134 	shift
    135     ;;
    136 
    137     -C )
    138 	cnf_cmd="../configure --enable-debug=yes"
    139 	add_gcc_flags2
    140 	default=no
    141 	shift
    142     ;;
    143 
    144     -Cs )
    145 	cnf_cmd="../configure --enable-debug=yes"
    146 	add_shared_flags
    147 	add_gcc_flags2
    148 	default=no
    149 	shift
    150     ;;
    151 
    152     -d )
    153 	cnf_cmd="../configure --enable-debug=yes"
    154 	add_prefix_flags
    155 #	add_gcc_flags1
    156 	default=no
    157 	shift
    158     ;;
    159 
    160     -ds )
    161 	cnf_cmd="../configure --enable-debug=yes"
    162 	add_prefix_flags
    163 	add_shared_flags
    164 #	add_gcc_flags1
    165 	default=no
    166 	shift
    167     ;;
    168 
    169     -D )
    170 	cnf_cmd="../configure --enable-debug=yes"
    171 	add_prefix_flags
    172 	add_gcc_flags2
    173 	default=no
    174 	shift
    175     ;;
    176 
    177     -Ds )
    178 	cnf_cmd="../configure -enable-debug=yes"
    179 #	cnf_cmd="../configure -enable-debug=mem"
    180 #  	cnf_cmd="../configure --prefix=/usr/local/AMD --enable-debug=yes --enable-shared --disable-static \
    181 #  	    --enable-cppflags=\"-I${HOME}/ldap/include -I${HOME}/hesiod/include\" \
    182 #  	    --enable-ldflags=\"-L${HOME}/ldap/lib -L${HOME}/hesiod/lib\""
    183 #	cnf_cmd="$cnf_cmd \
    184 #  	    --enable-cppflags=-I${HOME}/ldap/include \
    185 #  	    --enable-ldflags=-L${HOME}/ldap/lib"
    186 #	cnf_cmd="../configure -enable-debug=yes --enable-cppflags=-I/usr/local/include --enable-ldflags=-L/usr/local/lib"
    187 	add_prefix_flags
    188 	add_shared_flags
    189 	add_gcc_flags2
    190 	default=no
    191 	shift
    192     ;;
    193 
    194     -K )
    195 #	mkcnf_cmd="../m4/mkconf"
    196 	mkcnf_cmd="../bootstrap"
    197 	if test -f bootstrap ; then
    198 	    :
    199 	else
    200 	    echo "am-utils maintainer option only!"
    201 	    exit 1
    202 	fi
    203 	default=no
    204 	shift
    205     ;;
    206 
    207     -q )
    208 	cnf_cmd="./config.status"
    209 	default=no
    210 	shift
    211     ;;
    212 
    213     -- )
    214 	shift
    215 	cmdline_cnf_flags="$*"
    216 	break	# from while loop
    217     ;;
    218 
    219     -h | * )
    220 cat <<EOF
    221 Usage: buildall [-b] [-[cCdD][s]] [-K] [-q] [-h] [-- configopts]
    222      -b: build only
    223      -c:  configure (debugging)
    224      -cs: configure (debugging, shared libs)
    225      -C:  configure (strict compile, debugging)
    226      -Cs: configure (strict compile, debugging, shared libs)
    227      -d:  configure in /usr/local/AMD (debugging)
    228      -ds: configure in /usr/local/AMD (debugging, shared libs)
    229      -D:  configure in /usr/local/AMD (strict compile, debugging)
    230      -Ds: configure in /usr/local/AMD (strict compile, debugging, shared libs)
    231      -K: run mkconf to update *.in files (developers only)
    232      -i: build and install
    233      -q: quick configure only (run config.status)
    234      -h: print usage
    235      configopts: options to pass to configure (must be last and after a --)
    236 You may pass variables: CFLAGS for build, MAKE for your make program
    237 and AM_CFLAGS for additional build flags.
    238 EOF
    239     exit 1
    240     ;;
    241 
    242 esac
    243 done
    244 
    245 # if AM_CFLAGS was set before, then add it to the configure option
    246 if test -n "${AM_CFLAGS}"; then
    247     extra_cnf_flags="--enable-am-cflags=\"${AM_CFLAGS}\""
    248 else
    249     :
    250 fi
    251 
    252 # check if no options were given, and set to defaults
    253 if test "$default" = "yes"; then
    254     # look for GNU make if possible
    255     gmake --version -f /dev/null > /dev/null 2>&1
    256     if [ $? = 0 ]
    257     then
    258 	bld_cmd="${MAKE:-gmake}"
    259     else
    260 	bld_cmd="${MAKE:-make}"
    261     fi
    262     cnf_cmd="../configure"
    263 else
    264     :
    265 fi
    266 
    267 ##############################################################################
    268 # make build directory if needed
    269 if test -d ./A.${host_alias} ; then
    270     :
    271 else
    272     mkdir ./A.${host_alias}
    273 fi
    274 echo "Configuring/building am-utils in directory ./A.${host_alias} ..."
    275 echo cd ./A.${host_alias}
    276 cd ./A.${host_alias} || exit 1
    277 
    278 ##############################################################################
    279 # this is for developers only (remove config.cache entries)
    280 if test -n "$pat"; then
    281     if test -f config.cache; then
    282 	egrep $pat config.cache | while read i; do echo '	'$i;done
    283 	egrep -v $pat config.cache > tmp.$$ && \
    284 		mv config.cache config.cache.old && mv tmp.$$ config.cache
    285     else
    286 	:
    287     fi
    288 else
    289     :
    290 fi
    291 
    292 ##############################################################################
    293 # Some system's /bin/sh has limits/bugs which prevent it from being used
    294 # with configure
    295 case "${host_alias}" in
    296     *hpux9* | *aix5.1* )
    297 	if test -n "$cnf_cmd"; then
    298 	    if test -f /bin/bash; then
    299 		cnf_cmd="/bin/bash $cnf_cmd"
    300 	    elif test -f /bin/ksh; then
    301 		cnf_cmd="/bin/ksh $cnf_cmd"
    302 	    fi
    303 	else
    304 	    :
    305 	fi
    306 	echo "WARNING: do not use /bin/make under this system."
    307 	echo "Instead, use GNU make or 'ksh ./configure' directly."
    308 	;;
    309     mips-sgi-irix5.2)
    310 	echo "WARNING: do not use /bin/make under this system."
    311 	echo "Instead, use GNU make or ./configure directly."
    312 	;;
    313 esac
    314 
    315 ##############################################################################
    316 # see if need to run mkconf
    317 if test -n "$mkcnf_cmd"; then
    318     echo $mkcnf_cmd
    319     $mkcnf_cmd || exit 1
    320 else
    321     :
    322 fi
    323 
    324 ##############################################################################
    325 # see if need to [re]configure
    326 if test -n "$cnf_cmd"; then
    327     if test -n "$vars"; then
    328 	echo $vars
    329 	eval $vars
    330 	echo export $expvars
    331 	export $expvars
    332     else
    333 	:
    334     fi
    335     if test -z "${cnf_flags}${extra_cnf_flags}"; then
    336 	echo $cnf_cmd $cmdline_cnf_flags
    337 	eval $cnf_cmd $cmdline_cnf_flags || exit 1
    338     else
    339 	echo $cnf_cmd $cnf_flags $extra_cnf_flags $cmdline_cnf_flags
    340 	eval $cnf_cmd $cnf_flags $extra_cnf_flags $cmdline_cnf_flags || exit 1
    341     fi
    342 else
    343     :
    344 fi
    345 
    346 ##############################################################################
    347 # if need to [re]build
    348 if test -n "$bld_cmd"; then
    349     echo $bld_cmd $bld_flags
    350     $bld_cmd $bld_flags || exit 1
    351 else
    352     :
    353 fi
    354 
    355 ##############################################################################
    356 # if need to install
    357 if test -n "$inst_cmd"; then
    358     echo $inst_cmd $inst_flags
    359     $inst_cmd $inst_flags || exit 1
    360 else
    361     :
    362 fi
    363 
    364 ##############################################################################
    365