3 dnl $Id: configure.in,v 1.56 2015/10/25 05:20:48 sjg Exp $
5 dnl Process this file with autoconf to produce a configure script
8 AC_INIT([bmake], [20151022], [sjg@NetBSD.org])
9 AC_CONFIG_HEADERS(config.h)
11 dnl make srcdir absolute
14 *) srcdir=`cd $srcdir && pwd`;;
19 [ --with-defshell=SHELL use SHELL by default - must be sh compatible, use sh or ksh to pick the internal definitions],
21 yes) AC_MSG_ERROR(bad value ${withval} given for bmake DEFSHELL) ;;
23 *) case "$with_defshell" in
24 sh) DEFSHELL_INDEX=DEFSHELL_INDEX_SH;; # it's the default anyway
25 ksh) DEFSHELL_INDEX=DEFSHELL_INDEX_KSH;;
26 csh) DEFSHELL_INDEX=DEFSHELL_INDEX_CSH;; # kidding right?
27 *) defshell_path=$with_defshell;; # better be sh compatible!
34 [ --without-meta dissable use of meta-mode],
36 yes|no) use_meta=${withval};;
37 *) AC_MSG_ERROR(bad value ${withval} given for meta) ;;
41 [ --with-filemon=path/filemon.h indicate path to filemon.h for meta-mode],
42 [ case "/${withval}" in
43 /no|*/filemon.h) filemon_h="${withval}";;
44 */filemon*) filemon_h="${withval}/filemon.h";;
45 *) AC_MSG_ERROR(bad value ${withval} given for filemon) ;;
49 for d in "/usr/include/dev/filemon" "$prefix/include/dev/filemon" "$srcdir/filemon" "$srcdir/../filemon" "$srcdir/../../sys/dev/filemon"
53 filemon_h="$d$x/filemon.h"
54 test -s "$filemon_h" && break
56 test -s "$filemon_h" && break
58 test -s "${filemon_h:-/dev/null}" || filemon_h=no
60 dnl echo "Note: use_meta=$use_meta filemon_h=$filemon_h" >&6
64 *.h) echo "Using: filemon=$filemon_h" >&6;;
69 dnl Check for OS problems
70 dnl Solaris's signal.h only privides sigset_t etc if one of
71 dnl _EXTENSIONS_ _POSIX_C_SOURCE or _XOPEN_SOURCE are defined.
72 dnl The later two seem to cause more problems than they solve so if we
73 dnl see _EXTENSIONS_ we use it.
74 AC_USE_SYSTEM_EXTENSIONS
75 dnl Checks for programs.
77 AC_PROG_GCC_TRADITIONAL
79 dnl Executable suffix - normally empty; .exe on os2.
80 AC_SUBST(ac_exe_suffix)dnl
82 dnl Hurd refuses to define PATH_MAX or MAXPATHLEN
83 if test -x /usr/bin/getconf; then
84 bmake_path_max=`getconf PATH_MAX / 2> /dev/null`
85 # only a numeric response is useful
86 test ${bmake_path_max:-0} -gt 0 2> /dev/null || bmake_path_max=
88 bmake_path_max=${bmake_path_max:-1024}
89 if test $bmake_path_max -gt 1024; then
90 # this is all we expect
93 echo "Using: BMAKE_PATH_MAX=$bmake_path_max" >&6
94 AC_SUBST(bmake_path_max)dnl
99 dnl Checks for header files.
103 dnl Keep this list sorted
104 AC_CHECK_HEADERS(sys/param.h)
105 dnl On BSDi at least we really need sys/param.h for sys/sysctl.h
106 AC_CHECK_HEADERS([sys/sysctl.h], [], [],
107 [#ifdef HAVE_SYS_PARAM_H
108 # include <sys/param.h>
131 dnl Both *BSD and Linux have sys/cdefs.h, most do not.
132 dnl If it is missing, we add -I${srcdir}/missing to CFLAGS
133 dnl also if sys/cdefs.h does not have __RCSID we need to use ours
134 dnl but we need to include the host's one too *sigh*
135 AC_CHECK_HEADER(sys/cdefs.h,
136 echo $ECHO_N "checking whether sys/cdefs.h is compatible... $ECHO_C" >&6
138 [#include <sys/cdefs.h>
144 echo no >&6; CPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd` -DNEED_HOST_CDEFS_H"),
145 CPPFLAGS="${CPPFLAGS} -I`cd ${srcdir}/missing && pwd`")
147 dnl Checks for typedefs, structures, and compiler characteristics.
159 dnl Checks for library functions.
164 dnl Keep this list sorted
197 dnl functions which we may need to provide
205 AC_CHECK_LIB([util], [emalloc],
206 [ AC_CHECK_LIB([util], [erealloc],
207 [ AC_CHECK_LIB([util], [estrdup],
208 [ AC_CHECK_LIB([util], [estrndup],
209 [ LIBS="$LIBS -lutil"
210 CPPFLAGS="$CPPFLAGS -DUSE_EMALLOC" ])])])])
218 echo "checking if compiler supports __func__" >&6
220 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[[const char *func = __func__;]])],,
221 AC_DEFINE(__func__, __FUNCTION__, C99 function name))
223 dnl we want this for unit-tests/Makefile
224 echo $ECHO_N "checking if diff -u works... $ECHO_C" >&6
225 if diff -u /dev/null /dev/null > /dev/null 2>&1; then
233 dnl AC_* don't quite cut it.
235 echo "checking for MACHINE & MACHINE_ARCH..." >&6
236 cat > conftest.$ac_ext <<EOF
237 #include "confdefs.h"
238 #include <sys/param.h>
243 machine_arch=MACHINE_ARCH
247 default_machine=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
248 egrep machine= | tr -d ' "'`
250 if test "$default_machine"; then
251 eval "$default_machine"
253 machine=${machine:-`$srcdir/machine.sh`}
254 machine_arch=${machine_arch:-`$srcdir/machine.sh arch`}
255 echo "defaults: MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6
257 dnl now allow overrides
260 [ --with-machine=MACHINE explicitly set MACHINE],
261 [case "${withval}" in
262 yes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE) ;;
264 generic) machine=`$srcdir/machine.sh`;;
265 *) machine=$with_machine;;
268 AC_ARG_WITH(force_machine,
269 [ --with-force-machine=MACHINE set FORCE_MACHINE],
270 [case "${withval}" in
271 yes) force_machine=FORCE_;;
273 *) force_machine=FORCE_; machine=$with_force_machine;;
277 AC_ARG_WITH(force_machine_arch,
278 [ --with-force-machine-arch=MACHINE set FORCE_MACHINE_ARCH],
279 [case "${withval}" in
280 yes) force_machine_arch=FORCE_;;
282 *) force_machine_arch=FORCE_; machine_arch=$with_force_machine;;
285 AC_ARG_WITH(machine_arch,
286 [ --with-machine_arch=MACHINE_ARCH explicitly set MACHINE_ARCH],
287 [case "${withval}" in
288 yes) AC_MSG_ERROR(bad value ${withval} given for bmake MACHINE_ARCH) ;;
290 *) machine_arch=$with_machine_arch;;
293 dnl Tell them what we ended up with
295 echo "Using: ${force_machine}MACHINE=$machine, MACHINE_ARCH=$machine_arch" 1>&6
297 dnl Allow folk to control _PATH_DEFSYSPATH
299 default_sys_path=\${prefix}/share/mk
300 AC_ARG_WITH(default-sys-path,
301 [ --with-default-sys-path=PATH:DIR:LIST use an explicit _PATH_DEFSYSPATH
302 MAKESYSPATH is a ':' separated list of directories
303 that bmake will search for system .mk files.
304 _PATH_DEFSYSPATH is its default value.],
305 [case "${withval}" in
306 yes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_DEFSYSPATH) ;;
308 *) default_sys_path="$with_default_sys_path"
312 dnl Some folk don't like this one
314 AC_ARG_WITH(path-objdirprefix,
315 [ --with-path-objdirprefix=PATH override _PATH_OBJDIRPREFIX],
316 [case "${withval}" in
317 yes) AC_MSG_ERROR(bad value ${withval} given for bmake _PATH_OBJDIRPREFIX) ;;
318 no) CPPFLAGS="$CPPFLAGS -DNO_PATH_OBJDIRPREFIX" ;;
319 *) CPPFLAGS="$CPPFLAGS \"-D_PATH_OBJDIRPREFIX=\\\"$with_path-objdir\\\"\"" ;;
322 dnl And this can be handy to do with out.
324 AC_ARG_ENABLE(pwd-override,
325 [ --disable-pwd-override disable \$PWD overriding getcwd()],
326 [case "${enableval}" in
328 no) CPPFLAGS="$CPPFLAGS -DNO_PWD_OVERRIDE" ;;
329 *) AC_MSG_ERROR(bad value ${enableval} given for pwd-override option) ;;
334 AC_ARG_ENABLE(check-make-chdir,
335 [ --disable-check-make-chdir disable make trying to guess
336 when it should automatically cd \${.CURDIR}],
337 [case "${enableval}" in
339 no) CPPFLAGS="$CPPFLAGS -DNO_CHECK_MAKE_CHDIR" ;;
340 *) AC_MSG_ERROR(bad value ${enableval} given for check-make-chdir option) ;;
343 dnl On non-BSD systems, bootstrap won't work without mk
346 [ --with-mksrc=PATH tell makefile.boot where to find mk src],
347 [case "${withval}" in
349 *) test -s $withval/install-mk && mksrc=$withval ||
350 AC_MSG_ERROR(bad value ${withval} given for mksrc cannot find install-mk)
355 dnl Now make sure we have a value
357 srcdir=`cd $srcdir && pwd`
358 for mksrc in $mksrc $srcdir/mk $srcdir/../mk mk
360 test -s $mksrc/install-mk || continue
361 mksrc=`cd $mksrc && pwd`
364 mksrc=`echo $mksrc | sed "s,$srcdir,\\\${srcdir},"`
365 echo "Using: MKSRC=$mksrc" 1>&6
366 dnl On some systems we want a different default shell by default
367 if test -x /usr/xpg4/bin/sh; then
368 defshell_path=${defshell_path:-/usr/xpg4/bin/sh}
370 if test -n "$defshell_path"; then
371 echo "Using: SHELL=$defshell_path" >&6
372 AC_DEFINE_UNQUOTED(DEFSHELL_CUSTOM, "$defshell_path", Path of default shell)
374 if test -n "$DEFSHELL_INDEX"; then
375 AC_DEFINE_UNQUOTED(DEFSHELL_INDEX, $DEFSHELL_INDEX, Shell spec to use by default)
379 AC_SUBST(force_machine)
380 AC_SUBST(machine_arch)
382 AC_SUBST(default_sys_path)
388 AC_OUTPUT(makefile Makefile.config make-bootstrap.sh unit-tests/Makefile)
394 sh ./make-bootstrap.sh
396 to produce a fully functional bmake.