xref: /dragonfly/contrib/bmake/configure.in (revision 6eef5f0c)
101e196c8SJohn Marinodnl
201e196c8SJohn Marinodnl RCSid:
3*6eef5f0cSAntonio Huete Jimenezdnl	$Id: configure.in,v 1.87 2022/09/09 20:00:53 sjg Exp $
401e196c8SJohn Marinodnl
501e196c8SJohn Marinodnl Process this file with autoconf to produce a configure script
601e196c8SJohn Marinodnl
7*6eef5f0cSAntonio Huete JimenezAC_PREREQ([2.71])
8*6eef5f0cSAntonio Huete JimenezAC_INIT([bmake],[20220909],[sjg@NetBSD.org])
96a91b982SJohn MarinoAC_CONFIG_HEADERS(config.h)
1001e196c8SJohn Marino
115f1e34d9SAlexandre Perrindnl make srcdir absolute
125f1e34d9SAlexandre Perrincase "$srcdir" in
135f1e34d9SAlexandre Perrin/*) ;;
14*6eef5f0cSAntonio Huete Jimenez*) srcdir=`cd $srcdir && 'pwd'`;;
155f1e34d9SAlexandre Perrinesac
165f1e34d9SAlexandre Perrin
17ca58f742SDaniel Fojtdnl get _MAKE_VERSION
18ca58f742SDaniel Fojt. $srcdir/VERSION
19ca58f742SDaniel FojtOS=`uname -s`
20ca58f742SDaniel Fojt
21*6eef5f0cSAntonio Huete Jimenezdnl function to set DEFSHELL_INDEX
22*6eef5f0cSAntonio Huete Jimenezuse_defshell() {
23*6eef5f0cSAntonio Huete Jimenez	case "$defshell_path$DEFSHELL_INDEX" in
24*6eef5f0cSAntonio Huete Jimenez	"") ;;
25*6eef5f0cSAntonio Huete Jimenez	*) return 0;;
26*6eef5f0cSAntonio Huete Jimenez	esac
27*6eef5f0cSAntonio Huete Jimenez	case "$1" in
28*6eef5f0cSAntonio Huete Jimenez	*csh) # we must be desperate
29*6eef5f0cSAntonio Huete Jimenez		DEFSHELL_INDEX=DEFSHELL_INDEX_CSH;;
30*6eef5f0cSAntonio Huete Jimenez	*ksh)
31*6eef5f0cSAntonio Huete Jimenez		DEFSHELL_INDEX=DEFSHELL_INDEX_KSH;;
32*6eef5f0cSAntonio Huete Jimenez	sh|/bin/sh)
33*6eef5f0cSAntonio Huete Jimenez		DEFSHELL_INDEX=DEFSHELL_INDEX_SH;;
34*6eef5f0cSAntonio Huete Jimenez	*)	DEFSHELL_INDEX=DEFSHELL_INDEX_CUSTOM
35*6eef5f0cSAntonio Huete Jimenez		defshell_path=$1
36*6eef5f0cSAntonio Huete Jimenez		;;
37*6eef5f0cSAntonio Huete Jimenez	esac
38*6eef5f0cSAntonio Huete Jimenez	case "$1" in
39*6eef5f0cSAntonio Huete Jimenez	/bin/*) ;;
40*6eef5f0cSAntonio Huete Jimenez	*/*) defshell_path=$1;;
41*6eef5f0cSAntonio Huete Jimenez	esac
42*6eef5f0cSAntonio Huete Jimenez}
4301e196c8SJohn Marinodnl
4401e196c8SJohn MarinoAC_ARG_WITH(defshell,
4501e196c8SJohn Marino[  --with-defshell=SHELL  use SHELL by default - must be sh compatible, use sh or ksh to pick the internal definitions],
4601e196c8SJohn Marino[case "${withval}" in
4701e196c8SJohn Marinoyes)   AC_MSG_ERROR(bad value ${withval} given for bmake DEFSHELL) ;;
4801e196c8SJohn Marinono)    ;;
49*6eef5f0cSAntonio Huete Jimenez*)     use_defshell $with_defshell;;
5001e196c8SJohn Marinoesac])
5101e196c8SJohn Marinodnl
52ca58f742SDaniel Fojtcase "$OS" in
53ca58f742SDaniel FojtCYGWIN*|MINGW*) use_makefile=no;;
54ca58f742SDaniel Fojt*) use_makefile=yes;;
55ca58f742SDaniel Fojtesac
56ca58f742SDaniel FojtAC_ARG_WITH(makefile,
57a34d5fb1SAntonio Huete Jimenez[  --without-makefile disable use of generated makefile],
58ca58f742SDaniel Fojt[case "${withval}" in
59ca58f742SDaniel Fojtyes|no) use_makefile=${withval};;
60ca58f742SDaniel Fojt*) AC_MSG_ERROR(bad value ${withval} given for makefile) ;;
61ca58f742SDaniel Fojtesac])
62ca58f742SDaniel Fojtdnl
6301e196c8SJohn Marinouse_meta=yes
6401e196c8SJohn MarinoAC_ARG_WITH(meta,
65a34d5fb1SAntonio Huete Jimenez[  --without-meta disable use of meta-mode],
6601e196c8SJohn Marino[case "${withval}" in
6701e196c8SJohn Marinoyes|no) use_meta=${withval};;
6801e196c8SJohn Marino*) AC_MSG_ERROR(bad value ${withval} given for meta) ;;
6901e196c8SJohn Marinoesac])
7001e196c8SJohn Marinodnl
7101e196c8SJohn MarinoAC_ARG_WITH(filemon,
72ca58f742SDaniel Fojt[  --with-filemon={no,dev,ktrace,path/filemon.h} indicate filemon method for meta-mode. Path to filemon.h implies dev],
7301e196c8SJohn Marino[ case "/${withval}" in
74ca58f742SDaniel Fojt/no) use_filemon=no;;
75ca58f742SDaniel Fojt/*trace) filemon_h=no use_filemon="${withval}";;
76ca58f742SDaniel Fojt*/filemon.h) filemon_h="${withval}";;
7701e196c8SJohn Marino*/filemon*) filemon_h="${withval}/filemon.h";;
7801e196c8SJohn Marino*) AC_MSG_ERROR(bad value ${withval} given for filemon) ;;
79ca58f742SDaniel Fojtesac
80ca58f742SDaniel Fojtcase "$use_filemon,$filemon_h" in
81ca58f742SDaniel Fojt,*.h) use_filemon=dev;;
82ca58f742SDaniel Fojtesac
83ca58f742SDaniel Fojt],
8401e196c8SJohn Marino[
85ca58f742SDaniel Fojtcase "$OS" in
86ca58f742SDaniel FojtNetBSD) filemon_h=no use_filemon=ktrace;;
87ca58f742SDaniel Fojt*)
88ca58f742SDaniel Fojt    for d in "/usr/include/dev/filemon" "$prefix/include/dev/filemon" "$srcdir/../../sys/dev/filemon"
8901e196c8SJohn Marino    do
9001e196c8SJohn Marino        for x in "/$OS" ""
9101e196c8SJohn Marino        do
9201e196c8SJohn Marino            filemon_h="$d$x/filemon.h"
9301e196c8SJohn Marino            test -s "$filemon_h" && break
9401e196c8SJohn Marino        done
95ca58f742SDaniel Fojt        test -s "$filemon_h" && { use_filemon=dev; break; }
9601e196c8SJohn Marino    done
97ca58f742SDaniel Fojt    ;;
98ca58f742SDaniel Fojtesac
99ca58f742SDaniel Fojtuse_filemon=${use_filemon:-no}
100ca58f742SDaniel Fojtcase "$use_filemon" in
101ca58f742SDaniel Fojtdev) ;;
102ca58f742SDaniel Fojt*) filemon_h=no;;
103ca58f742SDaniel Fojtesac
10401e196c8SJohn Marino])
105ca58f742SDaniel Fojtdnl echo "Note: use_meta=$use_meta use_filemon=$use_filemon filemon_h=$filemon_h" >&6
10601e196c8SJohn Marinocase "$use_meta" in
10701e196c8SJohn Marinoyes)
108ca58f742SDaniel Fojt	case "$use_filemon" in
109ca58f742SDaniel Fojt	no) ;;
110ca58f742SDaniel Fojt	*) echo "Using: filemon_${use_filemon}.c" >&6;;
11101e196c8SJohn Marino	esac
11201e196c8SJohn Marino	;;
11301e196c8SJohn Marinoesac
11401e196c8SJohn Marinodnl
11501e196c8SJohn Marinodnl Check for OS problems
116*6eef5f0cSAntonio Huete Jimenezdnl
117*6eef5f0cSAntonio Huete Jimenezdnl Minix 3 at least has bugs in headers where _NETBSD_SOURCE
118*6eef5f0cSAntonio Huete Jimenezdnl is needed for compilation
119*6eef5f0cSAntonio Huete Jimenezcase "$OS" in
120*6eef5f0cSAntonio Huete JimenezMinix)	CPPFLAGS="${CPPFLAGS} -D_NETBSD_SOURCE"
121*6eef5f0cSAntonio Huete Jimenez	test -x /usr/pkg/bin/clang && CC=${CC:-clang}
122*6eef5f0cSAntonio Huete Jimenez	;;
123*6eef5f0cSAntonio Huete JimenezSCO_SV)	# /bin/sh is not usable
124*6eef5f0cSAntonio Huete Jimenez	ALT_DEF_SHELLS="/bin/lsh /usr/bin/bash /bin/ksh"
125*6eef5f0cSAntonio Huete Jimenez	CPPFLAGS="${CPPFLAGS} -DFORCE_USE_SHELL"
126*6eef5f0cSAntonio Huete Jimenez	;;
127*6eef5f0cSAntonio Huete Jimenezesac
128*6eef5f0cSAntonio Huete Jimenezdnl
129*6eef5f0cSAntonio Huete Jimenezdnl Not everyone groks TZ=Europe/Berlin
130*6eef5f0cSAntonio Huete Jimenezdnl which is used by the localtime tests
131*6eef5f0cSAntonio Huete Jimenezecho $ECHO_N "checking whether system has timezone Europe/Berlin... $ECHO_C" >&6
132*6eef5f0cSAntonio Huete Jimenezif test -f /usr/share/zoneinfo/Europe/Berlin; then
133*6eef5f0cSAntonio Huete Jimenez	echo yes  >&6
134*6eef5f0cSAntonio Huete Jimenez	# seems a safe bet
135*6eef5f0cSAntonio Huete Jimenez	UTC_1=Europe/Berlin
136*6eef5f0cSAntonio Huete Jimenezelse
137*6eef5f0cSAntonio Huete Jimenez	utcH=`TZ=UTC date +%H 2> /dev/null`
138*6eef5f0cSAntonio Huete Jimenez	utc_1H=`TZ=UTC-1 date +%H 2> /dev/null`
139*6eef5f0cSAntonio Huete Jimenez	if test ${utcH-0} -lt ${utc_1H-0}; then
140*6eef5f0cSAntonio Huete Jimenez		UTC_1=UTC-1
141*6eef5f0cSAntonio Huete Jimenez		echo no, using UTC-1 >&6
142*6eef5f0cSAntonio Huete Jimenez	else
143*6eef5f0cSAntonio Huete Jimenez		echo no >&6
144*6eef5f0cSAntonio Huete Jimenez	fi
145*6eef5f0cSAntonio Huete Jimenezfi
146*6eef5f0cSAntonio Huete Jimenezdnl
147*6eef5f0cSAntonio Huete Jimenezdnl Add some places to look for compilers
148*6eef5f0cSAntonio Huete JimenezoldPATH=$PATH
149*6eef5f0cSAntonio Huete Jimenezfor d in /usr/gnu/bin
150*6eef5f0cSAntonio Huete Jimenezdo
151*6eef5f0cSAntonio Huete Jimenez	test -d $d || continue
152*6eef5f0cSAntonio Huete Jimenez	PATH=$PATH:$d
153*6eef5f0cSAntonio Huete Jimenezdone
154*6eef5f0cSAntonio Huete Jimenezexport PATH
15501e196c8SJohn Marinodnl Solaris's signal.h only privides sigset_t etc if one of
15601e196c8SJohn Marinodnl _EXTENSIONS_ _POSIX_C_SOURCE or _XOPEN_SOURCE are defined.
15701e196c8SJohn Marinodnl The later two seem to cause more problems than they solve so if we
15801e196c8SJohn Marinodnl see _EXTENSIONS_ we use it.
15901e196c8SJohn MarinoAC_USE_SYSTEM_EXTENSIONS
16001e196c8SJohn Marinodnl Checks for programs.
16101e196c8SJohn MarinoAC_PROG_CC
16201e196c8SJohn MarinoAC_PROG_INSTALL
16301e196c8SJohn Marinodnl Executable suffix - normally empty; .exe on os2.
16401e196c8SJohn MarinoAC_SUBST(ac_exe_suffix)dnl
1656a91b982SJohn Marinodnl
1666a91b982SJohn Marinodnl Hurd refuses to define PATH_MAX or MAXPATHLEN
1676a91b982SJohn Marinoif test -x /usr/bin/getconf; then
1686a91b982SJohn Marino   bmake_path_max=`getconf PATH_MAX / 2> /dev/null`
1696a91b982SJohn Marino   # only a numeric response is useful
1706a91b982SJohn Marino   test ${bmake_path_max:-0} -gt 0 2> /dev/null || bmake_path_max=
1716a91b982SJohn Marinofi
1726a91b982SJohn Marinobmake_path_max=${bmake_path_max:-1024}
1736a91b982SJohn Marinoif test $bmake_path_max -gt 1024; then
1746a91b982SJohn Marino   # this is all we expect
1756a91b982SJohn Marino   bmake_path_max=1024
1766a91b982SJohn Marinofi
1776a91b982SJohn Marinoecho "Using: BMAKE_PATH_MAX=$bmake_path_max" >&6
1786a91b982SJohn MarinoAC_SUBST(bmake_path_max)dnl
17901e196c8SJohn Marinodnl
180*6eef5f0cSAntonio Huete Jimenezdnl if type does not work which(1) had better!
181*6eef5f0cSAntonio Huete Jimenezdnl note we cannot rely on type returning non-zero on failure
182*6eef5f0cSAntonio Huete Jimenezif (type cat) > /dev/null 2>&1; then
183*6eef5f0cSAntonio Huete Jimenez: which
184*6eef5f0cSAntonio Huete Jimenezwhich() {
185*6eef5f0cSAntonio Huete Jimenez	type "$@" | sed 's,[[()]],,g;s,^[[^/]][[^/]]*,,;q'
186*6eef5f0cSAntonio Huete Jimenez}
187*6eef5f0cSAntonio Huete Jimenezfi
188*6eef5f0cSAntonio Huete Jimenezdnl if CC is somewhere that was not in PATH we need its full path
189*6eef5f0cSAntonio Huete Jimenezdnl watch out for included flags!
190*6eef5f0cSAntonio Huete Jimenezcase "$CC" in
191*6eef5f0cSAntonio Huete Jimenez/*) ;;
192*6eef5f0cSAntonio Huete Jimenez*)
193*6eef5f0cSAntonio Huete Jimenez    for x in $CC
194*6eef5f0cSAntonio Huete Jimenez    do
195*6eef5f0cSAntonio Huete Jimenez        _cc=`which $x`
196*6eef5f0cSAntonio Huete Jimenez        break
197*6eef5f0cSAntonio Huete Jimenez    done
198*6eef5f0cSAntonio Huete Jimenez    if test -x ${_cc:-/dev/null}; then
199*6eef5f0cSAntonio Huete Jimenez        _cc_dir=`dirname $_cc`
200*6eef5f0cSAntonio Huete Jimenez        case ":$oldPATH:" in
201*6eef5f0cSAntonio Huete Jimenez        *:$_cc_dir:*) ;;
202*6eef5f0cSAntonio Huete Jimenez        *) CC=$_cc_dir/$CC;;
203*6eef5f0cSAntonio Huete Jimenez        esac
204*6eef5f0cSAntonio Huete Jimenez    fi
205*6eef5f0cSAntonio Huete Jimenez    ;;
206*6eef5f0cSAntonio Huete Jimenezesac
20701e196c8SJohn Marinodnl Checks for header files.
20801e196c8SJohn MarinoAC_HEADER_SYS_WAIT
20901e196c8SJohn MarinoAC_HEADER_DIRENT
21001e196c8SJohn Marinodnl Keep this list sorted
211f445c897SJohn MarinoAC_CHECK_HEADERS(sys/param.h)
212f445c897SJohn Marinodnl On BSDi at least we really need sys/param.h for sys/sysctl.h
213f445c897SJohn MarinoAC_CHECK_HEADERS([sys/sysctl.h], [], [],
214f445c897SJohn Marino[#ifdef HAVE_SYS_PARAM_H
215f445c897SJohn Marino# include <sys/param.h>
216f445c897SJohn Marino# endif
217f445c897SJohn Marino])
218f445c897SJohn Marino
21901e196c8SJohn MarinoAC_CHECK_HEADERS( \
22001e196c8SJohn Marino	ar.h \
22101e196c8SJohn Marino	err.h \
22201e196c8SJohn Marino	fcntl.h \
223f445c897SJohn Marino	libgen.h \
224f445c897SJohn Marino	limits.h \
22501e196c8SJohn Marino	paths.h \
22601e196c8SJohn Marino	poll.h \
22701e196c8SJohn Marino	ranlib.h \
22801e196c8SJohn Marino	sys/mman.h \
22901e196c8SJohn Marino	sys/select.h \
23001e196c8SJohn Marino	sys/socket.h \
23101e196c8SJohn Marino	sys/time.h \
23201e196c8SJohn Marino	sys/uio.h \
23301e196c8SJohn Marino	utime.h \
23401e196c8SJohn Marino	)
23501e196c8SJohn Marino
23601e196c8SJohn Marinodnl Both *BSD and Linux have sys/cdefs.h, most do not.
23701e196c8SJohn Marinodnl If it is missing, we add -I${srcdir}/missing to CFLAGS
238*6eef5f0cSAntonio Huete JimenezAC_CHECK_HEADER(sys/cdefs.h,,
23901e196c8SJohn MarinoCPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd`")
24001e196c8SJohn Marino
24101e196c8SJohn Marinodnl Checks for typedefs, structures, and compiler characteristics.
24201e196c8SJohn MarinoAC_C___ATTRIBUTE__
24301e196c8SJohn MarinoAC_C_BIGENDIAN
24401e196c8SJohn MarinoAC_C_CONST
245*6eef5f0cSAntonio Huete JimenezAC_C_INLINE
246*6eef5f0cSAntonio Huete JimenezAC_TYPE_INT64_T
247*6eef5f0cSAntonio Huete JimenezAC_TYPE_LONG_LONG_INT
248f445c897SJohn MarinoAC_TYPE_MODE_T
24901e196c8SJohn MarinoAC_TYPE_OFF_T
25001e196c8SJohn MarinoAC_TYPE_PID_T
25101e196c8SJohn MarinoAC_TYPE_SIZE_T
252f445c897SJohn MarinoAC_TYPE_UINT32_T
253*6eef5f0cSAntonio Huete JimenezAC_CHECK_DECLS([sys_siglist],[],[],[#include <signal.h>
254*6eef5f0cSAntonio Huete Jimenez/* NetBSD declares sys_siglist in unistd.h.  */
255*6eef5f0cSAntonio Huete Jimenez#ifdef HAVE_UNISTD_H
256*6eef5f0cSAntonio Huete Jimenez# include <unistd.h>
257*6eef5f0cSAntonio Huete Jimenez#endif
258*6eef5f0cSAntonio Huete Jimenez])
259*6eef5f0cSAntonio Huete Jimenez
260*6eef5f0cSAntonio Huete JimenezAC_CHECK_HEADERS_ONCE([sys/time.h])
261*6eef5f0cSAntonio Huete Jimenez
26201e196c8SJohn MarinoAC_STRUCT_TM
26301e196c8SJohn Marino
264a34d5fb1SAntonio Huete Jimenezdnl we need sig_atomic_t
265a34d5fb1SAntonio Huete JimenezAH_TEMPLATE([sig_atomic_t],[type that signal handlers can safely frob])
266*6eef5f0cSAntonio Huete JimenezAC_CHECK_TYPES([sig_atomic_t],[],[],
267*6eef5f0cSAntonio Huete Jimenez[
268a34d5fb1SAntonio Huete Jimenez#ifdef HAVE_SYS_TYPES_H
269a34d5fb1SAntonio Huete Jimenez#include <sys/types.h>
270a34d5fb1SAntonio Huete Jimenez#endif
271a34d5fb1SAntonio Huete Jimenez#include <signal.h>
272a34d5fb1SAntonio Huete Jimenez])
273a34d5fb1SAntonio Huete Jimenez
27401e196c8SJohn Marinodnl Checks for library functions.
275*6eef5f0cSAntonio Huete JimenezAC_FUNC_FORK
27601e196c8SJohn MarinoAC_FUNC_VPRINTF
27701e196c8SJohn MarinoAC_FUNC_WAIT3
27801e196c8SJohn Marinodnl Keep this list sorted
27901e196c8SJohn MarinoAC_CHECK_FUNCS( \
28001e196c8SJohn Marino	err \
28101e196c8SJohn Marino	errx \
28201e196c8SJohn Marino	getcwd \
28301e196c8SJohn Marino	getenv \
28401e196c8SJohn Marino	getwd \
28501e196c8SJohn Marino	killpg \
28601e196c8SJohn Marino	mmap \
28701e196c8SJohn Marino	putenv \
28801e196c8SJohn Marino	select \
28901e196c8SJohn Marino	setenv \
29001e196c8SJohn Marino	setpgid \
291*6eef5f0cSAntonio Huete Jimenez	setrlimit \
29201e196c8SJohn Marino	setsid \
293*6eef5f0cSAntonio Huete Jimenez	sigaddset \
294*6eef5f0cSAntonio Huete Jimenez	sigpending \
295*6eef5f0cSAntonio Huete Jimenez	sigprocmask \
296*6eef5f0cSAntonio Huete Jimenez	sigsetmask \
297*6eef5f0cSAntonio Huete Jimenez	sigsuspend \
29801e196c8SJohn Marino	sigvec \
29901e196c8SJohn Marino	snprintf \
30001e196c8SJohn Marino	strerror \
301*6eef5f0cSAntonio Huete Jimenez	stresep \
30201e196c8SJohn Marino	strftime \
30301e196c8SJohn Marino	strsep \
30401e196c8SJohn Marino	strtod \
30501e196c8SJohn Marino	strtol \
306*6eef5f0cSAntonio Huete Jimenez	strtoll \
307*6eef5f0cSAntonio Huete Jimenez	strtoul \
3086a91b982SJohn Marino	sysctl \
30901e196c8SJohn Marino	unsetenv \
31001e196c8SJohn Marino	vsnprintf \
31101e196c8SJohn Marino	wait3 \
31201e196c8SJohn Marino	wait4 \
31301e196c8SJohn Marino	waitpid \
31401e196c8SJohn Marino	warn \
31501e196c8SJohn Marino	warnx \
31601e196c8SJohn Marino	)
31701e196c8SJohn Marino
31801e196c8SJohn Marinodnl functions which we may need to provide
31901e196c8SJohn MarinoAC_REPLACE_FUNCS( \
320*6eef5f0cSAntonio Huete Jimenez	getopt \
32101e196c8SJohn Marino	realpath \
32201e196c8SJohn Marino	dirname \
323*6eef5f0cSAntonio Huete Jimenez	sigaction \
32401e196c8SJohn Marino	stresep \
32501e196c8SJohn Marino	strlcpy \
32601e196c8SJohn Marino	)
32701e196c8SJohn Marino
32801e196c8SJohn MarinoAC_CHECK_LIB([util], [emalloc],
32901e196c8SJohn Marino    [ AC_CHECK_LIB([util], [erealloc],
33001e196c8SJohn Marino      [ AC_CHECK_LIB([util], [estrdup],
33101e196c8SJohn Marino        [ AC_CHECK_LIB([util], [estrndup],
33201e196c8SJohn Marino	  [ LIBS="$LIBS -lutil"
33301e196c8SJohn Marino	    CPPFLAGS="$CPPFLAGS -DUSE_EMALLOC" ])])])])
33401e196c8SJohn Marino
33501e196c8SJohn Marinodnl
33601e196c8SJohn Marinodnl Structures
33701e196c8SJohn Marinodnl
33801e196c8SJohn MarinoAC_HEADER_STAT
33901e196c8SJohn Marinodnl
3406a91b982SJohn Marinoecho "checking if compiler supports __func__" >&6
3416a91b982SJohn MarinoAC_LANG(C)
3426a91b982SJohn MarinoAC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[[const char *func = __func__;]])],,
3436a91b982SJohn Marino	AC_DEFINE(__func__, __FUNCTION__, C99 function name))
3446a91b982SJohn Marinodnl
34501e196c8SJohn Marinodnl we want this for unit-tests/Makefile
346*6eef5f0cSAntonio Huete Jimenezdnl GNU diff is known to support -u
347*6eef5f0cSAntonio Huete Jimenezif test -x /usr/gnu/bin/diff; then
348*6eef5f0cSAntonio Huete Jimenez	diff=/usr/gnu/bin/diff
349*6eef5f0cSAntonio Huete Jimenez	diff_u=-u
350*6eef5f0cSAntonio Huete Jimenezelse
351*6eef5f0cSAntonio Huete Jimenez	diff=${diff:-diff}
352*6eef5f0cSAntonio Huete Jimenez	echo $ECHO_N "checking if $diff -u works... $ECHO_C" >&6
353*6eef5f0cSAntonio Huete Jimenez	if $diff -u /dev/null /dev/null > /dev/null 2>&1; then
35401e196c8SJohn Marino		diff_u=-u
35501e196c8SJohn Marino		echo yes >&6
35601e196c8SJohn Marino	else
35701e196c8SJohn Marino		diff_u=
35801e196c8SJohn Marino		echo no >&6
35901e196c8SJohn Marino	fi
360*6eef5f0cSAntonio Huete Jimenezfi
36101e196c8SJohn Marinodnl
36201e196c8SJohn Marinodnl AC_* don't quite cut it.
36301e196c8SJohn Marinodnl
36401e196c8SJohn Marinoecho "checking for MACHINE & MACHINE_ARCH..." >&6
36501e196c8SJohn Marinocat > conftest.$ac_ext <<EOF
36601e196c8SJohn Marino#include "confdefs.h"
36701e196c8SJohn Marino#include <sys/param.h>
36801e196c8SJohn Marino#ifdef MACHINE
36901e196c8SJohn Marinomachine=MACHINE
37001e196c8SJohn Marino#endif
37101e196c8SJohn Marino#ifdef MACHINE_ARCH
37201e196c8SJohn Marinomachine_arch=MACHINE_ARCH
37301e196c8SJohn Marino#endif
37401e196c8SJohn MarinoEOF
37501e196c8SJohn Marino
37601e196c8SJohn Marinodefault_machine=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
377*6eef5f0cSAntonio Huete Jimenez	grep machine= | tr -d ' "'`
37801e196c8SJohn Marinorm -rf conftest*
37901e196c8SJohn Marinoif test "$default_machine"; then
38001e196c8SJohn Marino	eval "$default_machine"
38101e196c8SJohn Marinofi
38201e196c8SJohn Marinomachine=${machine:-`$srcdir/machine.sh`}
38301e196c8SJohn Marinomachine_arch=${machine_arch:-`$srcdir/machine.sh arch`}
38401e196c8SJohn Marinoecho "defaults: MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6
38501e196c8SJohn Marinodnl
38601e196c8SJohn Marinodnl now allow overrides
38701e196c8SJohn Marinodnl
38801e196c8SJohn MarinoAC_ARG_WITH(machine,
38901e196c8SJohn Marino[  --with-machine=MACHINE  explicitly set MACHINE],
39001e196c8SJohn Marino[case "${withval}" in
39101e196c8SJohn Marinoyes)   AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE) ;;
39201e196c8SJohn Marinono)    ;;
39301e196c8SJohn Marinogeneric) machine=`$srcdir/machine.sh`;;
39401e196c8SJohn Marino*)     machine=$with_machine;;
39501e196c8SJohn Marinoesac])
39601e196c8SJohn Marinoforce_machine=
39701e196c8SJohn MarinoAC_ARG_WITH(force_machine,
39801e196c8SJohn Marino[  --with-force-machine=MACHINE  set FORCE_MACHINE],
39901e196c8SJohn Marino[case "${withval}" in
40001e196c8SJohn Marinoyes)   force_machine=FORCE_;;
40101e196c8SJohn Marinono)    ;;
40201e196c8SJohn Marino*)     force_machine=FORCE_; machine=$with_force_machine;;
40301e196c8SJohn Marinoesac])
40401e196c8SJohn Marinodnl
40501e196c8SJohn Marinoforce_machine_arch=
40601e196c8SJohn MarinoAC_ARG_WITH(force_machine_arch,
40701e196c8SJohn Marino[  --with-force-machine-arch=MACHINE  set FORCE_MACHINE_ARCH],
40801e196c8SJohn Marino[case "${withval}" in
40901e196c8SJohn Marinoyes)   force_machine_arch=FORCE_;;
41001e196c8SJohn Marinono)    ;;
411a34d5fb1SAntonio Huete Jimenez*)     force_machine_arch=FORCE_; machine_arch=$with_force_machine_arch;;
41201e196c8SJohn Marinoesac])
41301e196c8SJohn Marinodnl
41401e196c8SJohn MarinoAC_ARG_WITH(machine_arch,
41501e196c8SJohn Marino[  --with-machine_arch=MACHINE_ARCH  explicitly set MACHINE_ARCH],
41601e196c8SJohn Marino[case "${withval}" in
41701e196c8SJohn Marinoyes)   AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE_ARCH) ;;
41801e196c8SJohn Marinono)    ;;
41901e196c8SJohn Marino*)     machine_arch=$with_machine_arch;;
42001e196c8SJohn Marinoesac])
42101e196c8SJohn Marinodnl
42201e196c8SJohn Marinodnl Tell them what we ended up with
42301e196c8SJohn Marinodnl
424a34d5fb1SAntonio Huete Jimenezecho "Using: ${force_machine}MACHINE=$machine, ${force_machine_arch}MACHINE_ARCH=$machine_arch" 1>&6
42501e196c8SJohn Marinodnl
42601e196c8SJohn Marinodnl Allow folk to control _PATH_DEFSYSPATH
42701e196c8SJohn Marinodnl
42801e196c8SJohn Marinodefault_sys_path=\${prefix}/share/mk
42901e196c8SJohn MarinoAC_ARG_WITH(default-sys-path,
43001e196c8SJohn Marino[  --with-default-sys-path=PATH:DIR:LIST  use an explicit _PATH_DEFSYSPATH
43101e196c8SJohn Marino	MAKESYSPATH is a ':' separated list of directories
43201e196c8SJohn Marino	that bmake will search for system .mk files.
43301e196c8SJohn Marino	_PATH_DEFSYSPATH is its default value.],
43401e196c8SJohn Marino[case "${withval}" in
43501e196c8SJohn Marinoyes)	AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_DEFSYSPATH) ;;
43601e196c8SJohn Marinono)	;;
43701e196c8SJohn Marino*)	default_sys_path="$with_default_sys_path"
43801e196c8SJohn Marino	;;
43901e196c8SJohn Marinoesac])
44001e196c8SJohn Marinodnl
44101e196c8SJohn Marinodnl Some folk don't like this one
44201e196c8SJohn Marinodnl
44301e196c8SJohn MarinoAC_ARG_WITH(path-objdirprefix,
44401e196c8SJohn Marino[  --with-path-objdirprefix=PATH  override _PATH_OBJDIRPREFIX],
44501e196c8SJohn Marino[case "${withval}" in
44601e196c8SJohn Marinoyes)   AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_OBJDIRPREFIX) ;;
44701e196c8SJohn Marinono)    CPPFLAGS="$CPPFLAGS -DNO_PATH_OBJDIRPREFIX" ;;
44801e196c8SJohn Marino*)     CPPFLAGS="$CPPFLAGS \"-D_PATH_OBJDIRPREFIX=\\\"$with_path-objdir\\\"\"" ;;
44901e196c8SJohn Marinoesac])
45001e196c8SJohn Marinodnl
45101e196c8SJohn Marinodnl And this can be handy to do with out.
45201e196c8SJohn Marinodnl
45301e196c8SJohn MarinoAC_ARG_ENABLE(pwd-override,
454a34d5fb1SAntonio Huete Jimenez[  --disable-pwd-override  disable $PWD overriding getcwd()],
45501e196c8SJohn Marino[case "${enableval}" in
45601e196c8SJohn Marinoyes)   ;;
45701e196c8SJohn Marinono)    CPPFLAGS="$CPPFLAGS -DNO_PWD_OVERRIDE" ;;
45801e196c8SJohn Marino*)     AC_MSG_ERROR(bad value ${enableval} given for pwd-override option) ;;
45901e196c8SJohn Marinoesac])
46001e196c8SJohn Marinodnl
46101e196c8SJohn Marinodnl Just for grins
46201e196c8SJohn Marinodnl
46301e196c8SJohn MarinoAC_ARG_ENABLE(check-make-chdir,
46401e196c8SJohn Marino[  --disable-check-make-chdir disable make trying to guess
465a34d5fb1SAntonio Huete Jimenez	when it should automatically cd ${.CURDIR}],
46601e196c8SJohn Marino[case "${enableval}" in
46701e196c8SJohn Marinoyes)   ;;
46801e196c8SJohn Marinono)    CPPFLAGS="$CPPFLAGS -DNO_CHECK_MAKE_CHDIR" ;;
46901e196c8SJohn Marino*)     AC_MSG_ERROR(bad value ${enableval} given for check-make-chdir option) ;;
47001e196c8SJohn Marinoesac])
47101e196c8SJohn Marinodnl
47201e196c8SJohn Marinodnl On non-BSD systems, bootstrap won't work without mk
47301e196c8SJohn Marinodnl
47401e196c8SJohn MarinoAC_ARG_WITH(mksrc,
47501e196c8SJohn Marino[  --with-mksrc=PATH tell makefile.boot where to find mk src],
47601e196c8SJohn Marino[case "${withval}" in
47701e196c8SJohn Marino""|yes|no) ;;
47801e196c8SJohn Marino*) test -s $withval/install-mk && mksrc=$withval ||
47901e196c8SJohn MarinoAC_MSG_ERROR(bad value ${withval} given for mksrc cannot find install-mk)
48001e196c8SJohn Marino;;
48101e196c8SJohn Marinoesac
48201e196c8SJohn Marino])
48301e196c8SJohn Marinodnl
48401e196c8SJohn Marinodnl Now make sure we have a value
48501e196c8SJohn Marinodnl
48601e196c8SJohn Marinosrcdir=`cd $srcdir && pwd`
48701e196c8SJohn Marinofor mksrc in $mksrc $srcdir/mk $srcdir/../mk mk
48801e196c8SJohn Marinodo
48901e196c8SJohn Marino	test -s $mksrc/install-mk || continue
49001e196c8SJohn Marino	mksrc=`cd $mksrc && pwd`
49101e196c8SJohn Marino	break
49201e196c8SJohn Marinodone
49301e196c8SJohn Marinomksrc=`echo $mksrc | sed "s,$srcdir,\\\${srcdir},"`
49401e196c8SJohn Marinoecho "Using: MKSRC=$mksrc" 1>&6
49501e196c8SJohn Marinodnl On some systems we want a different default shell by default
496*6eef5f0cSAntonio Huete Jimenezfor sh in /usr/xpg4/bin/sh $ALT_DEF_SHELLS
497*6eef5f0cSAntonio Huete Jimenezdo
498*6eef5f0cSAntonio Huete Jimenez	test -x $sh || continue
499*6eef5f0cSAntonio Huete Jimenez	use_defshell $sh
500*6eef5f0cSAntonio Huete Jimenez	break
501*6eef5f0cSAntonio Huete Jimenezdone
502*6eef5f0cSAntonio Huete Jimenezcase "$defshell_path$DEFSHELL_INDEX" in
503*6eef5f0cSAntonio Huete Jimenez"")	;;
504*6eef5f0cSAntonio Huete Jimenez*DEFSHELL_INDEX_CUSTOM)
50501e196c8SJohn Marino	echo "Using: SHELL=$defshell_path"  >&6
50601e196c8SJohn Marino	AC_DEFINE_UNQUOTED(DEFSHELL_CUSTOM, "$defshell_path", Path of default shell)
507*6eef5f0cSAntonio Huete Jimenez	;;
508*6eef5f0cSAntonio Huete Jimenez/*INDEX*)
509*6eef5f0cSAntonio Huete Jimenez	echo "Using: SHELL=$DEFSHELL_INDEX ($defshell_path)" | sed 's,DEFSHELL_INDEX_,,' >&6
51001e196c8SJohn Marino	AC_DEFINE_UNQUOTED(DEFSHELL_INDEX, $DEFSHELL_INDEX, Shell spec to use by default)
511*6eef5f0cSAntonio Huete JimenezAC_DEFINE_UNQUOTED(DEFSHELL_PATH, "$defshell_path", Path of default shell)
512*6eef5f0cSAntonio Huete Jimenez	;;
513*6eef5f0cSAntonio Huete Jimenez*)
514*6eef5f0cSAntonio Huete Jimenez	echo "Using: SHELL=$DEFSHELL_INDEX" | sed 's,DEFSHELL_INDEX_,,' >&6
515*6eef5f0cSAntonio Huete Jimenez	AC_DEFINE_UNQUOTED(DEFSHELL_INDEX, $DEFSHELL_INDEX, Shell spec to use by default)
516*6eef5f0cSAntonio Huete Jimenez	;;
517*6eef5f0cSAntonio Huete Jimenezesac
51801e196c8SJohn Marinodnl
519*6eef5f0cSAntonio Huete Jimenezdnl Some systems have deprecated egrep in favor of grep -E
520*6eef5f0cSAntonio Huete Jimenezcase "`echo bmake | egrep 'a|b' 2>&1`" in
521*6eef5f0cSAntonio Huete Jimenezbmake) egrep=egrep;;
522*6eef5f0cSAntonio Huete Jimenez*) egrep='grep -E';;
523*6eef5f0cSAntonio Huete Jimenezesac
524*6eef5f0cSAntonio Huete Jimenezdnl
525*6eef5f0cSAntonio Huete JimenezAC_SUBST(egrep)
52601e196c8SJohn MarinoAC_SUBST(machine)
52701e196c8SJohn MarinoAC_SUBST(force_machine)
52801e196c8SJohn MarinoAC_SUBST(machine_arch)
529a34d5fb1SAntonio Huete JimenezAC_SUBST(force_machine_arch)
53001e196c8SJohn MarinoAC_SUBST(mksrc)
53101e196c8SJohn MarinoAC_SUBST(default_sys_path)
53201e196c8SJohn MarinoAC_SUBST(INSTALL)
53301e196c8SJohn MarinoAC_SUBST(GCC)
534*6eef5f0cSAntonio Huete JimenezAC_SUBST(diff)
53501e196c8SJohn MarinoAC_SUBST(diff_u)
53601e196c8SJohn MarinoAC_SUBST(use_meta)
537ca58f742SDaniel FojtAC_SUBST(use_filemon)
53801e196c8SJohn MarinoAC_SUBST(filemon_h)
539ca58f742SDaniel FojtAC_SUBST(_MAKE_VERSION)
540*6eef5f0cSAntonio Huete JimenezAC_SUBST(UTC_1)
541ca58f742SDaniel Fojtbm_outfiles="Makefile.config unit-tests/Makefile.config make-bootstrap.sh"
542ca58f742SDaniel Fojtif test $use_makefile = yes; then
543ca58f742SDaniel Fojt   bm_outfiles="makefile $bm_outfiles"
544ca58f742SDaniel Fojtfi
545*6eef5f0cSAntonio Huete Jimenez
546*6eef5f0cSAntonio Huete Jimenezhere=`'pwd'`
547*6eef5f0cSAntonio Huete Jimenez: srcdir=$srcdir
548*6eef5f0cSAntonio Huete Jimenez: here=  $here
549*6eef5f0cSAntonio Huete Jimenezcase "$here" in
550*6eef5f0cSAntonio Huete Jimenez$srcdir/obj*) # make sure we put unit-tests/Makefile.config in the right place
551*6eef5f0cSAntonio Huete Jimenez	obj=`basename $here`
552*6eef5f0cSAntonio Huete Jimenez	mkdir -p $srcdir/unit-tests/$obj
553*6eef5f0cSAntonio Huete Jimenez	test -d unit-tests || ln -s ../unit-tests/$obj unit-tests
554*6eef5f0cSAntonio Huete Jimenez	;;
555*6eef5f0cSAntonio Huete Jimenezesac
556*6eef5f0cSAntonio Huete Jimenez
557*6eef5f0cSAntonio Huete JimenezAC_CONFIG_FILES([$bm_outfiles])
558*6eef5f0cSAntonio Huete JimenezAC_OUTPUT
55901e196c8SJohn Marinocat <<EOF
56001e196c8SJohn Marino
56101e196c8SJohn MarinoYou can now run
56201e196c8SJohn Marino
56301e196c8SJohn Marino	sh ./make-bootstrap.sh
56401e196c8SJohn Marino
56501e196c8SJohn Marinoto produce a fully functional bmake.
56601e196c8SJohn Marino
56701e196c8SJohn MarinoEOF
568