xref: /netbsd/external/bsd/am-utils/dist/buildall (revision 6550d01e)
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
13test -f ../config.guess && cd ..
14test -f ../../config.guess && cd ../..
15pwd=`pwd`
16host_alias=`(cd /tmp; $pwd/config.guess.long)`
17if 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
21else
22	:
23fi
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)
38bld_cmd=""
39bld_flags=""
40cnf_cmd=""
41cnf_flags="-C"			# use config.cache cache file
42inst_cmd=""
43inst_flags=""
44mkcnf_cmd=""
45vars=""
46expvars=""
47default=yes
48
49##############################################################################
50# check if CFLAGS or AM_CFLAGS was passed
51test -z "$CFLAGS" || vars="$vars CFLAGS=\"${CFLAGS}\""
52test -z "$CFLAGS" || expvars="$expvars CFLAGS"
53test -z "$AM_CFLAGS" || vars="$vars AM_CFLAGS=\"${AM_CFLAGS}\""
54
55##############################################################################
56# functions
57
58add_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
71add_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
84add_shared_flags () {
85    cnf_cmd="$cnf_cmd --enable-shared --disable-static"
86}
87
88add_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
94while [ $# != 0 ]; do
95case "$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 | * )
220cat <<EOF
221Usage: 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 --)
236You may pass variables: CFLAGS for build, MAKE for your make program
237and AM_CFLAGS for additional build flags.
238EOF
239    exit 1
240    ;;
241
242esac
243done
244
245# if AM_CFLAGS was set before, then add it to the configure option
246if test -n "${AM_CFLAGS}"; then
247    extra_cnf_flags="--enable-am-cflags=${AM_CFLAGS}"
248else
249    :
250fi
251
252# check if no options were given, and set to defaults
253if 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"
263else
264    :
265fi
266
267##############################################################################
268# make build directory if needed
269if test -d ./A.${host_alias} ; then
270    :
271else
272    mkdir ./A.${host_alias}
273fi
274echo "Configuring/building am-utils in directory ./A.${host_alias} ..."
275echo cd ./A.${host_alias}
276cd ./A.${host_alias} || exit 1
277
278##############################################################################
279# this is for developers only (remove config.cache entries)
280if 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
288else
289    :
290fi
291
292##############################################################################
293# Some system's /bin/sh has limits/bugs which prevent it from being used
294# with configure
295case "${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	;;
313esac
314
315##############################################################################
316# see if need to run mkconf
317if test -n "$mkcnf_cmd"; then
318    echo $mkcnf_cmd
319    $mkcnf_cmd || exit 1
320else
321    :
322fi
323
324##############################################################################
325# see if need to [re]configure
326if 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	$cnf_cmd $cmdline_cnf_flags || exit 1
338    else
339	echo $cnf_cmd "$cnf_flags" "$extra_cnf_flags" $cmdline_cnf_flags
340	$cnf_cmd "$cnf_flags" "$extra_cnf_flags" $cmdline_cnf_flags || exit 1
341    fi
342else
343    :
344fi
345
346##############################################################################
347# if need to [re]build
348if test -n "$bld_cmd"; then
349    echo $bld_cmd $bld_flags
350    $bld_cmd $bld_flags || exit 1
351else
352    :
353fi
354
355##############################################################################
356# if need to install
357if test -n "$inst_cmd"; then
358    echo $inst_cmd $inst_flags
359    $inst_cmd $inst_flags || exit 1
360else
361    :
362fi
363
364##############################################################################
365