3 dnl $Id: configure.in,v 1.59 2017/11/26 22:39:20 sjg Exp $
5 dnl Process this file with autoconf to produce a configure script
8 AC_INIT([bmake], [20171126], [sjg@NetBSD.org])
9 AC_CONFIG_HEADERS(config.h)
11 dnl make srcdir absolute
14 *) srcdir=`cd $srcdir && pwd`;;
22 [ --with-defshell=SHELL use SHELL by default - must be sh compatible, use sh or ksh to pick the internal definitions],
24 yes) AC_MSG_ERROR(bad value ${withval} given for bmake DEFSHELL) ;;
26 *) case "$with_defshell" in
27 sh) DEFSHELL_INDEX=DEFSHELL_INDEX_SH;; # it's the default anyway
28 ksh) DEFSHELL_INDEX=DEFSHELL_INDEX_KSH;;
29 csh) DEFSHELL_INDEX=DEFSHELL_INDEX_CSH;; # kidding right?
30 *) defshell_path=$with_defshell;; # better be sh compatible!
37 [ --without-meta dissable use of meta-mode],
39 yes|no) use_meta=${withval};;
40 *) AC_MSG_ERROR(bad value ${withval} given for meta) ;;
44 [ --with-filemon=path/filemon.h indicate path to filemon.h for meta-mode],
45 [ case "/${withval}" in
46 /no|*/filemon.h) filemon_h="${withval}";;
47 */filemon*) filemon_h="${withval}/filemon.h";;
48 *) AC_MSG_ERROR(bad value ${withval} given for filemon) ;;
52 for d in "/usr/include/dev/filemon" "$prefix/include/dev/filemon" "$srcdir/filemon" "$srcdir/../filemon" "$srcdir/../../sys/dev/filemon"
56 filemon_h="$d$x/filemon.h"
57 test -s "$filemon_h" && break
59 test -s "$filemon_h" && break
61 test -s "${filemon_h:-/dev/null}" || filemon_h=no
63 dnl echo "Note: use_meta=$use_meta filemon_h=$filemon_h" >&6
67 *.h) echo "Using: filemon=$filemon_h" >&6;;
72 dnl Check for OS problems
73 dnl Solaris's signal.h only privides sigset_t etc if one of
74 dnl _EXTENSIONS_ _POSIX_C_SOURCE or _XOPEN_SOURCE are defined.
75 dnl The later two seem to cause more problems than they solve so if we
76 dnl see _EXTENSIONS_ we use it.
77 AC_USE_SYSTEM_EXTENSIONS
78 dnl Checks for programs.
80 AC_PROG_GCC_TRADITIONAL
82 dnl Executable suffix - normally empty; .exe on os2.
83 AC_SUBST(ac_exe_suffix)dnl
85 dnl Hurd refuses to define PATH_MAX or MAXPATHLEN
86 if test -x /usr/bin/getconf; then
87 bmake_path_max=`getconf PATH_MAX / 2> /dev/null`
88 # only a numeric response is useful
89 test ${bmake_path_max:-0} -gt 0 2> /dev/null || bmake_path_max=
91 bmake_path_max=${bmake_path_max:-1024}
92 if test $bmake_path_max -gt 1024; then
93 # this is all we expect
96 echo "Using: BMAKE_PATH_MAX=$bmake_path_max" >&6
97 AC_SUBST(bmake_path_max)dnl
102 dnl Checks for header files.
106 dnl Keep this list sorted
107 AC_CHECK_HEADERS(sys/param.h)
108 dnl On BSDi at least we really need sys/param.h for sys/sysctl.h
109 AC_CHECK_HEADERS([sys/sysctl.h], [], [],
110 [#ifdef HAVE_SYS_PARAM_H
111 # include <sys/param.h>
134 dnl Both *BSD and Linux have sys/cdefs.h, most do not.
135 dnl If it is missing, we add -I${srcdir}/missing to CFLAGS
136 dnl also if sys/cdefs.h does not have __RCSID we need to use ours
137 dnl but we need to include the host's one too *sigh*
138 AC_CHECK_HEADER(sys/cdefs.h,
139 echo $ECHO_N "checking whether sys/cdefs.h is compatible... $ECHO_C" >&6
141 [#include <sys/cdefs.h>
147 echo no >&6; CPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd` -DNEED_HOST_CDEFS_H"),
148 CPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd`")
150 dnl Checks for typedefs, structures, and compiler characteristics.
163 dnl Checks for library functions.
168 dnl Keep this list sorted
201 dnl functions which we may need to provide
209 AC_CHECK_LIB([util], [emalloc],
210 [ AC_CHECK_LIB([util], [erealloc],
211 [ AC_CHECK_LIB([util], [estrdup],
212 [ AC_CHECK_LIB([util], [estrndup],
213 [ LIBS="$LIBS -lutil"
214 CPPFLAGS="$CPPFLAGS -DUSE_EMALLOC" ])])])])
222 echo "checking if compiler supports __func__" >&6
224 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[[const char *func = __func__;]])],,
225 AC_DEFINE(__func__, __FUNCTION__, C99 function name))
227 dnl we want this for unit-tests/Makefile
228 echo $ECHO_N "checking if diff -u works... $ECHO_C" >&6
229 if diff -u /dev/null /dev/null > /dev/null 2>&1; then
237 dnl AC_* don't quite cut it.
239 echo "checking for MACHINE & MACHINE_ARCH..." >&6
240 cat > conftest.$ac_ext <<EOF
241 #include "confdefs.h"
242 #include <sys/param.h>
247 machine_arch=MACHINE_ARCH
251 default_machine=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
252 egrep machine= | tr -d ' "'`
254 if test "$default_machine"; then
255 eval "$default_machine"
257 machine=${machine:-`$srcdir/machine.sh`}
258 machine_arch=${machine_arch:-`$srcdir/machine.sh arch`}
259 echo "defaults: MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6
261 dnl now allow overrides
264 [ --with-machine=MACHINE explicitly set MACHINE],
265 [case "${withval}" in
266 yes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE) ;;
268 generic) machine=`$srcdir/machine.sh`;;
269 *) machine=$with_machine;;
272 AC_ARG_WITH(force_machine,
273 [ --with-force-machine=MACHINE set FORCE_MACHINE],
274 [case "${withval}" in
275 yes) force_machine=FORCE_;;
277 *) force_machine=FORCE_; machine=$with_force_machine;;
281 AC_ARG_WITH(force_machine_arch,
282 [ --with-force-machine-arch=MACHINE set FORCE_MACHINE_ARCH],
283 [case "${withval}" in
284 yes) force_machine_arch=FORCE_;;
286 *) force_machine_arch=FORCE_; machine_arch=$with_force_machine;;
289 AC_ARG_WITH(machine_arch,
290 [ --with-machine_arch=MACHINE_ARCH explicitly set MACHINE_ARCH],
291 [case "${withval}" in
292 yes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE_ARCH) ;;
294 *) machine_arch=$with_machine_arch;;
297 dnl Tell them what we ended up with
299 echo "Using: ${force_machine}MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6
301 dnl Allow folk to control _PATH_DEFSYSPATH
303 default_sys_path=\${prefix}/share/mk
304 AC_ARG_WITH(default-sys-path,
305 [ --with-default-sys-path=PATH:DIR:LIST use an explicit _PATH_DEFSYSPATH
306 MAKESYSPATH is a ':' separated list of directories
307 that bmake will search for system .mk files.
308 _PATH_DEFSYSPATH is its default value.],
309 [case "${withval}" in
310 yes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_DEFSYSPATH) ;;
312 *) default_sys_path="$with_default_sys_path"
316 dnl Some folk don't like this one
318 AC_ARG_WITH(path-objdirprefix,
319 [ --with-path-objdirprefix=PATH override _PATH_OBJDIRPREFIX],
320 [case "${withval}" in
321 yes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_OBJDIRPREFIX) ;;
322 no) CPPFLAGS="$CPPFLAGS -DNO_PATH_OBJDIRPREFIX" ;;
323 *) CPPFLAGS="$CPPFLAGS \"-D_PATH_OBJDIRPREFIX=\\\"$with_path-objdir\\\"\"" ;;
326 dnl And this can be handy to do with out.
328 AC_ARG_ENABLE(pwd-override,
329 [ --disable-pwd-override disable \$PWD overriding getcwd()],
330 [case "${enableval}" in
332 no) CPPFLAGS="$CPPFLAGS -DNO_PWD_OVERRIDE" ;;
333 *) AC_MSG_ERROR(bad value ${enableval} given for pwd-override option) ;;
338 AC_ARG_ENABLE(check-make-chdir,
339 [ --disable-check-make-chdir disable make trying to guess
340 when it should automatically cd \${.CURDIR}],
341 [case "${enableval}" in
343 no) CPPFLAGS="$CPPFLAGS -DNO_CHECK_MAKE_CHDIR" ;;
344 *) AC_MSG_ERROR(bad value ${enableval} given for check-make-chdir option) ;;
347 dnl On non-BSD systems, bootstrap won't work without mk
350 [ --with-mksrc=PATH tell makefile.boot where to find mk src],
351 [case "${withval}" in
353 *) test -s $withval/install-mk && mksrc=$withval ||
354 AC_MSG_ERROR(bad value ${withval} given for mksrc cannot find install-mk)
359 dnl Now make sure we have a value
361 srcdir=`cd $srcdir && pwd`
362 for mksrc in $mksrc $srcdir/mk $srcdir/../mk mk
364 test -s $mksrc/install-mk || continue
365 mksrc=`cd $mksrc && pwd`
368 mksrc=`echo $mksrc | sed "s,$srcdir,\\\${srcdir},"`
369 echo "Using: MKSRC=$mksrc" 1>&6
370 dnl On some systems we want a different default shell by default
371 if test -x /usr/xpg4/bin/sh; then
372 defshell_path=${defshell_path:-/usr/xpg4/bin/sh}
374 if test -n "$defshell_path"; then
375 echo "Using: SHELL=$defshell_path" >&6
376 AC_DEFINE_UNQUOTED(DEFSHELL_CUSTOM, "$defshell_path", Path of default shell)
378 if test -n "$DEFSHELL_INDEX"; then
379 AC_DEFINE_UNQUOTED(DEFSHELL_INDEX, $DEFSHELL_INDEX, Shell spec to use by default)
383 AC_SUBST(force_machine)
384 AC_SUBST(machine_arch)
386 AC_SUBST(default_sys_path)
392 AC_SUBST(_MAKE_VERSION)
393 AC_OUTPUT(makefile Makefile.config make-bootstrap.sh unit-tests/Makefile)
399 sh ./make-bootstrap.sh
401 to produce a fully functional bmake.