3 dnl $Id: configure.in,v 1.63 2020/04/19 05:17:57 sjg Exp $
5 dnl Process this file with autoconf to produce a configure script
8 AC_INIT([bmake], [20200418], [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 dissable use of generated makefile],
43 yes|no) use_makefile=${withval};;
44 *) AC_MSG_ERROR(bad value ${withval} given for makefile) ;;
49 [ --without-meta dissable 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) ;;
66 NetBSD) filemon_h=no use_filemon=ktrace;;
68 for d in "/usr/include/dev/filemon" "$prefix/include/dev/filemon" "$srcdir/../../sys/dev/filemon"
72 filemon_h="$d$x/filemon.h"
73 test -s "$filemon_h" && break
75 test -s "$filemon_h" && { use_filemon=dev; break; }
79 use_filemon=${use_filemon:-no}
80 case "$use_filemon" in
85 dnl echo "Note: use_meta=$use_meta use_filemon=$use_filemon filemon_h=$filemon_h" >&6
88 case "$use_filemon" in
90 *) echo "Using: filemon_${use_filemon}.c" >&6;;
95 dnl Check for OS problems
96 dnl Solaris's signal.h only privides sigset_t etc if one of
97 dnl _EXTENSIONS_ _POSIX_C_SOURCE or _XOPEN_SOURCE are defined.
98 dnl The later two seem to cause more problems than they solve so if we
99 dnl see _EXTENSIONS_ we use it.
100 AC_USE_SYSTEM_EXTENSIONS
101 dnl Checks for programs.
103 AC_PROG_GCC_TRADITIONAL
105 dnl Executable suffix - normally empty; .exe on os2.
106 AC_SUBST(ac_exe_suffix)dnl
108 dnl Hurd refuses to define PATH_MAX or MAXPATHLEN
109 if test -x /usr/bin/getconf; then
110 bmake_path_max=`getconf PATH_MAX / 2> /dev/null`
111 # only a numeric response is useful
112 test ${bmake_path_max:-0} -gt 0 2> /dev/null || bmake_path_max=
114 bmake_path_max=${bmake_path_max:-1024}
115 if test $bmake_path_max -gt 1024; then
116 # this is all we expect
119 echo "Using: BMAKE_PATH_MAX=$bmake_path_max" >&6
120 AC_SUBST(bmake_path_max)dnl
125 dnl Checks for header files.
129 dnl Keep this list sorted
130 AC_CHECK_HEADERS(sys/param.h)
131 dnl On BSDi at least we really need sys/param.h for sys/sysctl.h
132 AC_CHECK_HEADERS([sys/sysctl.h], [], [],
133 [#ifdef HAVE_SYS_PARAM_H
134 # include <sys/param.h>
157 dnl Both *BSD and Linux have sys/cdefs.h, most do not.
158 dnl If it is missing, we add -I${srcdir}/missing to CFLAGS
159 dnl also if sys/cdefs.h does not have __RCSID we need to use ours
160 dnl but we need to include the host's one too *sigh*
161 AC_CHECK_HEADER(sys/cdefs.h,
162 echo $ECHO_N "checking whether sys/cdefs.h is compatible... $ECHO_C" >&6
164 [#include <sys/cdefs.h>
170 echo no >&6; CPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd` -DNEED_HOST_CDEFS_H"),
171 CPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd`")
173 dnl Checks for typedefs, structures, and compiler characteristics.
186 dnl Checks for library functions.
191 dnl Keep this list sorted
224 dnl functions which we may need to provide
232 AC_CHECK_LIB([util], [emalloc],
233 [ AC_CHECK_LIB([util], [erealloc],
234 [ AC_CHECK_LIB([util], [estrdup],
235 [ AC_CHECK_LIB([util], [estrndup],
236 [ LIBS="$LIBS -lutil"
237 CPPFLAGS="$CPPFLAGS -DUSE_EMALLOC" ])])])])
245 echo "checking if compiler supports __func__" >&6
247 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[[const char *func = __func__;]])],,
248 AC_DEFINE(__func__, __FUNCTION__, C99 function name))
250 dnl we want this for unit-tests/Makefile
251 echo $ECHO_N "checking if diff -u works... $ECHO_C" >&6
252 if diff -u /dev/null /dev/null > /dev/null 2>&1; then
260 dnl AC_* don't quite cut it.
262 echo "checking for MACHINE & MACHINE_ARCH..." >&6
263 cat > conftest.$ac_ext <<EOF
264 #include "confdefs.h"
265 #include <sys/param.h>
270 machine_arch=MACHINE_ARCH
274 default_machine=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
275 egrep machine= | tr -d ' "'`
277 if test "$default_machine"; then
278 eval "$default_machine"
280 machine=${machine:-`$srcdir/machine.sh`}
281 machine_arch=${machine_arch:-`$srcdir/machine.sh arch`}
282 echo "defaults: MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6
284 dnl now allow overrides
287 [ --with-machine=MACHINE explicitly set MACHINE],
288 [case "${withval}" in
289 yes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE) ;;
291 generic) machine=`$srcdir/machine.sh`;;
292 *) machine=$with_machine;;
295 AC_ARG_WITH(force_machine,
296 [ --with-force-machine=MACHINE set FORCE_MACHINE],
297 [case "${withval}" in
298 yes) force_machine=FORCE_;;
300 *) force_machine=FORCE_; machine=$with_force_machine;;
304 AC_ARG_WITH(force_machine_arch,
305 [ --with-force-machine-arch=MACHINE set FORCE_MACHINE_ARCH],
306 [case "${withval}" in
307 yes) force_machine_arch=FORCE_;;
309 *) force_machine_arch=FORCE_; machine_arch=$with_force_machine;;
312 AC_ARG_WITH(machine_arch,
313 [ --with-machine_arch=MACHINE_ARCH explicitly set MACHINE_ARCH],
314 [case "${withval}" in
315 yes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE_ARCH) ;;
317 *) machine_arch=$with_machine_arch;;
320 dnl Tell them what we ended up with
322 echo "Using: ${force_machine}MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6
324 dnl Allow folk to control _PATH_DEFSYSPATH
326 default_sys_path=\${prefix}/share/mk
327 AC_ARG_WITH(default-sys-path,
328 [ --with-default-sys-path=PATH:DIR:LIST use an explicit _PATH_DEFSYSPATH
329 MAKESYSPATH is a ':' separated list of directories
330 that bmake will search for system .mk files.
331 _PATH_DEFSYSPATH is its default value.],
332 [case "${withval}" in
333 yes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_DEFSYSPATH) ;;
335 *) default_sys_path="$with_default_sys_path"
339 dnl Some folk don't like this one
341 AC_ARG_WITH(path-objdirprefix,
342 [ --with-path-objdirprefix=PATH override _PATH_OBJDIRPREFIX],
343 [case "${withval}" in
344 yes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_OBJDIRPREFIX) ;;
345 no) CPPFLAGS="$CPPFLAGS -DNO_PATH_OBJDIRPREFIX" ;;
346 *) CPPFLAGS="$CPPFLAGS \"-D_PATH_OBJDIRPREFIX=\\\"$with_path-objdir\\\"\"" ;;
349 dnl And this can be handy to do with out.
351 AC_ARG_ENABLE(pwd-override,
352 [ --disable-pwd-override disable \$PWD overriding getcwd()],
353 [case "${enableval}" in
355 no) CPPFLAGS="$CPPFLAGS -DNO_PWD_OVERRIDE" ;;
356 *) AC_MSG_ERROR(bad value ${enableval} given for pwd-override option) ;;
361 AC_ARG_ENABLE(check-make-chdir,
362 [ --disable-check-make-chdir disable make trying to guess
363 when it should automatically cd \${.CURDIR}],
364 [case "${enableval}" in
366 no) CPPFLAGS="$CPPFLAGS -DNO_CHECK_MAKE_CHDIR" ;;
367 *) AC_MSG_ERROR(bad value ${enableval} given for check-make-chdir option) ;;
370 dnl On non-BSD systems, bootstrap won't work without mk
373 [ --with-mksrc=PATH tell makefile.boot where to find mk src],
374 [case "${withval}" in
376 *) test -s $withval/install-mk && mksrc=$withval ||
377 AC_MSG_ERROR(bad value ${withval} given for mksrc cannot find install-mk)
382 dnl Now make sure we have a value
384 srcdir=`cd $srcdir && pwd`
385 for mksrc in $mksrc $srcdir/mk $srcdir/../mk mk
387 test -s $mksrc/install-mk || continue
388 mksrc=`cd $mksrc && pwd`
391 mksrc=`echo $mksrc | sed "s,$srcdir,\\\${srcdir},"`
392 echo "Using: MKSRC=$mksrc" 1>&6
393 dnl On some systems we want a different default shell by default
394 if test -x /usr/xpg4/bin/sh; then
395 defshell_path=${defshell_path:-/usr/xpg4/bin/sh}
397 if test -n "$defshell_path"; then
398 echo "Using: SHELL=$defshell_path" >&6
399 AC_DEFINE_UNQUOTED(DEFSHELL_CUSTOM, "$defshell_path", Path of default shell)
401 if test -n "$DEFSHELL_INDEX"; then
402 AC_DEFINE_UNQUOTED(DEFSHELL_INDEX, $DEFSHELL_INDEX, Shell spec to use by default)
406 AC_SUBST(force_machine)
407 AC_SUBST(machine_arch)
409 AC_SUBST(default_sys_path)
414 AC_SUBST(use_filemon)
416 AC_SUBST(_MAKE_VERSION)
417 bm_outfiles="Makefile.config unit-tests/Makefile.config make-bootstrap.sh"
418 if test $use_makefile = yes; then
419 bm_outfiles="makefile $bm_outfiles"
421 AC_OUTPUT($bm_outfiles)
426 sh ./make-bootstrap.sh
428 to produce a fully functional bmake.