3 dnl $Id: configure.in,v 1.69 2020/11/14 07:40:43 sjg Exp $
5 dnl Process this file with autoconf to produce a configure script
8 AC_INIT([bmake], [20201112], [sjg@NetBSD.org])
9 AC_CONFIG_HEADERS(config.h)
11 dnl make srcdir absolute
14 *) srcdir=`cd $srcdir && pwd`;;
23 [ --with-defshell=SHELL use SHELL by default - must be sh compatible, use sh or ksh to pick the internal definitions],
25 yes) AC_MSG_ERROR(bad value ${withval} given for bmake DEFSHELL) ;;
27 *) case "$with_defshell" in
28 sh) DEFSHELL_INDEX=DEFSHELL_INDEX_SH;; # it's the default anyway
29 ksh) DEFSHELL_INDEX=DEFSHELL_INDEX_KSH;;
30 csh) DEFSHELL_INDEX=DEFSHELL_INDEX_CSH;; # kidding right?
31 *) defshell_path=$with_defshell;; # better be sh compatible!
37 CYGWIN*|MINGW*) use_makefile=no;;
41 [ --without-makefile disable use of generated makefile],
43 yes|no) use_makefile=${withval};;
44 *) AC_MSG_ERROR(bad value ${withval} given for makefile) ;;
49 [ --without-meta disable use of meta-mode],
51 yes|no) use_meta=${withval};;
52 *) AC_MSG_ERROR(bad value ${withval} given for meta) ;;
56 [ --with-filemon={no,dev,ktrace,path/filemon.h} indicate filemon method for meta-mode. Path to filemon.h implies dev],
57 [ case "/${withval}" in
59 /*trace) filemon_h=no use_filemon="${withval}";;
60 */filemon.h) filemon_h="${withval}";;
61 */filemon*) filemon_h="${withval}/filemon.h";;
62 *) AC_MSG_ERROR(bad value ${withval} given for filemon) ;;
64 case "$use_filemon,$filemon_h" in
65 ,*.h) use_filemon=dev;;
70 NetBSD) filemon_h=no use_filemon=ktrace;;
72 for d in "/usr/include/dev/filemon" "$prefix/include/dev/filemon" "$srcdir/../../sys/dev/filemon"
76 filemon_h="$d$x/filemon.h"
77 test -s "$filemon_h" && break
79 test -s "$filemon_h" && { use_filemon=dev; break; }
83 use_filemon=${use_filemon:-no}
84 case "$use_filemon" in
89 dnl echo "Note: use_meta=$use_meta use_filemon=$use_filemon filemon_h=$filemon_h" >&6
92 case "$use_filemon" in
94 *) echo "Using: filemon_${use_filemon}.c" >&6;;
99 dnl Check for OS problems
100 dnl Solaris's signal.h only privides sigset_t etc if one of
101 dnl _EXTENSIONS_ _POSIX_C_SOURCE or _XOPEN_SOURCE are defined.
102 dnl The later two seem to cause more problems than they solve so if we
103 dnl see _EXTENSIONS_ we use it.
104 AC_USE_SYSTEM_EXTENSIONS
105 dnl Checks for programs.
108 dnl AC_PROG_GCC_TRADITIONAL
110 dnl Executable suffix - normally empty; .exe on os2.
111 AC_SUBST(ac_exe_suffix)dnl
113 dnl Hurd refuses to define PATH_MAX or MAXPATHLEN
114 if test -x /usr/bin/getconf; then
115 bmake_path_max=`getconf PATH_MAX / 2> /dev/null`
116 # only a numeric response is useful
117 test ${bmake_path_max:-0} -gt 0 2> /dev/null || bmake_path_max=
119 bmake_path_max=${bmake_path_max:-1024}
120 if test $bmake_path_max -gt 1024; then
121 # this is all we expect
124 echo "Using: BMAKE_PATH_MAX=$bmake_path_max" >&6
125 AC_SUBST(bmake_path_max)dnl
130 dnl Checks for header files.
133 dnl Keep this list sorted
134 AC_CHECK_HEADERS(sys/param.h)
135 dnl On BSDi at least we really need sys/param.h for sys/sysctl.h
136 AC_CHECK_HEADERS([sys/sysctl.h], [], [],
137 [#ifdef HAVE_SYS_PARAM_H
138 # include <sys/param.h>
159 dnl Both *BSD and Linux have sys/cdefs.h, most do not.
160 dnl If it is missing, we add -I${srcdir}/missing to CFLAGS
161 dnl also if sys/cdefs.h does not have __RCSID we need to use ours
162 dnl but we need to include the host's one too *sigh*
163 AC_CHECK_HEADER(sys/cdefs.h,
164 echo $ECHO_N "checking whether sys/cdefs.h is compatible... $ECHO_C" >&6
166 [#include <sys/cdefs.h>
172 echo no >&6; CPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd` -DNEED_HOST_CDEFS_H"),
173 CPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd`")
175 dnl Checks for typedefs, structures, and compiler characteristics.
188 dnl Checks for library functions.
193 dnl Keep this list sorted
226 dnl functions which we may need to provide
234 AC_CHECK_LIB([util], [emalloc],
235 [ AC_CHECK_LIB([util], [erealloc],
236 [ AC_CHECK_LIB([util], [estrdup],
237 [ AC_CHECK_LIB([util], [estrndup],
238 [ LIBS="$LIBS -lutil"
239 CPPFLAGS="$CPPFLAGS -DUSE_EMALLOC" ])])])])
247 echo "checking if compiler supports __func__" >&6
249 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[[const char *func = __func__;]])],,
250 AC_DEFINE(__func__, __FUNCTION__, C99 function name))
252 dnl we want this for unit-tests/Makefile
253 echo $ECHO_N "checking if diff -u works... $ECHO_C" >&6
254 if diff -u /dev/null /dev/null > /dev/null 2>&1; then
262 dnl AC_* don't quite cut it.
264 echo "checking for MACHINE & MACHINE_ARCH..." >&6
265 cat > conftest.$ac_ext <<EOF
266 #include "confdefs.h"
267 #include <sys/param.h>
272 machine_arch=MACHINE_ARCH
276 default_machine=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
277 egrep machine= | tr -d ' "'`
279 if test "$default_machine"; then
280 eval "$default_machine"
282 machine=${machine:-`$srcdir/machine.sh`}
283 machine_arch=${machine_arch:-`$srcdir/machine.sh arch`}
284 echo "defaults: MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6
286 dnl now allow overrides
289 [ --with-machine=MACHINE explicitly set MACHINE],
290 [case "${withval}" in
291 yes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE) ;;
293 generic) machine=`$srcdir/machine.sh`;;
294 *) machine=$with_machine;;
297 AC_ARG_WITH(force_machine,
298 [ --with-force-machine=MACHINE set FORCE_MACHINE],
299 [case "${withval}" in
300 yes) force_machine=FORCE_;;
302 *) force_machine=FORCE_; machine=$with_force_machine;;
306 AC_ARG_WITH(force_machine_arch,
307 [ --with-force-machine-arch=MACHINE set FORCE_MACHINE_ARCH],
308 [case "${withval}" in
309 yes) force_machine_arch=FORCE_;;
311 *) force_machine_arch=FORCE_; machine_arch=$with_force_machine_arch;;
314 AC_ARG_WITH(machine_arch,
315 [ --with-machine_arch=MACHINE_ARCH explicitly set MACHINE_ARCH],
316 [case "${withval}" in
317 yes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE_ARCH) ;;
319 *) machine_arch=$with_machine_arch;;
322 dnl Tell them what we ended up with
324 echo "Using: ${force_machine}MACHINE=$machine, ${force_machine_arch}MACHINE_ARCH=$machine_arch" 1>&6
326 dnl Allow folk to control _PATH_DEFSYSPATH
328 default_sys_path=\${prefix}/share/mk
329 AC_ARG_WITH(default-sys-path,
330 [ --with-default-sys-path=PATH:DIR:LIST use an explicit _PATH_DEFSYSPATH
331 MAKESYSPATH is a ':' separated list of directories
332 that bmake will search for system .mk files.
333 _PATH_DEFSYSPATH is its default value.],
334 [case "${withval}" in
335 yes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_DEFSYSPATH) ;;
337 *) default_sys_path="$with_default_sys_path"
341 dnl Some folk don't like this one
343 AC_ARG_WITH(path-objdirprefix,
344 [ --with-path-objdirprefix=PATH override _PATH_OBJDIRPREFIX],
345 [case "${withval}" in
346 yes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_OBJDIRPREFIX) ;;
347 no) CPPFLAGS="$CPPFLAGS -DNO_PATH_OBJDIRPREFIX" ;;
348 *) CPPFLAGS="$CPPFLAGS \"-D_PATH_OBJDIRPREFIX=\\\"$with_path-objdir\\\"\"" ;;
351 dnl And this can be handy to do with out.
353 AC_ARG_ENABLE(pwd-override,
354 [ --disable-pwd-override disable $PWD overriding getcwd()],
355 [case "${enableval}" in
357 no) CPPFLAGS="$CPPFLAGS -DNO_PWD_OVERRIDE" ;;
358 *) AC_MSG_ERROR(bad value ${enableval} given for pwd-override option) ;;
363 AC_ARG_ENABLE(check-make-chdir,
364 [ --disable-check-make-chdir disable make trying to guess
365 when it should automatically cd ${.CURDIR}],
366 [case "${enableval}" in
368 no) CPPFLAGS="$CPPFLAGS -DNO_CHECK_MAKE_CHDIR" ;;
369 *) AC_MSG_ERROR(bad value ${enableval} given for check-make-chdir option) ;;
372 dnl On non-BSD systems, bootstrap won't work without mk
375 [ --with-mksrc=PATH tell makefile.boot where to find mk src],
376 [case "${withval}" in
378 *) test -s $withval/install-mk && mksrc=$withval ||
379 AC_MSG_ERROR(bad value ${withval} given for mksrc cannot find install-mk)
384 dnl Now make sure we have a value
386 srcdir=`cd $srcdir && pwd`
387 for mksrc in $mksrc $srcdir/mk $srcdir/../mk mk
389 test -s $mksrc/install-mk || continue
390 mksrc=`cd $mksrc && pwd`
393 mksrc=`echo $mksrc | sed "s,$srcdir,\\\${srcdir},"`
394 echo "Using: MKSRC=$mksrc" 1>&6
395 dnl On some systems we want a different default shell by default
396 if test -x /usr/xpg4/bin/sh; then
397 defshell_path=${defshell_path:-/usr/xpg4/bin/sh}
399 if test -n "$defshell_path"; then
400 echo "Using: SHELL=$defshell_path" >&6
401 AC_DEFINE_UNQUOTED(DEFSHELL_CUSTOM, "$defshell_path", Path of default shell)
403 if test -n "$DEFSHELL_INDEX"; then
404 AC_DEFINE_UNQUOTED(DEFSHELL_INDEX, $DEFSHELL_INDEX, Shell spec to use by default)
408 AC_SUBST(force_machine)
409 AC_SUBST(machine_arch)
410 AC_SUBST(force_machine_arch)
412 AC_SUBST(default_sys_path)
417 AC_SUBST(use_filemon)
419 AC_SUBST(_MAKE_VERSION)
420 bm_outfiles="Makefile.config unit-tests/Makefile.config make-bootstrap.sh"
421 if test $use_makefile = yes; then
422 bm_outfiles="makefile $bm_outfiles"
424 AC_OUTPUT($bm_outfiles)
429 sh ./make-bootstrap.sh
431 to produce a fully functional bmake.