3 dnl $Id: configure.in,v 1.66 2020/07/10 16:34:38 sjg Exp $
5 dnl Process this file with autoconf to produce a configure script
8 AC_INIT([bmake], [20200710], [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) ;;
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.
134 dnl Keep this list sorted
135 AC_CHECK_HEADERS(sys/param.h)
136 dnl On BSDi at least we really need sys/param.h for sys/sysctl.h
137 AC_CHECK_HEADERS([sys/sysctl.h], [], [],
138 [#ifdef HAVE_SYS_PARAM_H
139 # include <sys/param.h>
160 dnl Both *BSD and Linux have sys/cdefs.h, most do not.
161 dnl If it is missing, we add -I${srcdir}/missing to CFLAGS
162 dnl also if sys/cdefs.h does not have __RCSID we need to use ours
163 dnl but we need to include the host's one too *sigh*
164 AC_CHECK_HEADER(sys/cdefs.h,
165 echo $ECHO_N "checking whether sys/cdefs.h is compatible... $ECHO_C" >&6
167 [#include <sys/cdefs.h>
173 echo no >&6; CPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd` -DNEED_HOST_CDEFS_H"),
174 CPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd`")
176 dnl Checks for typedefs, structures, and compiler characteristics.
189 dnl Checks for library functions.
194 dnl Keep this list sorted
227 dnl functions which we may need to provide
235 AC_CHECK_LIB([util], [emalloc],
236 [ AC_CHECK_LIB([util], [erealloc],
237 [ AC_CHECK_LIB([util], [estrdup],
238 [ AC_CHECK_LIB([util], [estrndup],
239 [ LIBS="$LIBS -lutil"
240 CPPFLAGS="$CPPFLAGS -DUSE_EMALLOC" ])])])])
248 echo "checking if compiler supports __func__" >&6
250 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[[const char *func = __func__;]])],,
251 AC_DEFINE(__func__, __FUNCTION__, C99 function name))
253 dnl we want this for unit-tests/Makefile
254 echo $ECHO_N "checking if diff -u works... $ECHO_C" >&6
255 if diff -u /dev/null /dev/null > /dev/null 2>&1; then
263 dnl AC_* don't quite cut it.
265 echo "checking for MACHINE & MACHINE_ARCH..." >&6
266 cat > conftest.$ac_ext <<EOF
267 #include "confdefs.h"
268 #include <sys/param.h>
273 machine_arch=MACHINE_ARCH
277 default_machine=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
278 egrep machine= | tr -d ' "'`
280 if test "$default_machine"; then
281 eval "$default_machine"
283 machine=${machine:-`$srcdir/machine.sh`}
284 machine_arch=${machine_arch:-`$srcdir/machine.sh arch`}
285 echo "defaults: MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6
287 dnl now allow overrides
290 [ --with-machine=MACHINE explicitly set MACHINE],
291 [case "${withval}" in
292 yes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE) ;;
294 generic) machine=`$srcdir/machine.sh`;;
295 *) machine=$with_machine;;
298 AC_ARG_WITH(force_machine,
299 [ --with-force-machine=MACHINE set FORCE_MACHINE],
300 [case "${withval}" in
301 yes) force_machine=FORCE_;;
303 *) force_machine=FORCE_; machine=$with_force_machine;;
307 AC_ARG_WITH(force_machine_arch,
308 [ --with-force-machine-arch=MACHINE set FORCE_MACHINE_ARCH],
309 [case "${withval}" in
310 yes) force_machine_arch=FORCE_;;
312 *) force_machine_arch=FORCE_; machine_arch=$with_force_machine;;
315 AC_ARG_WITH(machine_arch,
316 [ --with-machine_arch=MACHINE_ARCH explicitly set MACHINE_ARCH],
317 [case "${withval}" in
318 yes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE_ARCH) ;;
320 *) machine_arch=$with_machine_arch;;
323 dnl Tell them what we ended up with
325 echo "Using: ${force_machine}MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6
327 dnl Allow folk to control _PATH_DEFSYSPATH
329 default_sys_path=\${prefix}/share/mk
330 AC_ARG_WITH(default-sys-path,
331 [ --with-default-sys-path=PATH:DIR:LIST use an explicit _PATH_DEFSYSPATH
332 MAKESYSPATH is a ':' separated list of directories
333 that bmake will search for system .mk files.
334 _PATH_DEFSYSPATH is its default value.],
335 [case "${withval}" in
336 yes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_DEFSYSPATH) ;;
338 *) default_sys_path="$with_default_sys_path"
342 dnl Some folk don't like this one
344 AC_ARG_WITH(path-objdirprefix,
345 [ --with-path-objdirprefix=PATH override _PATH_OBJDIRPREFIX],
346 [case "${withval}" in
347 yes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_OBJDIRPREFIX) ;;
348 no) CPPFLAGS="$CPPFLAGS -DNO_PATH_OBJDIRPREFIX" ;;
349 *) CPPFLAGS="$CPPFLAGS \"-D_PATH_OBJDIRPREFIX=\\\"$with_path-objdir\\\"\"" ;;
352 dnl And this can be handy to do with out.
354 AC_ARG_ENABLE(pwd-override,
355 [ --disable-pwd-override disable \$PWD overriding getcwd()],
356 [case "${enableval}" in
358 no) CPPFLAGS="$CPPFLAGS -DNO_PWD_OVERRIDE" ;;
359 *) AC_MSG_ERROR(bad value ${enableval} given for pwd-override option) ;;
364 AC_ARG_ENABLE(check-make-chdir,
365 [ --disable-check-make-chdir disable make trying to guess
366 when it should automatically cd \${.CURDIR}],
367 [case "${enableval}" in
369 no) CPPFLAGS="$CPPFLAGS -DNO_CHECK_MAKE_CHDIR" ;;
370 *) AC_MSG_ERROR(bad value ${enableval} given for check-make-chdir option) ;;
373 dnl On non-BSD systems, bootstrap won't work without mk
376 [ --with-mksrc=PATH tell makefile.boot where to find mk src],
377 [case "${withval}" in
379 *) test -s $withval/install-mk && mksrc=$withval ||
380 AC_MSG_ERROR(bad value ${withval} given for mksrc cannot find install-mk)
385 dnl Now make sure we have a value
387 srcdir=`cd $srcdir && pwd`
388 for mksrc in $mksrc $srcdir/mk $srcdir/../mk mk
390 test -s $mksrc/install-mk || continue
391 mksrc=`cd $mksrc && pwd`
394 mksrc=`echo $mksrc | sed "s,$srcdir,\\\${srcdir},"`
395 echo "Using: MKSRC=$mksrc" 1>&6
396 dnl On some systems we want a different default shell by default
397 if test -x /usr/xpg4/bin/sh; then
398 defshell_path=${defshell_path:-/usr/xpg4/bin/sh}
400 if test -n "$defshell_path"; then
401 echo "Using: SHELL=$defshell_path" >&6
402 AC_DEFINE_UNQUOTED(DEFSHELL_CUSTOM, "$defshell_path", Path of default shell)
404 if test -n "$DEFSHELL_INDEX"; then
405 AC_DEFINE_UNQUOTED(DEFSHELL_INDEX, $DEFSHELL_INDEX, Shell spec to use by default)
409 AC_SUBST(force_machine)
410 AC_SUBST(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.